summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandmarti1424 <scim.spreadsheet@gmail.com>2015-08-31 22:35:58 -0300
committerandmarti1424 <scim.spreadsheet@gmail.com>2015-08-31 22:35:58 -0300
commit6fc2bdac1020c4aa5c5f73cc8c25aec8e90af15f (patch)
treeb5d6f28dc5cb674acff2a83c1d1e7da38268fda1
parent9bb68a7f6fbf2472886a58e0de0a90326e00f8a9 (diff)
fix in import_csv
-rw-r--r--src/file.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/file.c b/src/file.c
index 1a01f67..4a87b20 100644
--- a/src/file.c
+++ b/src/file.c
@@ -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();