virt-df: Add note about parsing CSV.
authorRichard Jones <rjones@trick.home.annexia.org>
Thu, 24 Sep 2009 10:22:17 +0000 (11:22 +0100)
committerRichard Jones <rjones@trick.home.annexia.org>
Thu, 24 Sep 2009 10:22:37 +0000 (11:22 +0100)
df/virt-df

index 21ba791..78eb25c 100755 (executable)
@@ -107,8 +107,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.
 
 =cut
 
@@ -309,6 +310,30 @@ sub human_size
     }
 }
 
+=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)>,