X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fget-data.c;h=dff449851bd91ff8a5bc3b3b18a26b196242f603;hb=4063e370381d696fa221a5987e596b78abb4d7c3;hp=061fde1c03a0a4628873d58be10041a8c7cce38f;hpb=93b3c24f9c9eef7e4a9ff2fca02731e94c3809de;p=pspp diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index 061fde1c03..dff449851b 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -59,7 +59,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) { char *tok = NULL; struct spreadsheet_read_options opts; - + opts.sheet_name = NULL; opts.sheet_index = -1; opts.cell_range = NULL; @@ -79,7 +79,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) if (s) tok = strdup (s); - + if (lex_match_id (lexer, "TXT")) { free (tok); @@ -90,7 +90,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) free (tok); return parse_get_psql (lexer, ds); } - else if (lex_match_id (lexer, "GNM") || + else if (lex_match_id (lexer, "GNM") || lex_match_id (lexer, "ODS")) { char *filename = NULL; @@ -218,7 +218,7 @@ parse_get_psql (struct lexer *lexer, struct dataset *ds) } static bool -parse_spreadsheet (struct lexer *lexer, char **filename, +parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_options *opts) { opts->sheet_index = 1; @@ -599,7 +599,13 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) lex_get (lexer); } - name = xstrdup (lex_tokcstr (lexer)); + const char * tstr = lex_tokcstr (lexer); + if (tstr == NULL) + { + lex_error (lexer, NULL); + goto error; + } + name = xstrdup (tstr); if (!lex_force_id (lexer) || !dict_id_is_valid (dict, name, true)) { @@ -673,7 +679,7 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) if (reader == NULL) goto error; - data_parser_make_active_file (parser, ds, reader, dict); + data_parser_make_active_file (parser, ds, reader, dict, NULL, NULL); fh_unref (fh); free (encoding); return CMD_SUCCESS; @@ -688,7 +694,7 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) } -static void +static void destroy_spreadsheet_read_info (struct spreadsheet_read_options *opts) { free (opts->cell_range);