SCP: Support output formatting for long DEVICE and UNIT names
This extends fe4a2a28b
to include support for long unit names as well.
This commit is contained in:
parent
e75b2f29dc
commit
6187b0519a
1 changed files with 101 additions and 70 deletions
63
scp.c
63
scp.c
|
@ -5821,14 +5821,16 @@ if ((dptr = find_dev (gbuf))) { /* device match? */
|
||||||
lvl = MTAB_VDV; /* device match */
|
lvl = MTAB_VDV; /* device match */
|
||||||
GET_SWITCHES (cptr); /* get more switches */
|
GET_SWITCHES (cptr); /* get more switches */
|
||||||
}
|
}
|
||||||
else if ((dptr = find_unit (gbuf, &uptr))) { /* unit match? */
|
else {
|
||||||
|
if ((dptr = find_unit (gbuf, &uptr))) { /* unit match? */
|
||||||
if (uptr == NULL) /* invalid unit */
|
if (uptr == NULL) /* invalid unit */
|
||||||
return SCPE_NXUN;
|
return SCPE_NXUN;
|
||||||
ctbr = set_unit_tab; /* global table */
|
ctbr = set_unit_tab; /* global table */
|
||||||
lvl = MTAB_VUN; /* unit match */
|
lvl = MTAB_VUN; /* unit match */
|
||||||
GET_SWITCHES (cptr); /* get more switches */
|
GET_SWITCHES (cptr); /* get more switches */
|
||||||
}
|
}
|
||||||
else if ((gcmdp = find_ctab (set_glob_tab, gbuf))) { /* global? */
|
else {
|
||||||
|
if ((gcmdp = find_ctab (set_glob_tab, gbuf))) { /* global? */
|
||||||
GET_SWITCHES (cptr); /* get more switches */
|
GET_SWITCHES (cptr); /* get more switches */
|
||||||
return gcmdp->action (gcmdp->arg, cptr); /* do the rest */
|
return gcmdp->action (gcmdp->arg, cptr); /* do the rest */
|
||||||
}
|
}
|
||||||
|
@ -5851,7 +5853,11 @@ else {
|
||||||
lvl = MTAB_VDV; /* device match */
|
lvl = MTAB_VDV; /* device match */
|
||||||
uptr = dptr->units; /* first unit */
|
uptr = dptr->units; /* first unit */
|
||||||
}
|
}
|
||||||
if ((*cptr == 0) || (*cptr == ';') || (*cptr == '#')) /* must be more */
|
}
|
||||||
|
}
|
||||||
|
if ((*cptr == 0) || /* must be more */
|
||||||
|
(*cptr == ';') ||
|
||||||
|
(*cptr == '#'))
|
||||||
return SCPE_2FARG;
|
return SCPE_2FARG;
|
||||||
GET_SWITCHES (cptr); /* get more switches */
|
GET_SWITCHES (cptr); /* get more switches */
|
||||||
|
|
||||||
|
@ -6121,7 +6127,8 @@ if ((dptr = find_dev (gbuf))) { /* device match? */
|
||||||
lvl = MTAB_VDV; /* device match */
|
lvl = MTAB_VDV; /* device match */
|
||||||
GET_SWITCHES (cptr); /* get more switches */
|
GET_SWITCHES (cptr); /* get more switches */
|
||||||
}
|
}
|
||||||
else if ((dptr = find_unit (gbuf, &uptr))) { /* unit match? */
|
else {
|
||||||
|
if ((dptr = find_unit (gbuf, &uptr))) { /* unit match? */
|
||||||
if (uptr == NULL) /* invalid unit */
|
if (uptr == NULL) /* invalid unit */
|
||||||
return sim_messagef (SCPE_NXUN, "Non-existent unit: %s\n", gbuf);
|
return sim_messagef (SCPE_NXUN, "Non-existent unit: %s\n", gbuf);
|
||||||
if (uptr->flags & UNIT_DIS) /* disabled? */
|
if (uptr->flags & UNIT_DIS) /* disabled? */
|
||||||
|
@ -6130,7 +6137,8 @@ else if ((dptr = find_unit (gbuf, &uptr))) { /* unit match? */
|
||||||
lvl = MTAB_VUN; /* unit match */
|
lvl = MTAB_VUN; /* unit match */
|
||||||
GET_SWITCHES (cptr); /* get more switches */
|
GET_SWITCHES (cptr); /* get more switches */
|
||||||
}
|
}
|
||||||
else if ((shptr = find_shtab (show_glob_tab, gbuf))) { /* global? */
|
else {
|
||||||
|
if ((shptr = find_shtab (show_glob_tab, gbuf))) {/* global? */
|
||||||
GET_SWITCHES (cptr); /* get more switches */
|
GET_SWITCHES (cptr); /* get more switches */
|
||||||
return shptr->action (ofile, NULL, NULL, shptr->arg, cptr);
|
return shptr->action (ofile, NULL, NULL, shptr->arg, cptr);
|
||||||
}
|
}
|
||||||
|
@ -6158,6 +6166,8 @@ else {
|
||||||
return sim_messagef (SCPE_NXDEV, "Non-existent device: %s\n", gbuf);/* no match */
|
return sim_messagef (SCPE_NXDEV, "Non-existent device: %s\n", gbuf);/* no match */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((*cptr == 0) || (*cptr == ';') || (*cptr == '#')) { /* now eol? */
|
if ((*cptr == 0) || (*cptr == ';') || (*cptr == '#')) { /* now eol? */
|
||||||
return (lvl == MTAB_VDV)?
|
return (lvl == MTAB_VDV)?
|
||||||
|
@ -6215,8 +6225,9 @@ return NULL;
|
||||||
/* Show device and unit */
|
/* Show device and unit */
|
||||||
|
|
||||||
static size_t dev_name_len;
|
static size_t dev_name_len;
|
||||||
|
static size_t unit_name_len;
|
||||||
|
|
||||||
const char *_sim_name_prefix (const char *name, const char *prefix)
|
const char *_sim_name_prefix (const char *name, const char *prefix, size_t max_name_len)
|
||||||
{
|
{
|
||||||
static char nambuf[CBUFSIZE];
|
static char nambuf[CBUFSIZE];
|
||||||
size_t prefix_len = prefix ? strlen (prefix) : 0;
|
size_t prefix_len = prefix ? strlen (prefix) : 0;
|
||||||
|
@ -6224,20 +6235,20 @@ size_t name_len = name ? strlen (name) : 0;
|
||||||
size_t string_len = prefix_len + name_len;
|
size_t string_len = prefix_len + name_len;
|
||||||
|
|
||||||
snprintf (nambuf, sizeof (nambuf), "%s%*s", prefix ? prefix : "",
|
snprintf (nambuf, sizeof (nambuf), "%s%*s", prefix ? prefix : "",
|
||||||
((string_len <= 6) && (dev_name_len <= 6)) ? -((int)(8 - prefix_len)) :
|
((string_len <= 6) && (max_name_len <= 6)) ? -((int)(8 - prefix_len)) :
|
||||||
-((int)(dev_name_len + 2)),
|
-((int)(max_name_len + 2)),
|
||||||
name ? name : "");
|
name ? name : "");
|
||||||
return nambuf;
|
return nambuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *_sim_dname_prefix (DEVICE *dptr, const char *prefix)
|
const char *_sim_dname_prefix (DEVICE *dptr, const char *prefix)
|
||||||
{
|
{
|
||||||
return _sim_name_prefix (sim_dname (dptr), prefix);
|
return _sim_name_prefix (sim_dname (dptr), prefix, dev_name_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *_sim_uname_prefix (UNIT *uptr, const char *prefix)
|
const char *_sim_uname_prefix (UNIT *uptr, const char *prefix)
|
||||||
{
|
{
|
||||||
return _sim_name_prefix (sim_uname (uptr), prefix);
|
return _sim_name_prefix (sim_uname (uptr), prefix, unit_name_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *_sim_dname (DEVICE *dptr)
|
const char *_sim_dname (DEVICE *dptr)
|
||||||
|
@ -6255,12 +6266,32 @@ const char *_sim_dname_space (void)
|
||||||
return _sim_dname_prefix (NULL, "");
|
return _sim_dname_prefix (NULL, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _set_dname_len (DEVICE *dptr)
|
||||||
|
{
|
||||||
|
uint32 i;
|
||||||
|
|
||||||
|
if (dev_name_len < strlen (dptr->name))
|
||||||
|
dev_name_len = strlen (dptr->name);
|
||||||
|
for (i = 0; i < dptr->numunits; i++) {
|
||||||
|
UNIT *uptr = &dptr->units[i];
|
||||||
|
|
||||||
|
if (((uptr->flags & UNIT_DIS) == 0) &&
|
||||||
|
(unit_name_len < strlen (sim_uname (uptr))))
|
||||||
|
unit_name_len = strlen (sim_uname (uptr));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
t_stat show_device (FILE *st, DEVICE *dptr, int32 flag)
|
t_stat show_device (FILE *st, DEVICE *dptr, int32 flag)
|
||||||
{
|
{
|
||||||
uint32 j, udbl, ucnt;
|
uint32 j, udbl, ucnt;
|
||||||
UNIT *uptr;
|
UNIT *uptr;
|
||||||
int32 toks = -1;
|
int32 toks = -1;
|
||||||
|
t_bool did_set_dname_len = FALSE;
|
||||||
|
|
||||||
|
if (dev_name_len == 0) {
|
||||||
|
_set_dname_len (dptr);
|
||||||
|
did_set_dname_len = TRUE;
|
||||||
|
}
|
||||||
fprintf (st, "%s", _sim_dname (dptr)); /* print dev name */
|
fprintf (st, "%s", _sim_dname (dptr)); /* print dev name */
|
||||||
if ((flag == 2) && dptr->description) {
|
if ((flag == 2) && dptr->description) {
|
||||||
fprintf (st, "%s\n", dptr->description(dptr));
|
fprintf (st, "%s\n", dptr->description(dptr));
|
||||||
|
@ -6309,6 +6340,8 @@ for (j = 0; j < dptr->numunits; j++) { /* loop thru units */
|
||||||
if ((uptr->flags & UNIT_DIS) == 0)
|
if ((uptr->flags & UNIT_DIS) == 0)
|
||||||
show_unit (st, dptr, uptr, ucnt + udbl);
|
show_unit (st, dptr, uptr, ucnt + udbl);
|
||||||
}
|
}
|
||||||
|
if (did_set_dname_len)
|
||||||
|
dev_name_len = unit_name_len = 0;
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6791,24 +6824,22 @@ t_bool only_enabled = (sim_switches & SWMASK ('E'));
|
||||||
if (cptr && (*cptr != 0))
|
if (cptr && (*cptr != 0))
|
||||||
return SCPE_2MARG;
|
return SCPE_2MARG;
|
||||||
fprintf (st, "%s simulator configuration%s\n\n", sim_name, only_enabled ? " (enabled devices)" : "");
|
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++)
|
for (i = dev_name_len = unit_name_len = 0; (dptr = sim_devices[i]) != NULL; i++)
|
||||||
if (!only_enabled || !qdisable (dptr))
|
if (!only_enabled || !qdisable (dptr))
|
||||||
if (dev_name_len < strlen (dptr->name))
|
_set_dname_len (dptr);
|
||||||
dev_name_len = strlen (dptr->name);
|
|
||||||
for (i = 0; (dptr = sim_devices[i]) != NULL; i++)
|
for (i = 0; (dptr = sim_devices[i]) != NULL; i++)
|
||||||
if (!only_enabled || !qdisable (dptr))
|
if (!only_enabled || !qdisable (dptr))
|
||||||
show_device (st, dptr, flag);
|
show_device (st, dptr, flag);
|
||||||
if (sim_switches & SWMASK ('I')) {
|
if (sim_switches & SWMASK ('I')) {
|
||||||
for (i = dev_name_len = 0; sim_internal_device_count && (dptr = sim_internal_devices[i]); ++i)
|
for (i = dev_name_len = 0; sim_internal_device_count && (dptr = sim_internal_devices[i]); ++i)
|
||||||
if (!only_enabled || !qdisable (dptr))
|
if (!only_enabled || !qdisable (dptr))
|
||||||
if (dev_name_len < strlen (dptr->name))
|
_set_dname_len (dptr);
|
||||||
dev_name_len = strlen (dptr->name);
|
|
||||||
fprintf (st, "\nInternal Devices%s\n\n", only_enabled ? " (enabled devices)" : "");
|
fprintf (st, "\nInternal Devices%s\n\n", only_enabled ? " (enabled devices)" : "");
|
||||||
for (i = 0; sim_internal_device_count && (dptr = sim_internal_devices[i]); ++i)
|
for (i = 0; sim_internal_device_count && (dptr = sim_internal_devices[i]); ++i)
|
||||||
if (!only_enabled || !qdisable (dptr))
|
if (!only_enabled || !qdisable (dptr))
|
||||||
show_device (st, dptr, flag);
|
show_device (st, dptr, flag);
|
||||||
}
|
}
|
||||||
dev_name_len = 0;
|
dev_name_len = unit_name_len = 0;
|
||||||
return SCPE_OK;
|
return SCPE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue