From f10a81566d9e7f031f2c43e12789fa2ed4cb64ea Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Fri, 29 May 2026 18:51:37 +0200 Subject: [PATCH] docs: add TODO tracking file Add a top-level TODO.md for follow-up work that should not remain as scattered inline source comments. Document the current Check Console Privileges limitation, where console rights are mapped to supervisor equivalence for now, and track the need for a real console privilege map. Also record follow-ups for queue spool path case handling, direct NCP 17/4c test coverage, Q_UNIX_PRINT backend improvements, and deferred optional protocol work. Reference TODO.md from the main README. --- README.md | 2 ++ TODO.md | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 TODO.md diff --git a/README.md b/README.md index b1dc4a6..f58da0e 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ This repository is where that continuing integration and maintenance work now ha Although MARS_NWE still builds and runs on modern Linux systems, it remains an old codebase with rough edges, missing features, and bugs that still need attention. +Known follow-up work is tracked in [`TODO.md`](TODO.md). + ## About This Repository This repository was originally assembled to compare the differences between the more recent MARS_NWE versions, especially those not produced by the original author. Older versions going back to 0.96 were also imported to preserve development history and make it easier to track how the code changed over time. diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..a379de3 --- /dev/null +++ b/TODO.md @@ -0,0 +1,72 @@ +# TODO + +This file collects follow-up work that is known but intentionally not part of the current patches. It is meant for project-level items that are too broad or too low-priority to keep as inline source TODO comments. + +## Server / NCP compatibility + +### Console privilege model + +Current status: + +- `NCP 23/200 Check Console Privileges` is implemented as a protocol-compatible status check. +- For now, console privileges are mapped to the existing supervisor-equivalence state computed for the connection. +- Callers with supervisor equivalence get success; other callers get `0xc6` (`No Console Rights`). + +Follow-up: + +- Add a real console-operator privilege model instead of treating console rights as identical to supervisor equivalence. +- Decide where the console privilege map should live: + - a bindery property, + - a server configuration option, + - or a small explicit internal list similar to queue operator handling. +- Check how NetWare 3.x tools such as `PCONSOLE`, `SYSCON`, and console utilities expect console operators to be represented. +- Keep `NCP 23/200` as a completion-code-only endpoint; only the privilege source should change. + +### Queue spool path case handling + +Current status: + +- Queue job paths can still be rebuilt from DOS/bindery path spelling such as `SYS:SYSTEM/EPSON.QDR`. +- On a case-sensitive Unix filesystem this can differ from the existing directory, for example `system/epson.qdr`. + +Follow-up: + +- Resolve queue job file paths case-insensitively in the queue connection/path resolver, or use the queue object's already-resolved Unix spool directory instead of rebuilding it from the DOS path. +- Avoid creating duplicate directories that differ only by case. + +### NCP 17/4C test coverage + +Current status: + +- `NCP 17/4C List Relations of an Object` is implemented server-side. +- Existing DOS and Linux tools do not reliably trigger it for all useful set properties such as `GROUP_MEMBERS` and `GROUPS_I'M_IN`. + +Follow-up: + +- Add a small direct test utility to `mars-dosutils` / `NWTESTS` that sends `NCP 17/4C` directly. +- Suggested test cases: + - `TESTGRP1` type `0x0002`, property `GROUP_MEMBERS` + - `TESTGRP2` type `0x0002`, property `GROUP_MEMBERS` + - `MARIO` type `0x0001`, property `GROUPS_I'M_IN` + - `NOPASSUSER` type `0x0001`, property `GROUPS_I'M_IN` + - `GUEST` type `0x0001`, property `GROUPS_I'M_IN` + +## Printing / Queue backend + +### Q_UNIX_PRINT backend status + +Current status: + +- Queue metadata handling and the `Q_UNIX_PRINT` backend are intentionally separate. +- The backend can already call `/usr/bin/lp`, `lpr`, or a custom script. + +Follow-up: + +- Improve logging around queue job submission to the Unix print command. +- Capture and expose backend exit status where possible. +- Consider direct CUPS integration only if MARS_NWE needs CUPS job IDs, cancellation, or status polling. Do not add a hard CUPS dependency for basic queue compatibility. + +## Deferred / optional protocol work + +- Packet Burst support is still optional and currently not a priority for DOS tool compatibility. +- NDS fragger support remains out of scope unless a concrete client requires it.