64 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
69 if(csv==NULL || csv->
nr<1) {
78 printf(
"%s():\n", __func__);
79 printf(
"regular := %d\n", regular);
80 printf(
"csv_nr := %d\n", csv->
nr);
81 printf(
"csv_row_nr := %d\n", csv->
row_nr);
82 printf(
"csv_col_nr := %d\n", csv->
col_nr);
83 if(csv->
separator==
'\t') printf(
"csv_separator := tab\n");
84 else if(csv->
separator==
' ') printf(
"csv_separator := space\n");
85 else printf(
"csv_separator := '%c'\n", csv->
separator);
90 for(
int ri=0; ri<csv->
row_nr; ri++) {
92 if(regular==0) {n=
csvRowLength(csv, ri);
if(n==0)
continue;}
93 for(
int ci=0; ci<n; ci++) {
94 if(ci>0) wn+=fprintf(fp,
"%c", csv->
separator);
95 char *cptr=
csvCell(csv, ri, ci);
96 if(cptr!=NULL) wn+=fprintf(fp,
"%s", cptr);
98 wn+=fprintf(fp,
"\n");
134 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
135 if(verbose>10) printf(
"%s()\n", __func__);
139 if(verbose>11) printf(
" ASCII size := %d\n", (
int)fsize);
158 if(verbose>20) printf(
" ASCII file read\n");
162 int tab_nr=0, sem_nr=0, com_nr=0, dot_nr=0, spa_nr=0;
163 char *cptr, *line, *lptr;
165 while((line=
strTokenDup(cptr,
"\n\r", &j))!=NULL) {
166 if(verbose>80) printf(
"line='%s'\n", line);
168 if(line[0]==
'#') {free(line); cptr+=j;
continue;}
177 free(line); cptr+=j; i++;
180 printf(
"dataline_nr := %d\n", i);
181 printf(
"semicolon_nr := %d\n", sem_nr);
182 printf(
"tabulator_nr := %d\n", tab_nr);
183 printf(
"dot_nr := %d\n", dot_nr);
184 printf(
"comma_nr := %d\n", com_nr);
185 printf(
"space_nr := %d\n", spa_nr);
187 if(sem_nr==0 && tab_nr==0 && dot_nr==0 && com_nr==0 && spa_nr==0) {
189 }
else if(sem_nr>0) {
192 }
else if(tab_nr>0) {
195 }
else if(spa_nr==0) {
203 }
else if(dot_nr>0) {
212 if(csv->
separator==
'\t') printf(
"field_separator := tab\n");
213 else if(csv->
separator==
' ') printf(
"field_separator := space\n");
214 else printf(
"field_separator := %c\n", csv->
separator);
218 cptr=data; i=0;
int ret;
219 while((line=
strTokenDup(cptr,
"\n\r", &j))!=NULL) {
221 if(line[0]==
'#') {free(line); cptr+=j;
continue;}
227 if(verbose>1 && ret!=0) fprintf(stderr,
"Warning: cannot read line %d: '%s'.\n", i, line);
229 free(line); cptr+=j; i++;
260 if(line==NULL || strlen(line)<1) {
264 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
265 if(verbose>10) printf(
"%s():\n", __func__);
266 if(verbose>12) printf(
"'%s'\n", line);
277 int ret, i, last_was_delim=0;
279 char *cptr=(
char*)line, *lptr, *s;
281 if(*cptr==delimiter) {
282 if(verbose>20) printf(
"first char is delimiter.\n");
284 statusSet(status, __func__, __FILE__, __LINE__, ret);
287 last_was_delim=1; cptr++; field_nr++;
290 int single_quotation=0;
291 int double_quotation=0;
293 while(*cptr && *lptr) {
294 if(verbose>20) printf(
"cptr='%s'\n", cptr);
300 if(single_quotation==0 && strchr(lptr+1,
'\'')!=NULL) single_quotation=1;
301 else single_quotation=0;
302 lptr++; i++;
continue;
305 if(double_quotation==0 && strchr(lptr+1,
'\"')!=NULL) double_quotation=1;
306 else double_quotation=0;
307 lptr++; i++;
continue;
309 if(single_quotation==1 || double_quotation==1) {lptr++; i++;
continue;}
311 if(*lptr==delimiter)
break;
316 if(verbose>20) printf(
" s='%s'\n", s);
318 statusSet(status, __func__, __FILE__, __LINE__, ret);
322 if(*lptr==delimiter) {
323 last_was_delim=1; cptr+=(i+1);
324 }
else {last_was_delim=0; cptr+=(i+1);}
326 if(verbose>20) printf(
"line finished.\n");
329 if(verbose>20) printf(
"last char is delimiter.\n");
331 statusSet(status, __func__, __FILE__, __LINE__, ret);
336 if(verbose>20) printf(
"ending %s()\n", __func__);
360 if(line==NULL || strlen(line)<1) {
364 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
365 if(verbose>10) printf(
"%s():\n", __func__);
366 if(verbose>12) printf(
"'%s'\n", line);
368 char *cptr=(
char*)line;
370 int single_quotation=0;
371 int double_quotation=0;
375 while(*cptr && *lptr) {
376 if(verbose>20) printf(
"cptr='%s'\n", cptr);
378 j=strspn(cptr,
" \t\n\r"); cptr+=j;
if(!cptr)
break;
384 if(single_quotation==0 && strchr(lptr+1,
'\'')!=NULL) single_quotation=1;
385 else single_quotation=0;
386 lptr++; j++;
continue;
389 if(double_quotation==0 && strchr(lptr+1,
'\"')!=NULL) double_quotation=1;
390 else double_quotation=0;
391 lptr++; j++;
continue;
393 if(single_quotation==1 || double_quotation==1) {lptr++; j++;
continue;}
395 if(*lptr==
' ')
break;
401 if(verbose>20) printf(
" s='%s'\n", s);
403 statusSet(status, __func__, __FILE__, __LINE__, ret);
406 free(s); cptr+=j; field_nr++;
407 if(verbose>20) printf(
" csv.nr=%d\n", csv->
nr);