From 3973963b0cb36f82a2d5ed44fadb4bda48720797 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Wed, 13 Jun 2018 00:36:22 -0700 Subject: [PATCH] SCP: Make expression evaluation consistent --- scp.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/scp.c b/scp.c index 1faa267f..a2854d4d 100644 --- a/scp.c +++ b/scp.c @@ -3409,11 +3409,13 @@ do { sim_do_ocptr[sim_do_depth] = cptr = read_line (cbuf, sizeof(cbuf), fpin);/* get cmd line */ sim_goto_line[sim_do_depth] += 1; } - sim_sub_args (cbuf, sizeof(cbuf), do_arg); /* substitute args */ if (cptr == NULL) { /* EOF? */ stat = SCPE_OK; /* set good return */ break; } + sim_debug (SIM_DBG_DO, sim_dflt_dev, "Input Command: %s\n", cbuf); + sim_sub_args (cbuf, sizeof(cbuf), do_arg); /* substitute args */ + sim_debug (SIM_DBG_DO, sim_dflt_dev, "Expanded Command: %s\n", cbuf); if (*cptr == 0) /* ignore blank */ continue; if (echo) /* echo if -v */ @@ -3442,6 +3444,7 @@ do { } else stat = SCPE_UNK; /* bad cmd given */ + sim_debug (SIM_DBG_DO, sim_dflt_dev, "Command '%s', Result: 0x%X - %s\n", cmdp->name, stat, sim_error_text (stat)); echo = sim_do_echo; /* Allow for SET VERIFY */ stat_nomessage = stat & SCPE_NOMESSAGE; /* extract possible message supression flag */ stat_nomessage = stat_nomessage || (!sim_show_message);/* Apply global suppression */ @@ -13951,20 +13954,13 @@ if (isalpha (*data) || (*data == '_')) { rptr = find_reg_glob (data, &gptr, &dptr); if (rptr) { *svalue = (t_svalue)get_rval (rptr, 0); - sprint_val (string + 1, *svalue, 10, string_size - 2, PV_LEFTSIGN); - *string = '"'; - strlcpy (&string[strlen (string)], "\"", string_size - strlen (string)); + sprint_val (string, *svalue, 10, string_size - 1, PV_LEFTSIGN); return TRUE; } - gptr = _sim_get_env_special (data, string + 1, string_size - 2); + gptr = _sim_get_env_special (data, string, string_size - 1); if (gptr) { - t_bool numeric; - - *string = '"'; - *svalue = strtotsv(string + 1, &gptr, 0); - numeric = (*gptr == '\0') || ((*gptr == '"') && (gptr[1] == '\0')); - strlcpy (&string[strlen (string)], "\"", string_size - strlen (string)); - return numeric; + *svalue = strtotsv(string, &gptr, 0); + return ((*gptr == '\0') && (*string)); } else { data = ""; @@ -13978,12 +13974,11 @@ if ((data[0] == '"') && (data_size > 1) && (data[data_size - 1] == '"')) strlcpy (string, data, string_size); if (string[0] == '\0') { *svalue = strtotsv(data, &gptr, 0); - snprintf (string, string_size - 1, "\"%s\"", data); - return (*gptr == '\0'); + return ((*gptr == '\0') && (*data)); } sim_sub_args (string, string_size, sim_exp_argv); -*svalue = strtotsv(string + 1, &gptr, 0); -return ((*gptr == '\"') && ((gptr - string) == (strlen (string) - 2))); +*svalue = strtotsv(string, &gptr, 0); +return ((*gptr == '\0') && (*string)); } /*