X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fcommand.c;h=ff2b030ce0e206f3af47c48f090368027dd60e4c;hb=840f7bace2423e6d240320ab308f0fbaa8c559f1;hp=8ba8a08e4bb9458d3f9e9497826abdd3b16bbd4a;hpb=9ade26c8349b4434008c46cf09bc7473ec743972;p=pspp-builds.git diff --git a/src/language/command.c b/src/language/command.c index 8ba8a08e..ff2b030c 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -24,8 +24,9 @@ #include #include "data/casereader.h" +#include "data/dataset.h" #include "data/dictionary.h" -#include "data/procedure.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)); @@ -147,7 +150,7 @@ cmd_parse (struct lexer *lexer, struct dataset *ds) { const struct dictionary *dict = dataset_dict (ds); return cmd_parse_in_state (lexer, ds, - proc_has_active_file (ds) && + dataset_has_source (ds) && dict_get_var_cnt (dict) > 0 ? CMD_STATE_DATA : CMD_STATE_INITIAL); } @@ -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,19 +385,19 @@ 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 " + msg (SE, _("%s is allowed only before the active dataset has " "been defined or inside INPUT PROGRAM."), command->name); break; case S_INITIAL | 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 or inside FILE TYPE."), command->name); break; case S_DATA | S_INPUT_PROGRAM: - msg (SE, _("%s is allowed only after the active file has " + msg (SE, _("%s is allowed only after the active dataset has " "been defined or inside INPUT PROGRAM."), command->name); break; case S_DATA | 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 or inside FILE TYPE."), command->name); break; case S_INPUT_PROGRAM | S_FILE_TYPE: @@ -404,12 +407,12 @@ report_state_mismatch (const struct command *command, enum cmd_state state) /* 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; @@ -541,6 +544,6 @@ cmd_erase (struct lexer *lexer, struct dataset *ds UNUSED) int cmd_new_file (struct lexer *lexer UNUSED, struct dataset *ds) { - proc_discard_active_file (ds); + dataset_clear (ds); return CMD_SUCCESS; }