From 7c0af26ec567a4e2c871af947791682ce8ed8846 Mon Sep 17 00:00:00 2001 From: OAI Date: Sun, 31 May 2026 05:15:38 +0000 Subject: [PATCH] tests: record AFP file fork I/O smoke success --- TODO.md | 23 +++++++++++++++++++++++ tests/afp/README.md | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/TODO.md b/TODO.md index 78cd29e..536e480 100644 --- a/TODO.md +++ b/TODO.md @@ -637,3 +637,26 @@ AFP Get/Scan AccessPrivileges convergence: NetWare namespace/basehandles, but regular files currently keep nwatalk or fallback AFP IDs because the existing directory-number reverse mapper is not a reliable file-entry reverse mapper on DOS namespace volumes. + +### Final AFP endpoint audit before declaring compatibility slice complete + +After the current AFP smoke-covered endpoint set is otherwise complete, perform +one final endpoint-by-endpoint audit against the WebSDK archive and the Novell +NWAFP headers. The goal is not to add new semantics, but to verify that every +implemented AFP call number, request layout, reply layout, bitmap, completion +code, and unsupported-operation response still matches the published wire +interfaces. + +Checklist for that final audit: + +- compare the `nwconn.c` AFP dispatch table with the WebSDK/NWAFP endpoint list; +- verify legacy and AFP 2.0 variants separately; +- re-check Get/Set/Scan File Information record offsets, lengths, and bitmaps; +- re-check Create, Delete, Rename, Open Fork, and Entry-ID resolver request + layouts; +- confirm Resource Fork behaviour remains intentionally unsupported and returns + the documented completion code used by the smoke tests; +- confirm all NetWare-semantic data still routes through mars_nwe paths + (trustees, attributes, timestamps, namespace, create/open/rename/delete), and + only AFP-only metadata stays in `org.mars-nwe.afp.*` xattrs; +- keep the result as the final AFP compatibility report in `tests/afp/README.md`. diff --git a/tests/afp/README.md b/tests/afp/README.md index 183f018..1010ff5 100644 --- a/tests/afp/README.md +++ b/tests/afp/README.md @@ -1210,3 +1210,42 @@ AFP 2.0 Set File Information: vol=0 request_vol=0 entry=0x05aaace0 mask=0x0100 p Directory Entry IDs continue to use the existing namespace/basehandle path. Regular file Entry IDs continue to be AFP metadata IDs stored in `user.org.mars-nwe.afp.entry-id`. + +## AFP File Fork I/O smoke success + +AFP Open File Fork returns a normal mars_nwe/NetWare file handle for the data +fork. The AFP smoke suite now verifies that the returned handle works with the +existing NetWare read/write paths rather than introducing any AFP-private POSIX +I/O path. + +Verified smoke run: + +```text +AFP File Fork Read via NetWare handle +AFP File Fork I/O read path=SYS:PUBLIC/pmdflts.ini entry_id=0x00000000 offset=0 requested=16 read=16 fork_len=8161 + +AFP File Fork Read by Entry ID via NetWare handle +AFP File Fork I/O read path=SYS:PUBLIC/pmdflts.ini entry_id=0x05aaace0 offset=0 requested=16 read=16 fork_len=8161 entry-id-only + +AFP File Fork Write via NetWare handle +AFP File Fork I/O write path=SYS:PUBLIC/atst3 entry_id=0x00000000 offset=0 size=8 verified + +AFP File Fork Write by Entry ID via NetWare handle +AFP File Fork I/O write path=SYS:PUBLIC/atst3 entry_id=0x0edc380e offset=0 size=11 verified entry-id-only + +Summary: failures=0 +``` + +The write probes create the test file through AFP Create File, open the data +fork through AFP Open File Fork, perform I/O through the existing NetWare file +handle read/write operations, and clean up through AFP Delete. Resource Fork +opens remain covered by the separate negative smoke and continue to return the +unsupported completion. + +## Final AFP endpoint audit TODO + +Before the AFP compatibility slice is marked complete, do one last audit of all +implemented AFP endpoints against the WebSDK archive and Novell NWAFP headers. +That final check should compare call numbers, request/reply layouts, legacy vs. +AFP 2.0 variants, bitmaps, record lengths, and unsupported completion codes for +the complete smoke-covered endpoint set.