CSV(2) CSV(2)
NAME
csv - comma-separated values
SYNOPSIS
include "bufio.m";
include "csv.m";
csv := load CSV CSV->PATH;
init: fn(bufio: Bufio);
getline: fn(fd: ref Bufio->Iobuf): list of string;
quote: fn(s: string): string;
DESCRIPTION
CSV provides a few functions to help read and write data in
``comma-separated value'' format. The csv format has a
sequence of fields on a line (terminated by a newline, car-
riage return, or carriage return and newline). Fields are
separated by commas, and may be empty. A field that starts
with a double-quote is a quoted field, continuing to the
next lone double-quote character, including commas and line
terminators, but taking two double-quotes to represent one
double-quote. Any text following quoted text, up to the
next comma or line terminator, is included in the field
value. Note that in a field that does not start with a
double-quote, double-quotes are not treated specially.
Init must be called before any other operation of the mod-
ule. Bufio is the instance of the bufio(2) module that will
provide the open files to be read.
Getline reads a sequence of fields in csv format from Iobuf
fd, unquotes fields as required, and returns them in order
in a list. It returns nil on end-of-file (or read error).
An empty line is regarded as containing a single empty
field.
Quote returns string s quoted as required by the csv format:
the result is quoted if s contains comma, newline, or a
quote (and all embedded quotes are doubled).
SOURCE
/appl/lib/csv.b
SEE ALSO
sh-csv(1)
Page 1 Plan 9 (printed 11/13/25)