X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdictionary%2Fvariable-display.c;h=461648557a05eaf017ffd1e67f8280c0a99fd3e6;hb=033449d465fb54526d3984d55772e6a38e7d922c;hp=9e50551c92b9a17359af658d947014762fb78bc2;hpb=79100bdd30230890345c1c5a09ae57a19c1e408b;p=pspp diff --git a/src/language/dictionary/variable-display.c b/src/language/dictionary/variable-display.c index 9e50551c92..461648557a 100644 --- a/src/language/dictionary/variable-display.c +++ b/src/language/dictionary/variable-display.c @@ -51,13 +51,13 @@ cmd_variable_alignment (struct lexer *lexer, struct dataset *ds) if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE)) return CMD_FAILURE; - if ( lex_force_match (lexer, T_LPAREN) ) + if (lex_force_match (lexer, T_LPAREN)) { - if ( lex_match_id (lexer, "LEFT")) + if (lex_match_id (lexer, "LEFT")) align = ALIGN_LEFT; - else if ( lex_match_id (lexer, "RIGHT")) + else if (lex_match_id (lexer, "RIGHT")) align = ALIGN_RIGHT; - else if ( lex_match_id (lexer, "CENTER")) + else if (lex_match_id (lexer, "CENTER")) align = ALIGN_CENTRE; else { @@ -65,7 +65,8 @@ cmd_variable_alignment (struct lexer *lexer, struct dataset *ds) return CMD_FAILURE; } - lex_force_match (lexer, T_RPAREN); + if (!lex_force_match (lexer, T_RPAREN)) + return CMD_FAILURE; } else { @@ -73,7 +74,7 @@ cmd_variable_alignment (struct lexer *lexer, struct dataset *ds) return CMD_FAILURE; } - for( i = 0 ; i < nv ; ++i ) + for(i = 0 ; i < nv ; ++i) var_set_alignment (v[i], align); while (lex_token (lexer) == T_SLASH) @@ -102,7 +103,8 @@ cmd_variable_width (struct lexer *lexer, struct dataset *ds) if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE)) return CMD_FAILURE; - if (!lex_force_match (lexer, T_LPAREN) || !lex_force_int (lexer)) + if (!lex_force_match (lexer, T_LPAREN) + || !lex_force_int_range (lexer, NULL, 1, INT_MAX)) { free (v); return CMD_FAILURE; @@ -115,15 +117,9 @@ cmd_variable_width (struct lexer *lexer, struct dataset *ds) return CMD_FAILURE; } - if (width < 0) - { - msg (SE, _("Variable display width must be a positive integer.")); - free (v); - return CMD_FAILURE; - } width = MIN (width, 2 * MAX_STRING); - for( i = 0 ; i < nv ; ++i ) + for(i = 0 ; i < nv ; ++i) var_set_display_width (v[i], width); while (lex_token (lexer) == T_SLASH) @@ -149,13 +145,13 @@ cmd_variable_level (struct lexer *lexer, struct dataset *ds) if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE)) return CMD_FAILURE; - if ( lex_force_match (lexer, T_LPAREN) ) + if (lex_force_match (lexer, T_LPAREN)) { - if ( lex_match_id (lexer, "SCALE")) + if (lex_match_id (lexer, "SCALE")) level = MEASURE_SCALE; - else if ( lex_match_id (lexer, "ORDINAL")) + else if (lex_match_id (lexer, "ORDINAL")) level = MEASURE_ORDINAL; - else if ( lex_match_id (lexer, "NOMINAL")) + else if (lex_match_id (lexer, "NOMINAL")) level = MEASURE_NOMINAL; else { @@ -163,7 +159,8 @@ cmd_variable_level (struct lexer *lexer, struct dataset *ds) return CMD_FAILURE; } - lex_force_match (lexer, T_RPAREN); + if (!lex_force_match (lexer, T_RPAREN)) + return CMD_FAILURE; } else { @@ -171,7 +168,7 @@ cmd_variable_level (struct lexer *lexer, struct dataset *ds) return CMD_FAILURE; } - for( i = 0 ; i < nv ; ++i ) + for(i = 0 ; i < nv ; ++i) var_set_measure (v[i], level); @@ -195,20 +192,23 @@ cmd_variable_role (struct lexer *lexer, struct dataset *ds) enum var_role role; size_t i; - if ( lex_match_id (lexer, "INPUT")) + if (lex_match_id (lexer, "INPUT")) role = ROLE_INPUT; - else if ( lex_match_id (lexer, "TARGET")) - role = ROLE_OUTPUT; - else if ( lex_match_id (lexer, "BOTH")) + else if (lex_match_id (lexer, "TARGET")) + role = ROLE_TARGET; + else if (lex_match_id (lexer, "BOTH")) role = ROLE_BOTH; - else if ( lex_match_id (lexer, "NONE")) + else if (lex_match_id (lexer, "NONE")) role = ROLE_NONE; - else if ( lex_match_id (lexer, "PARTITION")) + else if (lex_match_id (lexer, "PARTITION")) role = ROLE_PARTITION; - else if ( lex_match_id (lexer, "SPLIT")) + else if (lex_match_id (lexer, "SPLIT")) role = ROLE_SPLIT; else - return CMD_FAILURE; + { + lex_error (lexer, NULL); + return CMD_FAILURE; + } if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE)) return CMD_FAILURE;