Add a warning about CSV format.
[virt-tools.git] / tools / virt-ifconfig.pl
index 74346a6..4197153 100755 (executable)
@@ -83,8 +83,9 @@ my $csv;
 
 =item B<--csv>
 
-Write out the results in CSV format (comma-separated values).
-This format can be imported easily into databases and spreadsheets.
+Write out the results in CSV format (comma-separated values).  This
+format can be imported easily into databases and spreadsheets, but
+read L</NOTE ABOUT CSV FORMAT> below.
 
 =back
 
@@ -214,13 +215,37 @@ sub do_ifconfig
        }
     } else {
        print STDERR
-           __x("{n}: no IP address found (is guest running virt-tools?)\n",
+           __x("{n}: no IP address found (is it running virt-tools-guest?)\n",
                n => $args[0]);
     }
 }
 
 exit 0;
 
+=head1 NOTE ABOUT CSV FORMAT
+
+Comma-separated values (CSV) is a deceptive format.  It I<seems> like
+it should be easy to parse, but it is definitely not easy to parse.
+
+Myth: Just split fields at commas.  Reality: This does I<not> work
+reliably.  This example has two columns:
+
+ "foo,bar",baz
+
+Myth: Read the file one line at a time.  Reality: This does I<not>
+work reliably.  This example has one row:
+
+ "foo
+ bar",baz
+
+For shell scripts, use C<csvtool> (L<http://merjis.com/developers/csv>
+also packaged in major Linux distributions).
+
+For other languages, use a CSV processing library (eg. C<Text::CSV>
+for Perl or Python's built-in csv library).
+
+Most spreadsheets and databases can import CSV directly.
+
 =head1 SEE ALSO
 
 L<guestfs(3)>,