X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fplacement-parser.c;h=6fa4e20388b02d7c6d03442ec0a790e557d6c26c;hb=2f3bca35516d8f3b3df76b3152fd5c77ff1f09cf;hp=55e1b5d501360b6693de79cbdbd5b9349c380ba3;hpb=6f3865480503c571963d8a2d1af858a4d72d4e88;p=pspp diff --git a/src/language/data-io/placement-parser.c b/src/language/data-io/placement-parser.c index 55e1b5d501..6fa4e20388 100644 --- a/src/language/data-io/placement-parser.c +++ b/src/language/data-io/placement-parser.c @@ -119,7 +119,7 @@ fixed_parse_columns (struct lexer *lexer, struct pool *pool, size_t var_cnt, int fc, lc; size_t i; - if ( !parse_column_range (lexer, 1, &fc, &lc, NULL) ) + if (!parse_column_range (lexer, 1, &fc, &lc, NULL)) return false; /* Divide columns evenly. */ @@ -167,7 +167,7 @@ fixed_parse_columns (struct lexer *lexer, struct pool *pool, size_t var_cnt, *formats = pool_nalloc (pool, var_cnt + 1, sizeof **formats); *format_cnt = var_cnt + 1; - (*formats)[0].type = PRS_TYPE_T; + (*formats)[0].type = (enum fmt_type) PRS_TYPE_T; (*formats)[0].w = fc; for (i = 1; i <= var_cnt; i++) (*formats)[i] = format; @@ -213,7 +213,7 @@ fixed_parse_fortran (struct lexer *lexer, struct pool *pool, enum fmt_use use, new_formats = &f; new_format_cnt = 1; if (use == FMT_FOR_INPUT && lex_match (lexer, T_SLASH)) - f.type = PRS_TYPE_NEW_REC; + f.type = (enum fmt_type) PRS_TYPE_NEW_REC; else { char type[FMT_TYPE_LEN_MAX + 1]; @@ -222,10 +222,10 @@ fixed_parse_fortran (struct lexer *lexer, struct pool *pool, enum fmt_use use, return false; if (!c_strcasecmp (type, "T")) - f.type = PRS_TYPE_T; + f.type = (enum fmt_type) PRS_TYPE_T; else if (!c_strcasecmp (type, "X")) { - f.type = PRS_TYPE_X; + f.type = (enum fmt_type) PRS_TYPE_X; f.w = count; count = 1; } @@ -299,7 +299,7 @@ execute_placement_format (const struct fmt_spec *format, } } -bool +static bool parse_column__ (int value, int base, int *column) { assert (base == 0 || base == 1); @@ -399,17 +399,10 @@ parse_record_placement (struct lexer *lexer, int *record, int *column) { while (lex_match (lexer, T_SLASH)) { - if (lex_is_integer (lexer)) + if (lex_is_number (lexer)) { - 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); - return false; - } + if (!lex_force_int_range (lexer, NULL, *record + 1, INT_MAX)) + return false; *record = lex_integer (lexer); lex_get (lexer); }