X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcommand.c;h=5b376629d48970ea0c55fae7f6a4707b727d3c1b;hb=80788c833f111c2e9aef3e25bdb44d6a56423313;hp=f5db9731c1e6f6d30f8f77bf04d1a76f53c29bf7;hpb=b401615e6db40bf74394839b96600afe3a868a95;p=pspp diff --git a/src/language/command.c b/src/language/command.c index f5db9731c1..5b376629d4 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 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2009, 2010, 2011, 2012 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 @@ -26,6 +26,7 @@ #include "data/casereader.h" #include "data/dataset.h" #include "data/dictionary.h" +#include "data/session.h" #include "data/settings.h" #include "data/variable.h" #include "language/lexer/command-name.h" @@ -129,13 +130,14 @@ enum cmd_result cmd_parse_in_state (struct lexer *lexer, struct dataset *ds, enum cmd_state state) { + struct session *session = dataset_session (ds); int result; result = do_parse_command (lexer, ds, state); + 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; @@ -359,7 +361,7 @@ report_state_mismatch (const struct command *command, enum cmd_state state) assert (!in_correct_state (command, state)); if (state == CMD_STATE_INITIAL || state == CMD_STATE_DATA) { - switch (command->states) + switch ((int) command->states) { /* One allowed state. */ case S_INITIAL: @@ -382,24 +384,23 @@ report_state_mismatch (const struct command *command, enum cmd_state state) case S_INITIAL | S_DATA: NOT_REACHED (); case S_INITIAL | S_INPUT_PROGRAM: - msg (SE, _("%s is allowed only before the active dataset has " - "been defined or inside INPUT PROGRAM."), command->name); + msg (SE, _("%s is allowed only before the active dataset has been defined or inside %s."), + command->name, "INPUT PROGRAM"); break; case S_INITIAL | S_FILE_TYPE: - msg (SE, _("%s is allowed only before the active dataset has " - "been defined or inside FILE TYPE."), command->name); + msg (SE, _("%s is allowed only before the active dataset has been defined or inside %s."), + command->name, "FILE TYPE"); break; case S_DATA | S_INPUT_PROGRAM: - msg (SE, _("%s is allowed only after the active dataset has " - "been defined or inside INPUT PROGRAM."), command->name); + msg (SE, _("%s is allowed only after the active dataset has been defined or inside %s."), + command->name, "INPUT PROGRAM"); break; case S_DATA | S_FILE_TYPE: - msg (SE, _("%s is allowed only after the active dataset has " - "been defined or inside FILE TYPE."), command->name); + msg (SE, _("%s is allowed only after the active dataset has been defined or inside %s."), + 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 INPUT PROGRAM or inside FILE TYPE."), command->name); break; /* Three allowed states. */ @@ -428,7 +429,7 @@ report_state_mismatch (const struct command *command, enum cmd_state state) } else if (state == CMD_STATE_INPUT_PROGRAM) msg (SE, _("%s is not allowed inside %s."), - command->name, "INPUT PROGRAM" ); + command->name, "INPUT PROGRAM" ); else if (state == CMD_STATE_FILE_TYPE) msg (SE, _("%s is not allowed inside %s."), command->name, "FILE TYPE");