From: John Darrington Date: Sun, 17 Feb 2013 11:09:29 +0000 (+0100) Subject: Merge two option structs X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=415dbf964ef32c89d6283a19487a6eb188f32ed2;p=pspp Merge two option structs --- diff --git a/src/data/gnumeric-reader.c b/src/data/gnumeric-reader.c index 657c6d4a50..aaa2f9e143 100644 --- a/src/data/gnumeric-reader.c +++ b/src/data/gnumeric-reader.c @@ -31,7 +31,7 @@ #if !GNM_SUPPORT struct casereader * -gnumeric_open_reader (struct spreadsheet_read_info *gri, struct spreadsheet_read_options *opts, struct dictionary **dict) +gnumeric_open_reader (const struct spreadsheet_read_options *opts, struct dictionary **dict) { msg (ME, _("Support for %s files was not compiled into this installation of PSPP"), "Gnumeric"); @@ -545,7 +545,6 @@ gnumeric_probe (const char *filename, bool report_errors) struct casereader * gnumeric_make_reader (struct spreadsheet *spreadsheet, - const struct spreadsheet_read_info *gri, const struct spreadsheet_read_options *opts) { int x = 0; @@ -608,7 +607,7 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet, n_cases = MIN (n_cases, r->stop_row - r->start_row + 1); } - if ( gri->read_names ) + if ( opts->read_names ) { r->start_row++; n_cases --; @@ -652,7 +651,7 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet, if ( r->row < r->start_row) { - if ( gri->read_names ) + if ( opts->read_names ) { var_spec [idx].name = xstrdup (text); } @@ -662,8 +661,8 @@ gnumeric_make_reader (struct spreadsheet *spreadsheet, var_spec [idx].first_value = xmlStrdup (value); if (-1 == var_spec [idx].width ) - var_spec [idx].width = (gri->asw == -1) ? - ROUND_UP (strlen(text), SPREADSHEET_DEFAULT_WIDTH) : gri->asw; + var_spec [idx].width = (opts->asw == -1) ? + ROUND_UP (strlen(text), SPREADSHEET_DEFAULT_WIDTH) : opts->asw; } free (value); diff --git a/src/data/gnumeric-reader.h b/src/data/gnumeric-reader.h index f4c7c38d22..a544569c68 100644 --- a/src/data/gnumeric-reader.h +++ b/src/data/gnumeric-reader.h @@ -33,7 +33,6 @@ char * gnumeric_get_sheet_range (struct spreadsheet *s, int n); void gnumeric_destroy (struct spreadsheet *); struct casereader * gnumeric_make_reader (struct spreadsheet *spreadsheet, - const struct spreadsheet_read_info *gri, const struct spreadsheet_read_options *opts); diff --git a/src/data/ods-reader.c b/src/data/ods-reader.c index fc23c2dbaf..77da78ca51 100644 --- a/src/data/ods-reader.c +++ b/src/data/ods-reader.c @@ -33,7 +33,7 @@ #if !ODF_READ_SUPPORT struct casereader * -ods_open_reader (const struct spreadsheet_read_info *gri, struct spreadsheet_read_options *opts, +ods_open_reader (const struct spreadsheet_read_options *opts, struct dictionary **dict) { msg (ME, _("Support for %s files was not compiled into this installation of PSPP"), "OpenDocument"); @@ -419,7 +419,6 @@ struct spreadsheet *ods_probe (const char *filename, bool report_errors) struct casereader * ods_make_reader (struct spreadsheet *spreadsheet, - const struct spreadsheet_read_info *gri, const struct spreadsheet_read_options *opts) { intf ret = 0; @@ -434,7 +433,7 @@ ods_make_reader (struct spreadsheet *spreadsheet, xmlChar *val_string = NULL; assert (r); - r->read_names = gri->read_names; + r->read_names = opts->read_names; ds_init_empty (&r->ods_errs); if ( opts->cell_range ) @@ -489,7 +488,7 @@ ods_make_reader (struct spreadsheet *spreadsheet, goto error; } - if ( gri->read_names) + if ( opts->read_names) { while (1 == (ret = xmlTextReaderRead (r->xtr))) { @@ -538,7 +537,7 @@ ods_make_reader (struct spreadsheet *spreadsheet, { int idx; process_node (r); - if ( r->row >= r->start_row + 1 + gri->read_names) + if ( r->row >= r->start_row + 1 + opts->read_names) break; if ( r->col < r->start_col) @@ -576,7 +575,7 @@ ods_make_reader (struct spreadsheet *spreadsheet, struct fmt_spec fmt; struct variable *var = NULL; char *name = dict_make_unique_var_name (r->dict, var_spec[i].name, &vstart); - int width = xmv_to_width (&var_spec[i].firstval, gri->asw); + int width = xmv_to_width (&var_spec[i].firstval, opts->asw); dict_create_var (r->dict, name, width); free (name); diff --git a/src/data/ods-reader.h b/src/data/ods-reader.h index c602963094..1a5525d8f6 100644 --- a/src/data/ods-reader.h +++ b/src/data/ods-reader.h @@ -26,7 +26,6 @@ struct spreadsheet_read_options; struct spreadsheet *ods_probe (const char *filename, bool report_errors); struct casereader * ods_make_reader (struct spreadsheet *spreadsheet, - const struct spreadsheet_read_info *gri, const struct spreadsheet_read_options *opts); diff --git a/src/data/spreadsheet-reader.h b/src/data/spreadsheet-reader.h index d5d9a5f4c1..aa4c017452 100644 --- a/src/data/spreadsheet-reader.h +++ b/src/data/spreadsheet-reader.h @@ -31,10 +31,6 @@ struct spreadsheet_read_options const char *sheet_name ; /* The name of the sheet to open (in UTF-8) */ int sheet_index ; /* The index of the sheet to open (only used if sheet_name is NULL) */ const char *cell_range ; /* The cell range (in UTF-8) */ -}; - -struct spreadsheet_read_info -{ bool read_names ; /* True if the first row is to be used as the names of the variables */ int asw ; /* The width of string variables in the created dictionary */ }; diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index 09251a69c4..cfa33d1152 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -45,7 +45,7 @@ #define _(msgid) gettext (msgid) #define N_(msgid) (msgid) -static bool parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_info *sri, +static bool parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_options *opts); static void destroy_spreadsheet_read_info (struct spreadsheet_read_info *, struct spreadsheet_read_options *); @@ -81,21 +81,20 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) char *filename = NULL; struct casereader *reader = NULL; struct dictionary *dict = NULL; - struct spreadsheet_read_info sri; struct spreadsheet_read_options opts; - if (!parse_spreadsheet (lexer, &filename, &sri, &opts)) + if (!parse_spreadsheet (lexer, &filename, &opts)) goto error; if ( 0 == strncasecmp (tok, "GNM", 3)) { struct spreadsheet *spreadsheet = gnumeric_probe (filename, true); - reader = gnumeric_make_reader (spreadsheet, &sri, &opts); + reader = gnumeric_make_reader (spreadsheet, &opts); dict = spreadsheet->dict; } else if (0 == strncasecmp (tok, "ODS", 3)) { struct spreadsheet *spreadsheet = ods_probe (filename, true); - reader = ods_make_reader (spreadsheet, &sri, &opts); + reader = ods_make_reader (spreadsheet, &opts); dict = spreadsheet->dict; } @@ -103,11 +102,9 @@ cmd_get_data (struct lexer *lexer, struct dataset *ds) { dataset_set_dict (ds, dict); dataset_set_source (ds, reader); - destroy_spreadsheet_read_info (&sri, &opts); free (tok); return CMD_SUCCESS; } - destroy_spreadsheet_read_info (&sri, &opts); } else msg (SE, _("Unsupported TYPE %s."), tok); @@ -194,14 +191,14 @@ parse_get_psql (struct lexer *lexer, struct dataset *ds) } static bool -parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_info *sri, +parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read_options *opts) { opts->sheet_index = 1; opts->sheet_name = NULL; opts->cell_range = NULL; - sri->read_names = true; - sri->asw = -1; + opts->read_names = true; + opts->asw = -1; lex_force_match (lexer, T_SLASH); @@ -222,7 +219,7 @@ parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read if ( lex_match_id (lexer, "ASSUMEDSTRWIDTH")) { lex_match (lexer, T_EQUALS); - sri->asw = lex_integer (lexer); + opts->asw = lex_integer (lexer); lex_get (lexer); } else if (lex_match_id (lexer, "SHEET")) @@ -284,11 +281,11 @@ parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read if ( lex_match_id (lexer, "ON")) { - sri->read_names = true; + opts->read_names = true; } else if (lex_match_id (lexer, "OFF")) { - sri->read_names = false; + opts->read_names = false; } else { @@ -307,7 +304,6 @@ parse_spreadsheet (struct lexer *lexer, char **filename, struct spreadsheet_read return true; error: - destroy_spreadsheet_read_info (sri, opts); return false; } diff --git a/src/ui/gui/page-file.c b/src/ui/gui/page-file.c index 0e0a496de6..229260fc33 100644 --- a/src/ui/gui/page-file.c +++ b/src/ui/gui/page-file.c @@ -81,7 +81,6 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window) { enum { MAX_LINE_LEN = 16384 }; /* Max length of an acceptable line. */ struct file *file = &ia->file; - struct spreadsheet_read_info sri; struct spreadsheet_read_options opts; file->lines = NULL; @@ -93,8 +92,8 @@ init_file (struct import_assistant *ia, GtkWindow *parent_window) opts.cell_range = NULL; opts.sheet_index = 1; - sri.read_names = true; - sri.asw = -1; + opts.read_names = true; + opts.asw = -1; printf ("%s:%d %p\n", __FILE__, __LINE__, ia->spreadsheet); diff --git a/src/ui/gui/page-sheet-spec.c b/src/ui/gui/page-sheet-spec.c index 9aa16b5925..9fbba9bee4 100644 --- a/src/ui/gui/page-sheet-spec.c +++ b/src/ui/gui/page-sheet-spec.c @@ -78,7 +78,6 @@ struct sheet_spec_page struct casereader *reader; struct dictionary *dict; - struct spreadsheet_read_info sri; struct spreadsheet_read_options opts; }; @@ -102,7 +101,7 @@ sheet_spec_gen_syntax (const struct import_assistant *ia) (ia->spreadsheet->type == SPREADSHEET_GNUMERIC) ? "GNM" : "ODS", ia->file.file_name, ssp->opts.sheet_index, - ssp->sri.read_names ? "ON" : "OFF"); + ssp->opts.read_names ? "ON" : "OFF"); if (range && 0 != strcmp ("", range)) @@ -215,20 +214,20 @@ post_sheet_spec_page (struct import_assistant *ia) ssp->opts.cell_range = range; } - ssp->sri.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (readnames_checkbox)); - ssp->sri.asw = -1; + ssp->opts.read_names = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (readnames_checkbox)); + ssp->opts.asw = -1; switch (ia->spreadsheet->type) { case SPREADSHEET_ODS: { - creader = ods_make_reader (ia->spreadsheet, &ssp->sri, &ssp->opts); + creader = ods_make_reader (ia->spreadsheet, &ssp->opts); dict = ia->spreadsheet->dict; } break; case SPREADSHEET_GNUMERIC: { - creader = gnumeric_make_reader (ia->spreadsheet, &ssp->sri, &ssp->opts); + creader = gnumeric_make_reader (ia->spreadsheet, &ssp->opts); dict = ia->spreadsheet->dict; } break; diff --git a/src/ui/gui/sheet-test.c b/src/ui/gui/sheet-test.c index dc903eb7e9..b45a6c59d0 100644 --- a/src/ui/gui/sheet-test.c +++ b/src/ui/gui/sheet-test.c @@ -43,7 +43,6 @@ on_clicked (GtkButton *button, gpointer data) struct ccase *c; gint x = gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box)); struct casereader *reader ; - struct spreadsheet_read_info ri; struct spreadsheet_read_options opts; g_print( "%s %d\n", __FUNCTION__, x); @@ -51,11 +50,10 @@ on_clicked (GtkButton *button, gpointer data) opts.sheet_index = x + 1; opts.cell_range = NULL; opts.sheet_name = NULL; + opts.read_names = TRUE; + opts.asw = -1; - ri.read_names = TRUE; - ri.asw = -1; - - reader = gnumeric_make_reader (sp, &ri, &opts); + reader = gnumeric_make_reader (sp, &opts); for (; (c = casereader_read (reader)) != NULL; case_unref (c)) {