diff --git a/TODO.md b/TODO.md index fa88067..ef705fa 100644 --- a/TODO.md +++ b/TODO.md @@ -213,7 +213,10 @@ Current status: defaults to the AFP 2.0 subfunction and uses `--afp10` for the older endpoint. Runtime coverage has been verified against `SYS:PUBLIC` by walking multiple directory entries with the returned `next_last_seen` AFP - Entry ID continuation value. + Entry ID continuation value. The verified AFP 2.0 and older `0x0a` first + records both return `pmdflts.ini` (`entry_id=0x23c8787d`, `data_len=8161`) + on the sample tree, and an AFP 2.0 continuation with that Entry ID returns + `ohlogscr.bat` (`entry_id=0x260437f6`, `data_len=1296`). - `AFP Get Entry ID From NetWare Handle` is implemented for read-only data-fork file handles that are opened in the same client connection. Linux smoke coverage uses `tests/linux/afp_entry_id_smoke --from-handle` and has been diff --git a/tests/linux/README.md b/tests/linux/README.md index d735bf2..c0507ec 100644 --- a/tests/linux/README.md +++ b/tests/linux/README.md @@ -324,11 +324,20 @@ Useful smoke sequence for a standard MARS-NWE `SYS:PUBLIC` directory: ./tests/linux/afp_scan_info_smoke --allow-empty -S MARS -U SUPERVISOR -P secret --last-seen 0x260437f6 SYS:PUBLIC ``` +Verified runtime output for the first entries in the sample `SYS:PUBLIC` tree: + +```text +AFP Scan File Info subfunction=0x11 path=SYS:PUBLIC last_seen=0x00000000 desired=1 next_last_seen=0x23c8787d entry_id=0x23c8787d parent_id=0x00000000 attrs=0x0000 data_len=8161 resource_len=0 offspring=0 long_name=pmdflts.ini short_name=pmdflts.ini rights=0x9700 +AFP Scan File Info subfunction=0x0a path=SYS:PUBLIC last_seen=0x00000000 desired=1 next_last_seen=0x23c8787d entry_id=0x23c8787d parent_id=0x00000000 attrs=0x0000 data_len=8161 resource_len=0 offspring=0 long_name=pmdflts.ini short_name=pmdflts.ini rights=0x9700 +AFP Scan File Info subfunction=0x11 path=SYS:PUBLIC last_seen=0x23c8787d desired=1 next_last_seen=0x260437f6 entry_id=0x260437f6 parent_id=0x00000000 attrs=0x0000 data_len=1296 resource_len=0 offspring=0 long_name=ohlogscr.bat short_name=ohlogscr.bat rights=0x9700 +``` + The concrete Entry IDs vary by filesystem metadata and are currently marked as `fallback` in server diagnostics when they are derived from `stat(2)` rather than persistent CNID/AppleDouble metadata. The verified AFP 2.0 smoke path walks multiple entries in `SYS:PUBLIC` by feeding each returned -`next_last_seen` value into the next request. The `0x0a` path intentionally +`next_last_seen` value into the next request, and the older `0x0a` path returns +the same first-entry record for the same request. The `0x0a` path intentionally shares that conservative scan implementation so older AFP callers can probe the same read-only directory listing semantics before fuller multi-response and CNID-backed scans are implemented.