diff --git a/scp.c b/scp.c index 5fc44bea..078a51ae 100644 --- a/scp.c +++ b/scp.c @@ -2903,12 +2903,20 @@ for (i = 1; i < argc; i++) { /* loop thru args */ if (argv[i] == NULL) /* paranoia */ continue; if ((*argv[i] == '-') && lookswitch) { /* switch? */ + int arg; + if (get_switches (argv[i], &sw, NULL) == SW_ERROR) { fprintf (stderr, "Invalid switch %s\n", argv[i]); free (targv); return EXIT_FAILURE; } sim_switches = sim_switches | sw; + /* Remove digested switch special argument to avoid confusion later */ + for (arg = i + 1; argv[arg] != NULL; arg++) + argv[arg - 1] = argv[arg]; + argv[arg] = NULL; + --argc; + --i; } else { if ((strlen (argv[i]) + strlen (cbuf) + 3) >= sizeof(cbuf)) { diff --git a/scp.h b/scp.h index 4b530693..69ba3eef 100644 --- a/scp.h +++ b/scp.h @@ -243,6 +243,7 @@ CONST char *match_ext (CONST char *fnam, const char *ext); int sim_cmp_string (const char *s1, const char *s2); t_stat sim_fetch_binary_file (const char *filename, const char *filepath, size_t size, unsigned int checksum); t_stat show_version (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr); +t_stat set_dev_enbdis (DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr); t_stat set_dev_debug (DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr); t_stat show_dev_debug (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, CONST char *cptr); t_stat sim_add_debug_flags (DEVICE *dptr, DEBTAB *debflags);