|
|
|
@ -103,40 +103,55 @@ easycsv_free(easycsv *csv)
|
|
|
|
|
|
|
|
|
|
/*** Acces, read ***/ |
|
|
|
|
|
|
|
|
|
/* char* */ |
|
|
|
|
/* easycsv_readvalue(const easycsv *csv, */ |
|
|
|
|
/* const unsigned int col, */ |
|
|
|
|
/* const unsigned int row) */ |
|
|
|
|
/* { */ |
|
|
|
|
/* /\* ARGS CHECK *\/ */ |
|
|
|
|
/* if (row == 0) { */ |
|
|
|
|
/* _easycsv_printerror(csv->csv, EASYCSV_ZEROROW); */ |
|
|
|
|
/* _easycsv_printerror(csv->csv, EASYCSV_READVALUEFAIL); */ |
|
|
|
|
/* return NULL; */ |
|
|
|
|
/* } */ |
|
|
|
|
char* |
|
|
|
|
easycsv_read_value(const easycsv *csv, |
|
|
|
|
unsigned int col, |
|
|
|
|
unsigned int row) |
|
|
|
|
{ |
|
|
|
|
char str_row[BUFSIZ]; |
|
|
|
|
size_t st = 0; |
|
|
|
|
char *pch, *pch_end, *val; |
|
|
|
|
if (row == 0) { |
|
|
|
|
easycsv_error(EASYCSV_ZEROROW, NULL); |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* if (col == 0) { */ |
|
|
|
|
/* _easycsv_printerror(csv->csv, EASYCSV_ZEROCOL); */ |
|
|
|
|
/* _easycsv_printerror(csv->csv, EASYCSV_READVALUEFAIL); */ |
|
|
|
|
/* return NULL; */ |
|
|
|
|
/* } */ |
|
|
|
|
/* /\* END ARGS CHECK *\/ */ |
|
|
|
|
if (col == 0) { |
|
|
|
|
easycsv_error(EASYCSV_ZEROCOL, NULL); |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Set file pointer to start */ |
|
|
|
|
easycsv_rewind(csv); |
|
|
|
|
|
|
|
|
|
/* char *str = _easycsv_getrow(csv->csv, row); */ |
|
|
|
|
/* if (str == NULL) { */ |
|
|
|
|
/* _easycsv_printerror(csv->csv, EASYCSV_ROWNOTEXIST); */ |
|
|
|
|
/* _easycsv_printerror(csv->csv, EASYCSV_READVALUEFAIL); */ |
|
|
|
|
/* return NULL; */ |
|
|
|
|
/* } */ |
|
|
|
|
for (unsigned int i = 1; i < row; i++) { |
|
|
|
|
fscanf(csv->file, "%*[^\n]\n", NULL); |
|
|
|
|
} |
|
|
|
|
fscanf(csv->file, "%s\n", str_row); |
|
|
|
|
|
|
|
|
|
/* Get first occurance of comma in str,
|
|
|
|
|
the first value is ommited but not the comma */ |
|
|
|
|
pch = str_row; |
|
|
|
|
/* Repeat until desired col is found */ |
|
|
|
|
for (unsigned int i = 1; i < col; i++) { |
|
|
|
|
pch = strpbrk(pch + 1, ","); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* char *val = _easycsv_getvalueinrow(csv->csv, str, col); */ |
|
|
|
|
/* if (val == NULL) { */ |
|
|
|
|
/* _easycsv_printerror(csv->csv, EASYCSV_READVALUEFAIL); */ |
|
|
|
|
/* return NULL; */ |
|
|
|
|
/* } */ |
|
|
|
|
/* Get span from start of string to first occurence
|
|
|
|
|
of comma */ |
|
|
|
|
st = strcspn(pch, ","); |
|
|
|
|
|
|
|
|
|
/* return val; */ |
|
|
|
|
/* } */ |
|
|
|
|
val = malloc(BUFSIZ); |
|
|
|
|
// If 0, no string exists!
|
|
|
|
|
if (st == 0) { |
|
|
|
|
val = ""; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
strncpy(val, pch, st + 1); |
|
|
|
|
val[st] = '\0'; |
|
|
|
|
} |
|
|
|
|
return val; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* char* */ |
|
|
|
|
/* easycsv_readcolumnvalue(const easycsv *csv, */ |
|
|
|
|