X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fget-data.c;h=daec18f41da340c9d0e5b9c882eae4e3c2fbc53d;hb=261eabd9113876a12994f7b419cbf3cf1ee98453;hp=2879e34a4bb3f329a3ab244cd8bb4c6b75f6e228;hpb=51318369476380d034d03d95952ed76efbd4761f;p=pspp diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index 2879e34a4b..daec18f41d 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -57,11 +57,12 @@ static int parse_get_psql (struct lexer *lexer, struct dataset *); int cmd_get_data (struct lexer *lexer, struct dataset *ds) { + struct spreadsheet_read_options opts; char *tok = NULL; lex_force_match (lexer, T_SLASH); if (!lex_force_match_id (lexer, "TYPE")) - return CMD_FAILURE; + goto error; lex_force_match (lexer, T_EQUALS); @@ -82,7 +83,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) char *filename = NULL; struct casereader *reader = NULL; struct dictionary *dict = NULL; - struct spreadsheet_read_options opts; + if (!parse_spreadsheet (lexer, &filename, &opts)) goto error; @@ -101,6 +102,7 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) goto error; reader = ods_make_reader (spreadsheet, &opts); dict = spreadsheet->dict; + ods_destroy (spreadsheet); } free (filename); @@ -113,15 +115,13 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) destroy_spreadsheet_read_info (&opts); return CMD_SUCCESS; } - destroy_spreadsheet_read_info (&opts); } else msg (SE, _("Unsupported TYPE %s."), tok); - - error: + destroy_spreadsheet_read_info (&opts); free (tok); return CMD_FAILURE; } @@ -682,4 +682,5 @@ static void destroy_spreadsheet_read_info (struct spreadsheet_read_options *opts) { free (opts->cell_range); + free (opts->sheet_name); }