X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fget-data.c;h=0c60bd3d63bb2c84104a28442e331499a088c30d;hb=2a76184b55a8c229adc0b31d3436d29076de0ef8;hp=66dd19f2397d7636228f2069eea4406eb07945ae;hpb=96994a54e60e9c95b8bba54c2281acf7059b1203;p=pspp diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index 66dd19f239..0c60bd3d63 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -164,7 +164,7 @@ parse_get_psql (struct lexer *lexer, struct dataset *ds) if (lex_match_id (lexer, "ASSUMEDSTRWIDTH")) { lex_match (lexer, T_EQUALS); - if (lex_force_int (lexer)) + if (lex_force_int_range (lexer, "ASSUMEDSTRWIDTH", 1, 32767)) { psql.str_width = lex_integer (lexer); lex_get (lexer); @@ -173,7 +173,7 @@ parse_get_psql (struct lexer *lexer, struct dataset *ds) else if (lex_match_id (lexer, "BSIZE")) { lex_match (lexer, T_EQUALS); - if (lex_force_int (lexer)) + if (lex_force_int_range (lexer, "BSIZE", 1, INT_MAX)) { psql.bsize = lex_integer (lexer); lex_get (lexer); @@ -248,7 +248,7 @@ parse_spreadsheet (struct lexer *lexer, char **filename, if (lex_match_id (lexer, "ASSUMEDSTRWIDTH")) { lex_match (lexer, T_EQUALS); - if (lex_force_int (lexer)) + if (lex_force_int_range (lexer, "ASSUMEDSTRWIDTH", 1, 32767)) { opts->asw = lex_integer (lexer); lex_get (lexer); @@ -269,15 +269,9 @@ parse_spreadsheet (struct lexer *lexer, char **filename, } else if (lex_match_id (lexer, "INDEX")) { - if (!lex_force_int (lexer)) + if (!lex_force_int_range (lexer, "INDEX", 1, INT_MAX)) goto error; - opts->sheet_index = lex_integer (lexer); - if (opts->sheet_index <= 0) - { - msg (SE, _("The sheet index must be greater than or equal to 1")); - goto error; - } lex_get (lexer); } else @@ -389,7 +383,7 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) if (fh == NULL) goto error; - parser = data_parser_create (dict); + parser = data_parser_create (); has_type = false; data_parser_set_type (parser, DP_DELIMITED); data_parser_set_span (parser, false); @@ -434,13 +428,8 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) else if (lex_match_id (lexer, "FIRSTCASE")) { lex_match (lexer, T_EQUALS); - if (!lex_force_int (lexer)) + if (!lex_force_int_range (lexer, "FIRSTCASE", 1, INT_MAX)) goto error; - if (lex_integer (lexer) < 1) - { - msg (SE, _("Value of %s must be 1 or greater."), "FIRSTCASE"); - goto error; - } data_parser_set_skip (parser, lex_integer (lexer) - 1); lex_get (lexer); } @@ -472,13 +461,8 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) if (!set_type (parser, "FIXCASE", DP_FIXED, &has_type)) goto error; lex_match (lexer, T_EQUALS); - if (!lex_force_int (lexer)) + if (!lex_force_int_range (lexer, "FIXCASE", 1, INT_MAX)) goto error; - if (lex_integer (lexer) < 1) - { - msg (SE, _("Value of %s must be 1 or greater."), "FIXCASE"); - goto error; - } data_parser_set_records (parser, lex_integer (lexer)); lex_get (lexer); } @@ -576,25 +560,9 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) while (type == DP_FIXED && lex_match (lexer, T_SLASH)) { - if (!lex_force_int (lexer)) + if (!lex_force_int_range (lexer, NULL, record, + data_parser_get_records (parser))) goto error; - if (lex_integer (lexer) < record) - { - msg (SE, _("The record number specified, %ld, is at or " - "before the previous record, %d. Data " - "fields must be listed in order of " - "increasing record number."), - lex_integer (lexer), record); - goto error; - } - if (lex_integer (lexer) > data_parser_get_records (parser)) - { - msg (SE, _("The record number specified, %ld, exceeds " - "the number of records per case specified " - "on FIXCASE, %d."), - lex_integer (lexer), data_parser_get_records (parser)); - goto error; - } record = lex_integer (lexer); lex_get (lexer); } @@ -619,13 +587,15 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) { goto error; } - output = fmt_for_output_from_input (&input); + output = fmt_for_output_from_input (&input, + settings_get_fmt_settings ()); } else { char fmt_type_name[FMT_TYPE_LEN_MAX + 1]; enum fmt_type fmt_type; - int w, d; + uint16_t w; + uint8_t d; if (!parse_column_range (lexer, 0, &fc, &lc, NULL)) goto error; @@ -654,7 +624,8 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) goto error; } else - output = fmt_for_output_from_input (&input); + output = fmt_for_output_from_input (&input, + settings_get_fmt_settings ()); } v = dict_create_var (dict, name, fmt_var_width (&input)); if (v == NULL)