X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fval-labs.c;h=9d05e77f83c528a067f300bb2d0c384b029f3b58;hb=9b4b94c6d3b5fd98bf396e23d015380b87d2d296;hp=9d289cbce50f7c707637092332d1f53ae59b5fdc;hpb=2ca4a5735ccbbe66ae2277faf6aa47e2bb83bfab;p=pspp-builds.git diff --git a/src/val-labs.c b/src/val-labs.c index 9d289cbc..9d05e77f 100644 --- a/src/val-labs.c +++ b/src/val-labs.c @@ -41,17 +41,12 @@ static int get_label (struct variable **vars, int var_cnt); int cmd_value_labels (void) { - lex_match_id ("VALUE"); - lex_match_id ("LABELS"); return do_value_labels (1); } int cmd_add_value_labels (void) { - lex_match_id ("ADD"); - lex_match_id ("VALUE"); - lex_match_id ("LABELS"); return do_value_labels (0); } @@ -62,12 +57,19 @@ do_value_labels (int erase) { struct variable **vars; /* Variable list. */ int var_cnt; /* Number of variables. */ + int parse_err=0; /* true if error parsing variables */ lex_match ('/'); while (token != '.') { - parse_variables (default_dict, &vars, &var_cnt, PV_SAME_TYPE); + parse_err = !parse_variables (default_dict, &vars, &var_cnt, + PV_SAME_TYPE) ; + if (var_cnt < 1) + { + free(vars); + return CMD_FAILURE; + } if (!verify_val_labs (vars, var_cnt)) goto lossage; if (erase) @@ -82,6 +84,7 @@ do_value_labels (int erase) free (vars); } + free (vars); if (token != '.') { @@ -89,7 +92,7 @@ do_value_labels (int erase) return CMD_TRAILING_GARBAGE; } - return CMD_SUCCESS; + return parse_err ? CMD_PART_SUCCESS_MAYBE : CMD_SUCCESS; lossage: free (vars);