diff options
author | andmarti1424 <scim.spreadsheet@gmail.com> | 2015-08-31 22:35:58 -0300 |
---|---|---|
committer | andmarti1424 <scim.spreadsheet@gmail.com> | 2015-08-31 22:35:58 -0300 |
commit | 6fc2bdac1020c4aa5c5f73cc8c25aec8e90af15f (patch) | |
tree | b5d6f28dc5cb674acff2a83c1d1e7da38268fda1 | |
parent | 9bb68a7f6fbf2472886a58e0de0a90326e00f8a9 (diff) |
fix in import_csv
-rw-r--r-- | src/file.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -735,6 +735,7 @@ int import_csv(char * fname, char d) { scerror("Can't read file \"%s\"", fname); return -1; } + loading = 1; // recorro archivo csv while ( ! feof(f) && (fgets(line_in, sizeof(line_in), f) != NULL) ) { @@ -754,7 +755,7 @@ int import_csv(char * fname, char d) { clean_carrier(token); if ( token[0] == '\"' && token[strlen(token)-1] == '\"') { quote = 1; - } else if ( (token[0] == '\"' || quote) && (token[strlen(token)-1] != '\"' || strlen(token) == 1) ) { + } else if ( (token[0] == '\"' || quote) && strlen(token) && (token[strlen(token)-1] != '\"' || strlen(token) == 1) ) { quote = 1; sprintf(token + strlen(token), "%s", xstrtok(NULL, delim)); continue; @@ -763,27 +764,35 @@ int import_csv(char * fname, char d) { del_char(token, 0); del_char(token, strlen(token)-1); } - if (isnumeric(token)) { - sprintf(line_interp, "let %s%d=%s", coltoa(c), r, token); + char * st = str_replace (token, "\"", "''"); //replace double quotes inside string + if (isnumeric(st) && strlen(st) && token[strlen(st)-1] != '-' && token[strlen(st)-1] != '.') { //FIXME do a proper isnumeric function !! + sprintf(line_interp, "let %s%d=%s", coltoa(c), r, st); } else { - sprintf(line_interp, "label %s%d=\"%s\"", coltoa(c), r, token); + sprintf(line_interp, "label %s%d=\"%s\"", coltoa(c), r, st); } send_to_interp(line_interp); c++; quote = 0; token = xstrtok(NULL, delim); + free(st); } r++; } + //scdebug("END"); maxrow = r-1; maxcol = c-1; + // to do a test: + //sprintf(line_interp, "let %s%d=%s", coltoa(maxcol), maxrow, "0"); + //send_to_interp(line_interp); + auto_justify(0, maxcol, DEFWIDTH); //closefile(f, pid, rfd); fclose(f); + loading = 0; EvalAll(); |