docs: audit print spool endpoint stubs

This commit is contained in:
Mario Fetka
2026-06-02 15:42:43 +00:00
parent 6b1fe320db
commit db592162a5
3 changed files with 113 additions and 25 deletions

39
AI.md
View File

@@ -11,18 +11,18 @@ When the user says this is a new chat or asks to continue mars-nwe work, first
read this file before proposing patches or making assumptions. Then ask for, or
use, the current project status that the user pasted into the chat.
## Current handoff status after patch 0217
## Current handoff status after patch 0218
The current accepted patch line in this chat is expected to include:
- endpoint-audit/documentation patches through `0176-docs-audit-direct-lifecycle-buffer-endpoints.patch`;
- redesign documentation patches `0177` through `0198`;
- endpoint-audit/documentation patches `0199` through `0217`;
- latest expected patch name: `0217-docs-audit-nds-fragger-stubs.patch`.
- endpoint-audit/documentation patches `0199` through `0218`;
- latest expected patch name: `0218-docs-audit-print-spool-stubs.patch`.
When continuing in a new chat, first ask the user which patch was actually last
applied. If they confirm `0217`, build the next patch as `0218-...` against a
tree that already contains `0217`. If any patch failed or was skipped, rebuild
applied. If they confirm `0218`, build the next patch as `0219-...` against a
tree that already contains `0218`. If any patch failed or was skipped, rebuild
against the last confirmed applied patch instead of assuming the file in
`/mnt/data` was accepted.
@@ -198,24 +198,21 @@ Schema/import direction:
Latest endpoint audit note:
- Patch `0217` audits the planned NetWare-4.x NDS/NCP Fragger family
`0x2222/104` / wire `0x68` in `src/nwconn.c`. The top-level source case was
already present and still returns `0xfb` at runtime. Patch `0217` adds
disabled `MARS_NWE_4` source-stub selector documentation for `104/01` Ping for
NDS NCP, `104/02` Send NDS Fragmented Request/Reply, `104/03` Fragment Close,
`104/04` Return Bindery Context, `104/05` Monitor NDS Connection, `104/06`
Return NDS Statistics, `104/07` Clear Statistics, and `104/08` Reload NDS
Software.
- Remember that `104/02` is a nested-selector path: the NDS `Verb` is a 32-bit
payload field after the NDS subfunction, so future docs should write paths
like `0x2222/104/02 verb=<n>` instead of inventing one-byte `zz` cases.
Future implementation belongs to `nwnds`/`libdirectory`; `nwserv` remains
control plane only.
- Patch `0218` audits SDK `0x2222/17` / wire `0x11` Print/Spool as a
NetWare 2.x/3.x/4.x compatibility family. No active top-level source
handler exists, so the documented selector slots `17/00` Write To Spool
File, `17/01` Close Spool File, `17/02` Set Spool File Flags, `17/03`
Spool A Disk File, `17/06` Get Printer Status, `17/09` Create Spool File,
and `17/10` Get Printer's Queue are recorded as a disabled `#if 0` source
stub in `src/nwconn.c`.
- Future implementation belongs to a print/spool compatibility provider,
probably sharing queue provider concepts for queued output, but not to
`nwnds`. The stub is intentionally inactive and has no runtime effect.
The next patch number should be `0218` if `0217` was applied. Likely next
The next patch number should be `0219` if `0218` was applied. Likely next
blocks are deeper `0x2222/23` bindery/property/admin subfunction coverage,
SDK `0x2222/36`/`37` NCP Extension scope, SDK `0x2222/17` Print/Spool, or
another user-selected endpoint family.
SDK `0x2222/36`/`37` NCP Extension scope, SDK `0x2222/90` scope, or another
user-selected endpoint family.
## Patch workflow

11
TODO.md
View File

@@ -206,14 +206,17 @@ Present in the code but not yet fully endpoint-audited:
planned NetWare-4.x/NDS work. The top-level source case remains active as
unsupported (`0xfb`), while the documented 104/01..104/08 selector slots are
recorded behind `#if MARS_NWE_4` in `src/nwconn.c`.
- SDK `0x2222/17` / wire `0x11` Print/Spool is source-stub-audited
as a NetWare 2.x/3.x/4.x compatibility family. There is no active
top-level handler, so patch 0218 records the documented selector slots
`17/00`, `17/01`, `17/02`, `17/03`, `17/06`, `17/09`, and `17/10` as a
disabled `#if 0` stub in `src/nwconn.c`. Future implementation belongs to
a print/spool compatibility provider, likely integrated with queue handling,
not to `nwnds`.
SDK-listed blocks that do not currently show a top-level handler in
`src/nwconn.c`:
- SDK `0x2222/17` / wire `0x11` Print/Spool group. The PDF lists old print
calls such as Write To Spool File, Close Spool File, Set Spool File Flags,
Spool A Disk File, Get Printer Status, Create Spool File, and Get Printer's
Queue. No top-level `case 0x11` has been identified in `src/nwconn.c` yet.
- SDK `0x2222/36` and `0x2222/37` / wire `0x24` and `0x25` NCP Extension
families. The PDF lists extension-info and execute-extension calls; no
top-level handlers have been identified yet. Bucket by generation before

View File

@@ -5567,6 +5567,94 @@ static int handle_ncp_serv(void)
} /* case 0x17 */
break;
#if 0
case 0x11 : { /* SDK 17 / wire 0x11 Print / Spool group.
* Coverage: missing top-level handler in the current
* source, so keep the eligible NetWare 2.x/3.x/4.x print
* selector map as a disabled documentation stub.
* Request handoff: SDK 17 requests carry a 16-bit
* SubFunctionStrucLen at requestdata[0..1], followed by
* the one-byte SubFunctionCode at requestdata[2].
* Reply ownership: a future print/spool provider would
* return normal Completion plus per-subfunction payload;
* nwconn would still own the final client reply envelope.
* Future owner: print/spool compatibility provider, likely
* integrated with queue handling but not with nwnds.
*/
int print_sub = (requestlen >= (int)sizeof(NCPREQUEST) + 3)
? (int)requestdata[2] : -1;
switch (print_sub) {
case 0x00: /* 17/00 Write To Spool File.
* Request: SubFunctionStrucLen, SubFunctionCode,
* ClientPrinterNumber, PrintData[].
* Reply: no payload, normal Completion.
*/
completition = 0xfb;
break;
case 0x01: /* 17/01 Close Spool File.
* Request: SubFunctionStrucLen, SubFunctionCode,
* AbortQueueFlag.
* Reply: no payload, normal Completion.
*/
completition = 0xfb;
break;
case 0x02: /* 17/02 Set Spool File Flags.
* Request: SubFunctionStrucLen, SubFunctionCode,
* PrintFlags, TabSize, TargetPrinter,
* NumberOfCopies, FormType, BannerName,
* BannerFileName.
* Reply: no payload, normal Completion.
*/
completition = 0xfb;
break;
case 0x03: /* 17/03 Spool A Disk File.
* Request: SubFunctionStrucLen, SubFunctionCode,
* DirectoryHandle, Path, PrintFlags, TabSize,
* TargetPrinter, NumberOfCopies, FormType,
* BannerName, BannerFileName.
* Reply: no payload, normal Completion.
*/
completition = 0xfb;
break;
case 0x06: /* 17/06 Get Printer Status.
* Request: SubFunctionStrucLen, SubFunctionCode,
* TargetPrinter.
* Reply: PrinterHalted, PrinterOffLine,
* CurrentFormType, RedirectedPrinter.
*/
completition = 0xfb;
break;
case 0x09: /* 17/09 Create Spool File.
* Request: SubFunctionStrucLen, SubFunctionCode,
* DirectoryHandle, Path, PrintFlags, TabSize,
* TargetPrinter, NumberOfCopies, FormType,
* BannerName, BannerFileName.
* Reply: CreatedSpoolFileHandle / name data per
* old print-service layout.
*/
completition = 0xfb;
break;
case 0x0a: /* 17/10 Get Printer's Queue.
* Request: SubFunctionStrucLen, SubFunctionCode,
* TargetPrinter, QueueIndex.
* Reply: PrinterQueueEntry list / next index.
*/
completition = 0xfb;
break;
default: completition = 0xfb;
break;
}
}
break;
#endif
case 0x18 : /* End of Job */
/*
* Direct NCP 0x2222/24 End of Job.