Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion src/vmsdcl/dcl_cmd_show.c
Original file line number Diff line number Diff line change
Expand Up @@ -2090,7 +2090,19 @@ static int cmd_show_device(struct dcl_command *cmd)
info.devnam[VMS_DEVNAM_SIZE - 1] = '\0';
if (info.devclass == DC$_DISK)
continue;
show_device_row(&info, &rows);
/*
* /FULL applies to a bare listing the same way it does to the disk
* section above (and to a NAMED terminal at line ~2038): each device
* renders its full per-device block, not the brief one-line row. The
* previous code called show_device_row() here unconditionally, so
* `SHOW DEVICE/FULL` with a terminal-only table produced output
* identical to bare `SHOW DEVICE` -- the "/FULL does nothing" the
* operator observed (vms-ddc). Mirror the disk loop and the named path.
*/
if (full)
show_device_terminal_full(&info);
else
show_device_row(&info, &rows);
}

/*
Expand Down
12 changes: 12 additions & 0 deletions tests/qemu/lib/dcl_acceptance_battery.sh
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,18 @@ run_dcl_acceptance_battery() {
must_not_have "$SEG" 'Default buffer size' "SHOW DEVICE/FULL OPA0: [vms-bed]: no fabricated Default buffer size (info->width is column width, not buffer size -- INV-6 honest omission)"
negctl "$SEG" 'SHOW DEVICE' "SHOW DEVICE/FULL OPA0:"

# --- SHOW DEVICE/FULL (BARE, vms-ddc: the operator hit "/FULL does nothing")
# The named path above already honored /FULL; the BARE listing did NOT -- its
# terminal loop called the brief show_device_row() regardless of /FULL, so a
# bare `SHOW DEVICE/FULL` printed the same one-line rows as `SHOW DEVICE`.
# Fixed to render each device's full block (mirroring the disk loop + the
# named path). Assert the console's FULL block appears in the bare listing.
# OPA0: exists on every arch, so this assertion is substrate-independent.
run_cmd 'SHOW DEVICE/FULL'
must_have "$SEG" 'Terminal OPA0' "SHOW DEVICE/FULL [vms-ddc]: the BARE /FULL listing renders the terminal FULL block (was the brief row -- the '/FULL does nothing' bug)"
must_have "$SEG" 'Owner process' "SHOW DEVICE/FULL [vms-ddc]: bare /FULL shows the Owner process block, proving /FULL is applied in the bare listing, not only the named path"
negctl "$SEG" 'SHOW DEVICE' "SHOW DEVICE/FULL (bare)"

# --- F$GETDVI reads the SAME real executive device table (vms-050) -------
# F$GETDVI used to fabricate: EXISTS=TRUE for EVERY name, VOLNAM guessed from
# a name substring ("OVMXSYS"/"VOLUME"), DEVCLASS/DEVTYPE guessed the same
Expand Down
Loading