dosutils: align Novell-compatible tests and stage NCOPY work

Update the DOS utilities and test suite with the current Novell comparison
state.

Validated/updated tool behavior:
- improve CREATOR output by showing Novell-style attribute and rights masks
- extend FLAGDIR handling with old NCP22 directory attribute read/write
  fallback paths
- expand NDIR Novell-style formatting, filtering, /SUB handling, date output,
  DI/RI attribute display and richer metadata collection
- adjust REVOKE output/grammar, recursive /SUBDIRECTORIES behavior and trustee
  update/delete paths to better match Novell tools
- adjust SLIST header/output behavior for logged-in and logged-out cases
- update README status to reflect the currently green/tested tools

Test-suite changes:
- add/refresh Novell comparison tests for CREATOR, NDIR, REVOKE and SLIST
- update NCOPY tests and collection scripts for the current investigation state
- refresh per-tool README files and top-level test documentation
- keep MAP documented as still separately open

NCOPY:
- add the current NCOPY implementation and experimental NCP74/server-side-copy
  scaffolding
- build ncopy.c so it stays compile-tested
- keep NCOPY disabled in the NET multicall dispatch for now because the
  server-side-copy/open-handle path is still unsafe and needs further analysis

Build:
- include ncopy.c in the DOS utility build
- drop the temporary MARS_DOSUTILS_VERSION define wiring from CMake
This commit is contained in:
Mario Fetka
2026-05-29 07:40:04 +02:00
parent 5da600c2a5
commit 4a952b4c4c
36 changed files with 5873 additions and 943 deletions

18
slist.c
View File

@@ -81,13 +81,6 @@ int func_slist(int argc, char *argv[], int mode)
upstr(pattern);
if (!explicit_server) {
fprintf(stdout, "%-48sNetwork Node Address Status\n",
"Known NetWare File Servers");
fprintf(stdout, "%-48s------- ------------ ------\n",
"--------------------------");
}
while ((result = ncp_17_37(last_id, NCP_BINDERY_FSERVER,
pattern, &obj)) == 0) {
NW_PROPERTY prop;
@@ -95,12 +88,15 @@ int func_slist(int argc, char *argv[], int mode)
found++;
last_id = obj.object_id;
if (explicit_server && found == 1) {
fprintf(stdout, "%-47s", obj.object_name);
} else {
fprintf(stdout, "%-47s", obj.object_name);
if (found == 1) {
fprintf(stdout, "%-48sNetwork Node Address Status\n",
"Known NetWare File Servers");
fprintf(stdout, "%-48s------- ------------ ------\n",
"--------------------------");
}
fprintf(stdout, "%-47s", obj.object_name);
if (!ncp_17_3d(NCP_BINDERY_FSERVER, obj.object_name,
1, "NET_ADDRESS", &prop)) {
print_net_node_status(prop.value, found == 1);