From d8f2647f93945f22b30f1d6f58b03b8c06f27854 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Sun, 24 Jan 2016 08:27:08 -0800 Subject: [PATCH] SCP: general const cleanups and const change to sim_vm_parse_addr. --- LGP/lgp_sys.c | 9 +++++---- PDQ-3/pdq3_fdc.c | 2 +- PDQ-3/pdq3_sys.c | 8 ++++---- doc/simh.doc | Bin 220160 -> 225280 bytes scp.c | 39 ++++++++++++++++++++------------------- scp.h | 8 ++++---- sim_serial.c | 4 ++-- sim_sock.c | 4 ++-- sim_tmxr.c | 14 ++++++++++---- 9 files changed, 48 insertions(+), 40 deletions(-) diff --git a/LGP/lgp_sys.c b/LGP/lgp_sys.c index 7dbca98e..589f88e8 100644 --- a/LGP/lgp_sys.c +++ b/LGP/lgp_sys.c @@ -237,21 +237,21 @@ else fprint_val (st, addr, dptr->aradix, dptr->awidth, PV_LEFT); return; } -t_addr lgp_parse_addr (DEVICE *dptr, char *cptr, char **tptr) +t_addr lgp_parse_addr (DEVICE *dptr, const char *cptr, const char **tptr) { t_addr ad, ea; if ((dptr == sim_devices[0]) && ((sim_switches & SWMASK ('T')) || ((cpu_unit.flags & UNIT_TTSS_D) && !(sim_switches & SWMASK ('N'))))) { - ad = (t_addr) strtotv (cptr, (const char **)tptr, 10); + ad = (t_addr) strtotv (cptr, tptr, 10); if (((ad / 100) >= NTK_30) || ((ad % 100) >= NSC_30)) { *tptr = cptr; return 0; } ea = ((ad / 100) * NSC_30) | (ad % 100); } -else ea = (t_addr) strtotv (cptr, (const char **)tptr, dptr->aradix); +else ea = (t_addr) strtotv (cptr, tptr, dptr->aradix); return ea; } @@ -379,7 +379,8 @@ return SCPE_ARG; t_stat parse_sym_m (char *cptr, t_value *val, int32 sw) { uint32 ea, sgn; -char *tptr, gbuf[CBUFSIZE]; +const char *tptr; +char gbuf[CBUFSIZE]; if (*cptr == '-') { cptr++; diff --git a/PDQ-3/pdq3_fdc.c b/PDQ-3/pdq3_fdc.c index de4f6c63..0f0ff808 100644 --- a/PDQ-3/pdq3_fdc.c +++ b/PDQ-3/pdq3_fdc.c @@ -349,7 +349,7 @@ static t_stat fdc_start(UNIT *uptr,int time) { static t_stat fdc_stop(UNIT *uptr) { /* request service */ - sim_debug(DBG_FD_SVC, &fdc_dev, DBG_PCFORMAT2 "Cancel Service\n", DBG_PC, time); + sim_debug(DBG_FD_SVC, &fdc_dev, DBG_PCFORMAT2 "Cancel Service\n", DBG_PC); return sim_cancel(uptr); } diff --git a/PDQ-3/pdq3_sys.c b/PDQ-3/pdq3_sys.c index 7962da09..8919d4c8 100644 --- a/PDQ-3/pdq3_sys.c +++ b/PDQ-3/pdq3_sys.c @@ -155,7 +155,7 @@ void pdq3_fprint_addr (FILE *st, DEVICE *dptr, t_addr addr) return; } -t_addr pdq3_parse_addr (DEVICE *dptr, char *cptr, char **tptr) +t_addr pdq3_parse_addr (DEVICE *dptr, const char *cptr, const char **tptr) { t_addr seg, off; if (cptr[0] == '#') { @@ -207,13 +207,13 @@ static t_stat pdq3_cmd_exstack(int32 arg, char *buf) static t_stat pdq3_cmd_exmscw(int32 arg, char *buf) { - char* next; + const char* next; return dbg_dump_mscw(stdout, buf[0] ? pdq3_parse_addr(&cpu_dev, buf, &next) : reg_mp); } static t_stat pdq3_cmd_extib(int32 arg, char *buf) { - char* next; + const char* next; return dbg_dump_tib(stdout, buf[0] ? pdq3_parse_addr(&cpu_dev, buf, &next) : reg_ctp); } @@ -222,7 +222,7 @@ static t_stat pdq3_cmd_exseg(int32 arg, char *buf) t_stat rc; uint16 nsegs; uint16 segnum, segptr; - char* next; + const char* next; FILE* fd = stdout; /* XXX */ if (reg_ssv < 0x2030 || reg_ssv > 0xf000) { diff --git a/doc/simh.doc b/doc/simh.doc index ca7c50abe82c6c1dc12fe06c9ca2346fdb1e0ad3..bf282b223126d47b6f348652cf563fec62a60551 100644 GIT binary patch delta 35364 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 delta 30607 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 bkbn^1^8SG}gL$WBEki9s?9jgYvC97eUx5a{ diff --git a/scp.c b/scp.c index 50cb21a5..4c0d77f1 100644 --- a/scp.c +++ b/scp.c @@ -347,7 +347,7 @@ char* (*sim_vm_read) (char *ptr, int32 size, FILE *stream) = NULL; void (*sim_vm_post) (t_bool from_scp) = NULL; CTAB *sim_vm_cmd = NULL; void (*sim_vm_fprint_addr) (FILE *st, DEVICE *dptr, t_addr addr) = NULL; -t_addr (*sim_vm_parse_addr) (DEVICE *dptr, char *cptr, char **tptr) = NULL; +t_addr (*sim_vm_parse_addr) (DEVICE *dptr, const char *cptr, const char **tptr) = NULL; t_value (*sim_vm_pc_value) (void) = NULL; t_bool (*sim_vm_is_subroutine_call) (t_addr **ret_addrs) = NULL; t_bool (*sim_vm_fprint_stopped) (FILE *st, t_stat reason) = NULL; @@ -2111,8 +2111,8 @@ return SCPE_EXIT; /* Used when sorting a list of command names */ static int _cmd_name_compare (const void *pa, const void *pb) { -CTAB **a = (CTAB **)pa; -CTAB **b = (CTAB **)pb; +CTAB * const *a = (CTAB * const *)pa; +CTAB * const *b = (CTAB * const *)pb; return strcmp((*a)->name, (*b)->name); } @@ -3306,7 +3306,7 @@ else { } else { /* not reg, check for memory */ if (sim_dfdev && sim_vm_parse_addr) /* get addr */ - addr = sim_vm_parse_addr (sim_dfdev, (char *)gbuf, (char **)&gptr); + addr = sim_vm_parse_addr (sim_dfdev, gbuf, &gptr); else addr = (t_addr) strtotv (gbuf, &gptr, sim_dfdev->dradix); if (gbuf == gptr) /* error? */ return SCPE_NXREG; @@ -5974,7 +5974,7 @@ if ((flag == RU_RUN) || (flag == RU_GO)) { /* run or go */ if (*cptr != 0) /* should be end */ return SCPE_2MARG; if (sim_vm_parse_addr) /* address parser? */ - pcv = sim_vm_parse_addr (sim_dflt_dev, gbuf, (char **)&tptr); + pcv = sim_vm_parse_addr (sim_dflt_dev, gbuf, &tptr); else pcv = strtotv (gbuf, &tptr, sim_PC->radix);/* parse PC */ if ((tptr == gbuf) || (*tptr != 0) || /* error? */ (pcv > width_mask[sim_PC->width])) @@ -6643,7 +6643,8 @@ t_stat dep_reg (int32 flag, char *cptr, REG *rptr, uint32 idx) t_stat r; t_value val, mask; int32 rdx; -char *tptr, gbuf[CBUFSIZE]; +const char *tptr; +char gbuf[CBUFSIZE]; if ((cptr == NULL) || (rptr == NULL)) return SCPE_IERR; @@ -7283,7 +7284,7 @@ else { } else { if (dptr && sim_vm_parse_addr) /* get low */ - *lo = sim_vm_parse_addr (dptr, (char *)cptr, (char **)&tptr); + *lo = sim_vm_parse_addr (dptr, cptr, &tptr); else *lo = (t_addr) strtotv (cptr, &tptr, rdx); if (cptr == tptr) /* error? */ @@ -7291,7 +7292,7 @@ else { if ((*tptr == '-') || (*tptr == ':')) { /* range? */ cptr = tptr + 1; if (dptr && sim_vm_parse_addr) /* get high */ - *hi = sim_vm_parse_addr (dptr, (char *)cptr, (char **)&tptr); + *hi = sim_vm_parse_addr (dptr, cptr, &tptr); else *hi = (t_addr) strtotv (cptr, &tptr, rdx); if (cptr == tptr) return NULL; @@ -7938,7 +7939,7 @@ for (logop = cmpop = -1; (c = *cptr++); ) { /* loop thru clauses */ logval = strtotv (cptr, &tptr, radix); if (cptr == tptr) return NULL; - cptr = (char *)tptr; + cptr = tptr; } else if ((sptr = strchr (cmpstr, c))) { /* check for boolop */ cmpop = (int32)(sptr - cmpstr); @@ -7949,7 +7950,7 @@ for (logop = cmpop = -1; (c = *cptr++); ) { /* loop thru clauses */ cmpval = strtotv (cptr, &tptr, radix); if (cptr == tptr) return NULL; - cptr = (char *)tptr; + cptr = tptr; } else return NULL; } /* end for */ @@ -8152,10 +8153,10 @@ int32 nodigit; t_value val; uint32 c, digit; -*endptr = (char *)inptr; /* assume fails */ +*endptr = inptr; /* assume fails */ if ((radix < 2) || (radix > 36)) return 0; -while (sim_isspace (*inptr)) /* bypass white space */ +while (sim_isspace (*inptr)) /* bypass white space */ inptr++; val = 0; nodigit = 1; @@ -8174,7 +8175,7 @@ for (c = *inptr; sim_isalnum(c); c = *++inptr) { /* loop through char */ } if (nodigit) /* no digits? */ return 0; -*endptr = (char *)inptr; /* result pointer */ +*endptr = inptr; /* result pointer */ return val; } @@ -9021,7 +9022,7 @@ return SCPE_OK; /* Set expect */ -t_stat sim_set_expect (EXPECT *exp, char *cptr) +t_stat sim_set_expect (EXPECT *exp, const char *cptr) { char gbuf[CBUFSIZE], *tptr; const char *c1ptr; @@ -9035,7 +9036,7 @@ if (*cptr == '[') { cnt = (int32) strtotv (cptr + 1, &c1ptr, 10); if ((cptr == c1ptr) || (*c1ptr != ']')) return sim_messagef (SCPE_ARG, "Invalid Repeat count specification\n"); - cptr = (char *)(c1ptr + 1); + cptr = c1ptr + 1; while (sim_isspace(*cptr)) ++cptr; } @@ -9055,7 +9056,7 @@ return sim_exp_set (exp, gbuf, cnt, (after ? after : exp->after), sim_switches, /* Clear expect */ -t_stat sim_set_noexpect (EXPECT *exp, char *cptr) +t_stat sim_set_noexpect (EXPECT *exp, const char *cptr) { char gbuf[CBUFSIZE]; @@ -9136,7 +9137,7 @@ return SCPE_OK; /* Set/Add an expect rule */ -t_stat sim_exp_set (EXPECT *exp, const char *match, int32 cnt, uint32 after, int32 switches, char *act) +t_stat sim_exp_set (EXPECT *exp, const char *match, int32 cnt, uint32 after, int32 switches, const char *act) { EXPTAB *ep; uint8 *match_buf; @@ -9179,7 +9180,7 @@ else { free (match_buf); return sim_messagef (SCPE_ARG, "Case independed matching is only valid for RegEx expect rules\n"); } - sim_data_trace(exp->dptr, exp->dptr->units, (uint8 *)match, "", strlen(match)+1, "Expect Match String", exp->dbit); + sim_data_trace(exp->dptr, exp->dptr->units, (const uint8 *)match, "", strlen(match)+1, "Expect Match String", exp->dbit); if (SCPE_OK != sim_decode_quoted_string (match, match_buf, &match_size)) { free (match_buf); return sim_messagef (SCPE_ARG, "Invalid quoted string\n"); @@ -9215,7 +9216,7 @@ if (switches & EXP_TYP_REGEX) { match_buf = NULL; } else { - sim_data_trace(exp->dptr, exp->dptr->units, (uint8 *)match, "", strlen(match)+1, "Expect Match String", exp->dbit); + sim_data_trace(exp->dptr, exp->dptr->units, (const uint8 *)match, "", strlen(match)+1, "Expect Match String", exp->dbit); sim_decode_quoted_string (match, match_buf, &match_size); ep->match = match_buf; ep->size = match_size; diff --git a/scp.h b/scp.h index aa732ceb..44e0bf4f 100644 --- a/scp.h +++ b/scp.h @@ -183,9 +183,9 @@ t_stat sim_send_input (SEND *snd, uint8 *data, size_t size, uint32 after, uint32 t_stat sim_show_send_input (FILE *st, SEND *snd); t_bool sim_send_poll_data (SEND *snd, t_stat *stat); t_stat sim_send_clear (SEND *snd); -t_stat sim_set_expect (EXPECT *exp, char *cptr); -t_stat sim_set_noexpect (EXPECT *exp, char *cptr); -t_stat sim_exp_set (EXPECT *exp, const char *match, int32 cnt, uint32 after, int32 switches, char *act); +t_stat sim_set_expect (EXPECT *exp, const char *cptr); +t_stat sim_set_noexpect (EXPECT *exp, const char *cptr); +t_stat sim_exp_set (EXPECT *exp, const char *match, int32 cnt, uint32 after, int32 switches, const char *act); t_stat sim_exp_clr (EXPECT *exp, const char *match); t_stat sim_exp_clrall (EXPECT *exp); t_stat sim_exp_show (FILE *st, EXPECT *exp, const char *match); @@ -282,7 +282,7 @@ extern char* (*sim_vm_read) (char *ptr, int32 size, FILE *stream); extern void (*sim_vm_post) (t_bool from_scp); extern CTAB *sim_vm_cmd; extern void (*sim_vm_fprint_addr) (FILE *st, DEVICE *dptr, t_addr addr); -extern t_addr (*sim_vm_parse_addr) (DEVICE *dptr, char *cptr, char **tptr); +extern t_addr (*sim_vm_parse_addr) (DEVICE *dptr, const char *cptr, const char **tptr); extern t_bool (*sim_vm_fprint_stopped) (FILE *st, t_stat reason); extern t_value (*sim_vm_pc_value) (void); extern t_bool (*sim_vm_is_subroutine_call) (t_addr **ret_addrs); diff --git a/sim_serial.c b/sim_serial.c index bb184e65..80e712b1 100644 --- a/sim_serial.c +++ b/sim_serial.c @@ -222,8 +222,8 @@ return; /* Used when sorting a list of serial port names */ static int _serial_name_compare (const void *pa, const void *pb) { -SERIAL_LIST *a = (SERIAL_LIST *)pa; -SERIAL_LIST *b = (SERIAL_LIST *)pb; +const SERIAL_LIST *a = (const SERIAL_LIST *)pa; +const SERIAL_LIST *b = (const SERIAL_LIST *)pb; return strcmp(a->name, b->name); } diff --git a/sim_sock.c b/sim_sock.c index 04263ba5..84b58fa3 100644 --- a/sim_sock.c +++ b/sim_sock.c @@ -384,7 +384,7 @@ static int WSAAPI s_getnameinfo (const struct sockaddr *sa, socklen_t salen, { struct hostent *he; struct servent *se = NULL; -struct sockaddr_in *sin = (struct sockaddr_in *)sa; +const struct sockaddr_in *sin = (const struct sockaddr_in *)sa; if (sin->sin_family != PF_INET) return EAI_FAMILY; @@ -416,7 +416,7 @@ if ((host) && (hostlen > 0)) { if (flags & NI_NUMERICHOST) he = NULL; else - he = gethostbyaddr((char *)&sin->sin_addr, 4, AF_INET); + he = gethostbyaddr((const char *)&sin->sin_addr, 4, AF_INET); if (he) { if (hostlen < strlen(he->h_name)+1) return EAI_OVERFLOW; diff --git a/sim_tmxr.c b/sim_tmxr.c index 713cf008..49b8d9bf 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -4387,10 +4387,12 @@ return SCPE_OK; If an error occurs, the original line order is not disturbed. */ -t_stat tmxr_set_lnorder (UNIT *uptr, int32 val, char *cptr, void *desc) +t_stat tmxr_set_lnorder (UNIT *uptr, int32 val, char *carg, void *desc) { TMXR *mp = (TMXR *) desc; +char *tbuf; char *tptr; +const char *cptr; t_addr low, high, max = (t_addr) mp->lines - 1; int32 *list; t_bool *set; @@ -4400,7 +4402,7 @@ t_stat result = SCPE_OK; if (mp->lnorder == NULL) /* line connection order undefined? */ return SCPE_NXPAR; /* "Non-existent parameter" error */ -else if ((cptr == NULL) || (*cptr == '\0')) /* line range not supplied? */ +else if ((carg == NULL) || (*carg == '\0')) /* line range not supplied? */ return SCPE_MISVAL; /* "Missing value" error */ list = (int32 *) calloc (mp->lines, sizeof (int32)); /* allocate new line order array */ @@ -4415,12 +4417,15 @@ if (set == NULL) { /* allocation failed? */ return SCPE_MEM; /* report it */ } -tptr = cptr + strlen (cptr); /* append a semicolon */ +tbuf = (char *) calloc (strlen(carg)+2, sizeof(*carg)); +strcpy (tbuf, carg); +tptr = tbuf + strlen (tbuf); /* append a semicolon */ *tptr++ = ';'; /* to the command string */ *tptr = '\0'; /* to make parsing easier for get_range */ +cptr = tbuf; while (*cptr) { /* parse command string */ - cptr = (char *)get_range (NULL, cptr, &low, &high, 10, max, ';');/* get a line range */ + cptr = get_range (NULL, cptr, &low, &high, 10, max, ';');/* get a line range */ if (cptr == NULL) { /* parsing error? */ result = SCPE_ARG; /* "Invalid argument" error */ @@ -4460,6 +4465,7 @@ if (result == SCPE_OK) { /* assignment successful free (list); /* free list allocation */ free (set); /* free set allocation */ +free (tbuf); /* free arg copy with ; */ return result; }