Thread: [q-lang-cvs] q-csv csv.c,1.12,1.13 csv.q,1.12,1.13
Brought to you by:
agraef
From: RER <ed...@us...> - 2008-01-23 16:05:08
|
Update of /cvsroot/q-lang/q-csv In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv18353 Modified Files: csv.c csv.q Log Message: Fixed a memory leak in csv.c and made dialects constant in csv.q Index: csv.c =================================================================== RCS file: /cvsroot/q-lang/q-csv/csv.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** csv.c 22 Jan 2008 16:45:16 -0000 1.12 --- csv.c 23 Jan 2008 16:05:04 -0000 1.13 *************** *** 17,21 **** $Id$ ! Written by Eddie Rucker 3-17 Jan, 2008 */ #include <stdio.h> --- 17,21 ---- $Id$ ! Written by Eddie Rucker 3-22 Jan, 2008 */ #include <stdio.h> *************** *** 328,335 **** FUNCTION (csv, tuple_to_csvstr, argc, argv) { ! int i, n, k, sz = 256, mrk, quote_cnt, delim_cnt, lineterm_cnt, ! len = 0, skipspace_f, n_escape, n_quote, n_delimiter, n_lineterm; ! char *s, *ts, *p, *sval, tb[48], errmsg[80], ! *escape, *quote, *delimiter, *lineterm; long ival, quoting; double dval; --- 328,335 ---- FUNCTION (csv, tuple_to_csvstr, argc, argv) { ! int i, n, k, sz = 256, mrk, quote_cnt, delim_cnt, lineterm_cnt, len = 0, ! skipspace_f, n_escape, n_quote, n_delimiter, n_lineterm; ! char *s, *ts, *p, *sval, tb[48], errmsg[80], *escape, *quote, *delimiter, ! *lineterm; long ival, quoting; double dval; *************** *** 438,444 **** len += n_lineterm; resize_str; ! strcpy(t, lineterm); ! if (!(t = strdup(s))) return __ERROR; return mkstr(t); } --- 438,446 ---- len += n_lineterm; resize_str; ! if (!(t = strdup(s))) { ! free(s); return __ERROR; + } + free(s); return mkstr(t); } Index: csv.q =================================================================== RCS file: /cvsroot/q-lang/q-csv/csv.q,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** csv.q 22 Jan 2008 16:45:16 -0000 1.12 --- csv.q 23 Jan 2008 16:05:04 -0000 1.13 *************** *** 84,100 **** = tuple $ vals $ foldl insert DEFAULTS $ Opts; ! /* Standard CSV format */ ! public rfc4180_dialect; ! rfc4180_dialect = csv_dialect []; ! ! public unix_dialect; ! unix_dialect = csv_dialect [csv_lineterminator,"\n";]; /* Convert a tuple (record) to a CSV string ! Dialect: CSV format specification. If none is given, defaults to ! rfc4180_dialect. Rec: Tuple of fields to be converted to CSV format. ! NOTE: REC must contain ONLY strings, integers, and floating point numbers. If a field is some other type, the 'csv_error MSG' rule is invoked. */ --- 84,98 ---- = tuple $ vals $ foldl insert DEFAULTS $ Opts; ! /* Some CSV formats */ ! public const var ! RFC4180 = csv_dialect [], ! UNIX = csv_dialect [csv_lineterminator,"\n";]; /* Convert a tuple (record) to a CSV string ! Dialect: CSV format specification. If none is given, defaults to the ! RFC4180 dialect. Rec: Tuple of fields to be converted to CSV format. ! NOTE: Rec must contain ONLY strings, integers, and floating point numbers. If a field is some other type, the 'csv_error MSG' rule is invoked. */ *************** *** 103,107 **** = tuple_to_csvstr Dialect Rec; swritecsv Rec:Tuple ! = tuple_to_csvstr rfc4180_dialect Rec; /* Convert a list of tuples to a list of CSV formated strings. */ --- 101,105 ---- = tuple_to_csvstr Dialect Rec; swritecsv Rec:Tuple ! = tuple_to_csvstr RFC4180 Rec; /* Convert a list of tuples to a list of CSV formated strings. */ *************** *** 110,118 **** = map (tuple_to_csvstr Dialect) L; swritecsvlist L:List ! = map (tuple_to_csvstr rfc4180_dialect) L; /* Convert a tuple (record) to a CSV string ! Dialect: CSV format specification. If none is given, defaults to ! rfc4180_dialect. Rec: Tuple of fields to be converted to CSV format. --- 108,116 ---- = map (tuple_to_csvstr Dialect) L; swritecsvlist L:List ! = map (tuple_to_csvstr RFC4180) L; /* Convert a tuple (record) to a CSV string ! Dialect: CSV format specification. If none is given, defaults to the ! RFC4180 dialect. Rec: Tuple of fields to be converted to CSV format. *************** *** 123,127 **** = csvstr_to_tuple Dialect Rec; sreadcsv Rec:Tuple ! = csvstr_to_tuple rfc4180_dialect Rec; /* Convert a list of CSV formated strings to a list of tuples */ --- 121,125 ---- = csvstr_to_tuple Dialect Rec; sreadcsv Rec:Tuple ! = csvstr_to_tuple RFC4180 Rec; /* Convert a list of CSV formated strings to a list of tuples */ *************** *** 130,134 **** = map (csvstr_to_tuple Dialect) L; sreadcsvlist L:List ! = map (csvstr_to_tuple rfc4180_dialect) L; /* File handling functions */ --- 128,132 ---- = map (csvstr_to_tuple Dialect) L; sreadcsvlist L:List ! = map (csvstr_to_tuple RFC4180) L; /* File handling functions */ *************** *** 137,141 **** = csvstr_to_tuple Dialect $ fread_csvstr F (Dialect!csv_quote); freadcsv F:File ! = csvstr_to_tuple rfc4180_dialect $ fread_csvstr F "\""; public fwritecsv ARGS REC; --- 135,139 ---- = csvstr_to_tuple Dialect $ fread_csvstr F (Dialect!csv_quote); freadcsv F:File ! = csvstr_to_tuple RFC4180 $ fread_csvstr F "\""; public fwritecsv ARGS REC; *************** *** 143,147 **** = fwrites F $ tuple_to_csvstr Dialect Rec; fwritecsv F:File Rec:Tuple ! = fwrites F $ tuple_to_csvstr rfc4180_dialect Rec; public freadcsvlist ARGS; --- 141,145 ---- = fwrites F $ tuple_to_csvstr Dialect Rec; fwritecsv F:File Rec:Tuple ! = fwrites F $ tuple_to_csvstr RFC4180 Rec; public freadcsvlist ARGS; |