SCP: general const cleanups and const change to sim_vm_parse_addr.

This commit is contained in:
Mark Pizzolato 2016-01-24 08:27:08 -08:00
parent 80595a532f
commit d8f2647f93
9 changed files with 48 additions and 40 deletions

View file

@ -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++;

View file

@ -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);
}

View file

@ -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) {

Binary file not shown.

39
scp.c
View file

@ -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;

8
scp.h
View file

@ -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);

View file

@ -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);
}

View file

@ -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;

View file

@ -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;
}