X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcommand.c;h=788759113136e6e7570b4ebcfeb00eb9e8427526;hb=6f763403034b44b809fae1580dda3af0ab24a11b;hp=0502ff9d00042e473d32d50235aedd4d150d35f1;hpb=e943de7a3e0645852c3b659889ff3ccf38dd43ec;p=pspp diff --git a/src/language/command.c b/src/language/command.c index 0502ff9d00..7887591131 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -50,10 +50,22 @@ static inline bool cmd_result_is_valid (enum cmd_result result) { - return (result == CMD_SUCCESS || result == CMD_EOF || result == CMD_FINISH - || (result >= CMD_PRIVATE_FIRST && result <= CMD_PRIVATE_LAST) - || result == CMD_FAILURE || result == CMD_NOT_IMPLEMENTED - || result == CMD_CASCADING_FAILURE); + switch (result) + { + case CMD_SUCCESS: + case CMD_EOF: + case CMD_FINISH: + case CMD_DATA_LIST: + case CMD_END_CASE: + case CMD_END_FILE: + case CMD_FAILURE: + case CMD_NOT_IMPLEMENTED: + case CMD_CASCADING_FAILURE: + return true; + + default: + return false; + } } /* Returns true if RESULT indicates success, @@ -138,7 +150,6 @@ cmd_parse_in_state (struct lexer *lexer, struct dataset *ds, ds = session_active_dataset (session); assert (!proc_is_open (ds)); unset_cmd_algorithm (); - dict_clear_aux (dataset_dict (ds)); if (!dataset_end_of_command (ds)) result = CMD_CASCADING_FAILURE; @@ -231,8 +242,9 @@ finish: result = lex_end_of_command (lexer); lex_discard_rest_of_command (lexer); - while (lex_token (lexer) == T_ENDCMD) - lex_get (lexer); + if (result != CMD_EOF && result != CMD_FINISH) + while (lex_token (lexer) == T_ENDCMD) + lex_get (lexer); if (opened) text_item_submit (text_item_create (TEXT_ITEM_COMMAND_CLOSE, @@ -374,11 +386,11 @@ report_state_mismatch (const struct command *command, enum cmd_state state) "been defined."), command->name); break; case S_INPUT_PROGRAM: - msg (SE, _("%s is allowed only inside INPUT PROGRAM."), - command->name); + msg (SE, _("%s is allowed only inside %s."), + command->name, "INPUT PROGRAM"); break; case S_FILE_TYPE: - msg (SE, _("%s is allowed only inside FILE TYPE."), command->name); + msg (SE, _("%s is allowed only inside %s."), command->name, "FILE TYPE"); break; /* Two allowed states. */ @@ -401,7 +413,8 @@ report_state_mismatch (const struct command *command, enum cmd_state state) command->name, "FILE TYPE"); break; case S_INPUT_PROGRAM | S_FILE_TYPE: - msg (SE, _("%s is allowed only inside INPUT PROGRAM or inside FILE TYPE."), command->name); + msg (SE, _("%s is allowed only inside %s or inside %s."), command->name, + "INPUT PROGRAM", "FILE TYPE"); break; /* Three allowed states. */ @@ -514,7 +527,7 @@ cmd_erase (struct lexer *lexer, struct dataset *ds UNUSED) if (settings_get_safer_mode ()) { - msg (SE, _("This command not allowed when the SAFER option is set.")); + msg (SE, _("This command not allowed when the %s option is set."), "SAFER"); return CMD_FAILURE; }