From 88ae60a11ec9a023ecf29f600a175b04fc2f0920 Mon Sep 17 00:00:00 2001 From: Richard Cornwell Date: Mon, 29 Jun 2020 22:11:50 -0400 Subject: [PATCH] SCP: Updated to current. --- scp.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++-------- sim_tmxr.c | 13 ++++++---- 2 files changed, 73 insertions(+), 16 deletions(-) diff --git a/scp.c b/scp.c index 301c576..21f55e1 100644 --- a/scp.c +++ b/scp.c @@ -5871,22 +5871,63 @@ return NULL; /* Show device and unit */ +static size_t dev_name_len; + +const char *_sim_name_prefix (const char *name, const char *prefix) +{ +static char nambuf[CBUFSIZE]; +size_t prefix_len = prefix ? strlen (prefix) : 0; +size_t name_len = name ? strlen (name) : 0; +size_t string_len = prefix_len + name_len; + +snprintf (nambuf, sizeof (nambuf), "%s%*s", prefix ? prefix : "", + ((string_len <= 6) && (dev_name_len <= 6)) ? -((int)(8 - prefix_len)) : + -((int)(dev_name_len + 2)), + name ? name : ""); +return nambuf; +} + +const char *_sim_dname_prefix (DEVICE *dptr, const char *prefix) +{ +return _sim_name_prefix (sim_dname (dptr), prefix); +} + +const char *_sim_uname_prefix (UNIT *uptr, const char *prefix) +{ +return _sim_name_prefix (sim_uname (uptr), prefix); +} + +const char *_sim_dname (DEVICE *dptr) +{ +return _sim_dname_prefix (dptr, ""); +} + +const char *_sim_uname (UNIT *uptr) +{ +return _sim_uname_prefix (uptr, ""); +} + +const char *_sim_dname_space () +{ +return _sim_dname_prefix (NULL, ""); +} + t_stat show_device (FILE *st, DEVICE *dptr, int32 flag) { uint32 j, udbl, ucnt; UNIT *uptr; -int32 toks = 0; +int32 toks = -1; -fprintf (st, "%s", sim_dname (dptr)); /* print dev name */ +fprintf (st, "%s", _sim_dname (dptr)); /* print dev name */ if ((flag == 2) && dptr->description) { - fprintf (st, "\t%s\n", dptr->description(dptr)); + fprintf (st, "%s\n", dptr->description(dptr)); } else { if ((sim_switches & SWMASK ('D')) && dptr->description) - fprintf (st, "\t%s\n", dptr->description(dptr)); + fprintf (st, "%s\n", dptr->description(dptr)); } if (qdisable (dptr)) { /* disabled? */ - fprintf (st, "\tdisabled\n"); + fprintf (st, "%s\n", "disabled"); return SCPE_OK; } for (j = ucnt = udbl = 0; j < dptr->numunits; j++) { /* count units */ @@ -5927,19 +5968,23 @@ return SCPE_OK; void fprint_sep (FILE *st, int32 *tokens) { -fprintf (st, (*tokens > 0) ? ", " : "\t"); +fprintf (st, "%s", (*tokens > 0) ? ", " : ((*tokens < 0) ? "" : _sim_dname_space ())); *tokens += 1; +if (*tokens == 0) + *tokens = 1; } t_stat show_unit (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag) { -int32 u = (int32)(uptr - dptr->units); -int32 toks = 0; +int32 toks = -1; if (flag > 1) - fprintf (st, " %s%d", sim_dname (dptr), u); -else if (flag < 0) - fprintf (st, "%s%d", sim_dname (dptr), u); + fprintf (st, "%s", _sim_uname_prefix (uptr, " ")); +else + if (flag < 0) + fprintf (st, "%s", _sim_uname (uptr)); + else + toks = 0; if (uptr->flags & UNIT_FIX) { fprint_sep (st, &toks); fprint_capac (st, dptr, uptr); @@ -6257,15 +6302,24 @@ t_bool only_enabled = (sim_switches & SWMASK ('E')); if (cptr && (*cptr != 0)) return SCPE_2MARG; fprintf (st, "%s simulator configuration%s\n\n", sim_name, only_enabled ? " (enabled devices)" : ""); +for (i = dev_name_len = 0; (dptr = sim_devices[i]) != NULL; i++) + if (!only_enabled || !qdisable (dptr)) + if (dev_name_len < strlen (dptr->name)) + dev_name_len = strlen (dptr->name); for (i = 0; (dptr = sim_devices[i]) != NULL; i++) if (!only_enabled || !qdisable (dptr)) show_device (st, dptr, flag); if (sim_switches & SWMASK ('I')) { + for (i = dev_name_len = 0; sim_internal_device_count && (dptr = sim_internal_devices[i]); ++i) + if (!only_enabled || !qdisable (dptr)) + if (dev_name_len < strlen (dptr->name)) + dev_name_len = strlen (dptr->name); fprintf (st, "\nInternal Devices%s\n\n", only_enabled ? " (enabled devices)" : ""); for (i = 0; sim_internal_device_count && (dptr = sim_internal_devices[i]); ++i) if (!only_enabled || !qdisable (dptr)) show_device (st, dptr, flag); } +dev_name_len = 0; return SCPE_OK; } diff --git a/sim_tmxr.c b/sim_tmxr.c index bbe9c3e..fdec75d 100644 --- a/sim_tmxr.c +++ b/sim_tmxr.c @@ -868,9 +868,10 @@ if (tptr == NULL) /* no more mem? */ return tptr; if (mp->port) /* copy port */ - sprintf (growstring(&tptr, 13 + strlen (mp->port)), "%s%s%s", mp->port, - mp->notelnet ? ";notelnet" : "", - mp->nomessage ? ";nomessage" : ""); + sprintf (growstring(&tptr, 33 + strlen (mp->port)), "%s%s", mp->port, + mp->notelnet ? ";notelnet" : + (mp->nomessage ? ";nomessage" : + "")); if (mp->logfiletmpl[0]) /* logfile info */ sprintf (growstring(&tptr, 7 + strlen (mp->logfiletmpl)), ",Log=%s", mp->logfiletmpl); if (mp->buffered) @@ -940,7 +941,7 @@ if (lp->destination || lp->port || lp->txlogname || (lp->conn == TMXR_LINE_DISAB if (lp->mp->packet != lp->packet) sprintf (growstring(&tptr, 8), ",Packet"); if (lp->port) - sprintf (growstring(&tptr, 12 + strlen (lp->port)), ",%s%s%s", lp->port, + sprintf (growstring(&tptr, 32 + strlen (lp->port)), ",%s%s%s", lp->port, ((lp->mp->notelnet != lp->notelnet) && (!lp->datagram)) ? (lp->notelnet ? ";notelnet" : ";telnet") : "", ((lp->mp->nomessage != lp->nomessage) && (!lp->datagram)) ? (lp->nomessage ? ";nomessage" : ";message") : ""); if (lp->destination) { @@ -2734,6 +2735,8 @@ for (i = 0; i < mp->lines; i++) { /* initialize lines */ if (lp->bpsfactor == 0.0) lp->bpsfactor = 1.0; } +notelnet = listennotelnet = mp->notelnet; +nomessage = listennomessage = mp->nomessage; mp->ring_sock = INVALID_SOCKET; free (mp->ring_ipad); mp->ring_ipad = NULL; @@ -2748,7 +2751,7 @@ while (*tptr) { memset(port, '\0', sizeof(port)); memset(option, '\0', sizeof(option)); memset(speed, '\0', sizeof(speed)); - nolog = notelnet = listennotelnet = nomessage = listennomessage = loopback = disabled = FALSE; + nolog = loopback = disabled = FALSE; datagram = mp->datagram; packet = mp->packet; if (mp->buffered)