X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcommand.c;h=163f9845742ee095096f8791c7d18d64d47f4a52;hb=def7e6026513a3ee7c2b38416b30a2e890e34311;hp=2c62d2f26d79200b8dce23cc80b79dea24820cb1;hpb=1dc8717737084b93af2cd212e84edbd2cce1046c;p=pspp-builds.git diff --git a/src/command.c b/src/command.c index 2c62d2f2..163f9845 100644 --- a/src/command.c +++ b/src/command.c @@ -201,7 +201,8 @@ cmd_parse (void) /* If we're in a FILE TYPE structure, only certain commands can be allowed. */ - if (pgm_state == STATE_INPUT && vfm_source == &file_type_source + if (pgm_state == STATE_INPUT + && case_source_is_class (vfm_source, &file_type_source_class) && !FILE_TYPE_okay (cp)) return CMD_FAILURE; @@ -249,7 +250,7 @@ cmd_parse (void) /* Perform the state transition if the command completed successfully (at least in part). */ - if (result != 0) + if (result != CMD_FAILURE) { pgm_state = cp->transition[pgm_state]; @@ -561,28 +562,21 @@ int cmd_execute (void) { lex_match_id ("EXECUTE"); - procedure (NULL, NULL, NULL); + procedure (NULL, NULL); return lex_end_of_command (); } - -#define assert_not_safer() \ - do { \ - if (set_safer) \ - { \ - msg (SE, _("This command not allowed when the SAFER option is set.")); \ - return CMD_FAILURE; \ - } \ -} while(0) - - - /* Parses, performs the ERASE command. */ int cmd_erase (void) { - assert_not_safer(); + if ( safer_mode() ) + { + msg (SE, _("This command not allowed when the SAFER option is set.")); + return CMD_FAILURE; + } + lex_match_id ("ERASE"); if (!lex_force_match_id ("FILE")) @@ -601,7 +595,7 @@ cmd_erase (void) return CMD_SUCCESS; } -#if unix +#ifdef unix /* Spawn a shell process. */ static int shell (void) @@ -709,11 +703,15 @@ cmd_host (void) { int code; - assert_not_safer(); - + if ( safer_mode() ) + { + msg (SE, _("This command not allowed when the SAFER option is set.")); + return CMD_FAILURE; + } + lex_match_id ("HOST"); -#if unix +#ifdef unix /* Figure out whether to invoke an interactive shell or to execute a single shell command. */ if (lex_look_ahead () == '.')