dosutils: add RIGHTS and finish Novell-style display fixes

- add RIGHTS as a new multi-call DOS utility
- implement Client32 NCP87 effective-rights query helper
- map NCP effective-rights bits to Novell RIGHTS display order
- keep legacy directory-handle based rights lookup as fallback
- match Novell RIGHTS output for directories and files more closely
- remove hardcoded MARS/SYS and SYS display fallbacks from RIGHTS/FLAGDIR
- derive display prefixes from the active network drive where available
- adjust FLAGDIR output formatting to match Novell field alignment
- keep FLAG and SLIST unchanged after checking for hardcoded prefixes
This commit is contained in:
Mario Fetka
2026-05-24 11:20:07 +02:00
parent 456349088e
commit 9ab65e2f00
9 changed files with 682 additions and 13 deletions

View File

@@ -40,6 +40,7 @@ Still to validate or continue:
- Server listing through `SLIST`
- File attribute management through `FLAG`
- Directory attribute management through `FLAGDIR`
- Effective rights display through `RIGHTS`
- Optional mars_nwe debug control hooks
- Developer diagnostics through `TESTS`
@@ -63,6 +64,7 @@ The current command dispatcher includes these built-ins:
- `SLIST`
- `FLAG`
- `FLAGDIR`
- `RIGHTS`
- `DEBUG`
- `ECHO`
- `CD`
@@ -114,6 +116,7 @@ This path is currently used by:
- `FLAG`
- `FLAGDIR`
- `RIGHTS`
The old `Net_Call` / INT 21h requester path is kept as a fallback where appropriate, but Client32 is now preferred for the validated FLAG-family operations.
@@ -363,6 +366,30 @@ MARS/SYS:UDIR
`Private` is intentionally rejected for the current NetWare 386-style path.
### `RIGHTS`
Display effective NetWare rights for a file or directory.
Typical usage:
```text
RIGHTS [path]
```
Supported in this first version:
- directory paths
- file paths, using the parent directory rights for the first read-only implementation
- Novell-like display of the effective rights mask
Rights are shown in the traditional order:
```text
S R W C E M F A
Supervisor, Read, Write, Create, Erase, Modify, File scan, Access Control
```
### `DEBUG`
Set mars_nwe debug levels for selected server-side modules.