From d35b8725a3e41c531191d765513b2a8bedd0fb0a Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Tue, 18 Sep 2018 14:24:14 -0700 Subject: [PATCH] SCP: Add optional status value to EXIT command --- doc/simh_doc.doc | Bin 323584 -> 329728 bytes scp.c | 28 +++++++++++++++++++--------- sim_defs.h | 8 ++++++++ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/doc/simh_doc.doc b/doc/simh_doc.doc index e3b6b1c5ce5525c81c929a2223e058110d5e0d58..d5d9812ccfa95d4f33051b9a2e1ce2e50d8c1af8 100644 GIT binary patch delta 43068 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 B_I>~W delta 39114 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 diff --git a/scp.c b/scp.c index 005ef6a6..86769488 100644 --- a/scp.c +++ b/scp.c @@ -567,6 +567,7 @@ static int32 noqueue_time; volatile t_bool stop_cpu = FALSE; static unsigned int sim_stop_sleep_ms = 250; static char **sim_argv; +static int sim_exit_status = EXIT_SUCCESS; /* optionally set by EXIT command */ t_value *sim_eval = NULL; static t_value sim_last_val; static t_addr sim_last_addr; @@ -2166,6 +2167,10 @@ static const char simh_help[] = #define HLP_EXIT "*Commands Exiting_The_Simulator" "2Exiting The Simulator\n" " EXIT (synonyms QUIT and BYE) returns control to the operating system.\n" + "3 Exit Status\n" + " An optional numeric exit status may be provided on the EXIT command line\n" + " that an operating system script may act on.\n\n" + "++EXIT {status} exit with optional status\n\n" /***************** 80 character line width template *************************/ #define HLP_SCREENSHOT "*Commands Screenshot_Video_Window" "2Screenshot Video Window\n" @@ -2394,7 +2399,7 @@ char nbuf[PATH_MAX + 7]; char **targv = NULL; int32 i, sw; t_bool lookswitch; -t_stat stat; +t_stat stat = SCPE_OK; #if defined (__MWERKS__) && defined (macintosh) argc = ccommand (&argv); @@ -2455,7 +2460,7 @@ if (sim_emax <= 0) if (sim_timer_init ()) { fprintf (stderr, "Fatal timer initialization error\n"); read_line_p ("Hit Return to exit: ", cbuf, sizeof (cbuf) - 1, stdin); - return 0; + return EXIT_FAILURE; } sim_register_internal_device (&sim_expect_dev); sim_register_internal_device (&sim_step_dev); @@ -2464,12 +2469,12 @@ if ((stat = sim_ttinit ()) != SCPE_OK) { fprintf (stderr, "Fatal terminal initialization error\n%s\n", sim_error_text (stat)); read_line_p ("Hit Return to exit: ", cbuf, sizeof (cbuf) - 1, stdin); - return 0; + return EXIT_FAILURE; } if ((sim_eval = (t_value *) calloc (sim_emax, sizeof (t_value))) == NULL) { fprintf (stderr, "Unable to allocate examine buffer\n"); read_line_p ("Hit Return to exit: ", cbuf, sizeof (cbuf) - 1, stdin); - return 0; + return EXIT_FAILURE; }; if (sim_dflt_dev == NULL) /* if no default */ sim_dflt_dev = sim_devices[0]; @@ -2477,13 +2482,13 @@ if ((stat = reset_all_p (0)) != SCPE_OK) { fprintf (stderr, "Fatal simulator initialization error\n%s\n", sim_error_text (stat)); read_line_p ("Hit Return to exit: ", cbuf, sizeof (cbuf) - 1, stdin); - return 0; + return EXIT_FAILURE; } if ((stat = sim_brk_init ()) != SCPE_OK) { fprintf (stderr, "Fatal breakpoint table initialization error\n%s\n", sim_error_text (stat)); read_line_p ("Hit Return to exit: ", cbuf, sizeof (cbuf) - 1, stdin); - return 0; + return EXIT_FAILURE; } signal (SIGINT, int_handler); if (!sim_quiet) { @@ -2547,11 +2552,14 @@ else if (*argv[0]) { /* sim name arg? */ } } } +if (stat == SCPE_OPENERR) /* didn't exist/can't open? */ + stat = SCPE_OK; if (sim_switches & SWMASK ('T')) /* Command Line -T switch */ - sim_library_unit_tests (); /* run library unit tests */ + stat = sim_library_unit_tests (); /* run library unit tests */ -stat = process_stdin_commands (SCPE_BARE_STATUS(stat), argv); +if (stat == SCPE_OK) + process_stdin_commands (SCPE_BARE_STATUS(stat), argv); detach_all (0, TRUE); /* close files */ sim_set_deboff (0, NULL); /* close debug */ @@ -2563,7 +2571,7 @@ AIO_CLEANUP; /* Asynch I/O */ sim_cleanup_sock (); /* cleanup sockets */ fclose (stdnul); /* close bit bucket file handle */ free (targv); /* release any argv copy that was made */ -return 0; +return sim_exit_status; } t_stat process_stdin_commands (t_stat stat, char *argv[]) @@ -2681,6 +2689,8 @@ return cmdp; t_stat exit_cmd (int32 flag, CONST char *cptr) { +if (cptr && *cptr) + sim_exit_status = atoi (cptr); return SCPE_EXIT; } diff --git a/sim_defs.h b/sim_defs.h index 834bcf97..a42bd478 100644 --- a/sim_defs.h +++ b/sim_defs.h @@ -125,6 +125,14 @@ extern int sim_vax_snprintf(char *buf, size_t buf_size, const char *fmt, ...); #include #include +#ifndef EXIT_FAILURE +#define EXIT_FAILURE 1 +#endif +#ifndef EXIT_SUCCESS +#define EXIT_SUCCESS 0 +#endif + + #ifdef _WIN32 #include #include