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

View File

@@ -1,19 +1,30 @@
# NDIR automated test
# NDIR automated compare test
Automated Novell-only baseline for `NPUBLIC\NDIR`.
Automated compare test for `NDIR`.
## Run
```text
SET LGNTPWD=dein-supervisor-passwort
F:
CD \
NDIRTSTA
```
Results:
`LGNTPWD` is required because the test switches to `NOPASSUSER` and then logs back in as `SUPERVISOR` through the maintainer-only `LOGIN /PWD:` path.
## Result layout
```text
F:\NDCMP\RUN.LOG
F:\NDCMP\SUMMARY.TXT
F:\NDCMP\OUT\*.OUT
F:\NDCMP\OUT\*.OUT Novell baseline via \NPUBLIC\NDIR
F:\NDCMP\PUBOUT\*.OUT PUBLIC implementation via \PUBLIC\NDIR
F:\NDCMP\COMPARE.LOG direct compare log
F:\NDCMP\SHORTOUT\*.OUT PUBLIC-only /SHORT helper output; not compared
F:\NDCMP\UNOV\*.OUT Novell NDIR as NOPASSUSER
F:\NDCMP\UPUB\*.OUT PUBLIC NDIR as NOPASSUSER
F:\NDCMP\UCOMP.LOG user-context compare log
F:\NDCMP\USHORT\*.OUT PUBLIC-only /SHORT helper output as NOPASSUSER
```
Optional pack:
@@ -48,9 +59,38 @@ F:\TNDIR
- `/DATES`
- `/RIGHTS`
- attributes via `NPUBLIC\FLAG`
- filters `/H`, `/RO`, `/SY`, `/A`, `/NOT H`, `/NOT RO`
- sorts `/SORT UN`, `/SORT SI`, `/SORT UP`
- filters `/H`, `/RO`, `/SY`, `/A`, `/NOT H`
- wildcards `*.TXT`, `*.DAT`
- `/FO`, `/DO`
- `/SUB`
- cleanup
- `/SUB` and `/SUB /RIGHTS` in the Novell-compatible compare set
- extended file/directory matrix under `F:\TNDIR\MAT`:
- files with Normal, Hidden, Read-only, System, Archive, DI/RI and mixed attributes
- directories with Normal, Hidden, System, Purge, DI/RI and mixed directory flags
- matrix checks for normal listing, `/DATES`, `/RIGHTS`, `/FO`, `/DO`, `/SUB`, filters and wildcards
- Public-only `/SHORT` output in `SHORTOUT` / `USHORT` is kept for diagnostics and is not compared against Novell
- missing-pattern and help output
- NOPASSUSER readback after GRANT matrix setup, including the extended `MAT` file/directory matrix
`NDIRZIP` cleans the generated `TNDIR` tree and `C:\NDIRTMP` helper directory after packaging.
## Notes on /SHORT
`/SHORT` is a MARS DOS tools helper option. Novell NDIR does not know this option,
so the test keeps `/SHORT` output in `SHORTOUT` and `USHORT` only. These files are
packaged for manual inspection but are not part of the byte-for-byte Novell compare.
Additional user/trustee matrix
------------------------------
The extended matrix also creates F:\TNDIR\USR with trustees for multiple
objects that exist in the default test environment:
- USER NOPASSUSER
- USER MARIO
- USER GUEST
- GROUP EVERYONE
The delayed NOPASSUSER phase reads the same tree through NPUBLIC and PUBLIC
NDIR. This gives more coverage for effective-rights output: direct user
trustees, group/EVERYONE trustees, unrelated user trustees, inherited rights,
and Supervisor-on-child cases.