X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcommand.c;h=8580a18374feeb38569834f9ad5cdb36bab69571;hb=441a0be4dad876e64150d0e4694263caffc37002;hp=d9fc463315fac68b0b82e65fe148db107d696ae0;hpb=9e24f9a5c52650da0700066e8d9e72261c6492ad;p=pspp diff --git a/src/language/command.c b/src/language/command.c index d9fc463315..8580a18374 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -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" @@ -76,8 +77,8 @@ cmd_result_is_failure (enum cmd_result result) /* Command processing states. */ enum states { - S_INITIAL = 0x01, /* Allowed before active file defined. */ - S_DATA = 0x02, /* Allowed after active file defined. */ + S_INITIAL = 0x01, /* Allowed before active dataset defined. */ + S_DATA = 0x02, /* Allowed after active dataset defined. */ S_INPUT_PROGRAM = 0x04, /* Allowed in INPUT PROGRAM. */ S_FILE_TYPE = 0x08, /* Allowed in FILE TYPE. */ S_ANY = 0x0f /* Allowed anywhere. */ @@ -129,10 +130,12 @@ 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)); @@ -363,11 +366,11 @@ report_state_mismatch (const struct command *command, enum cmd_state state) { /* One allowed state. */ case S_INITIAL: - msg (SE, _("%s is allowed only before the active file has " + msg (SE, _("%s is allowed only before the active dataset has " "been defined."), command->name); break; case S_DATA: - msg (SE, _("%s is allowed only after the active file has " + msg (SE, _("%s is allowed only after the active dataset has " "been defined."), command->name); break; case S_INPUT_PROGRAM: @@ -382,34 +385,33 @@ 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 file 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 file 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 file 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 file 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. */ case S_DATA | S_INPUT_PROGRAM | S_FILE_TYPE: - msg (SE, _("%s is allowed only after the active file has " + msg (SE, _("%s is allowed only after the active dataset has " "been defined, inside INPUT PROGRAM, or inside " "FILE TYPE."), command->name); break; case S_INITIAL | S_INPUT_PROGRAM | S_FILE_TYPE: - msg (SE, _("%s is allowed only before the active file has " + msg (SE, _("%s is allowed only before the active dataset has " "been defined, inside INPUT PROGRAM, or inside " "FILE TYPE."), command->name); break; @@ -428,7 +430,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");