Move the mars_nwe NetWare-core archive/fileinfo xattr names from the flat org.mars-nwe namespace into an explicit org.mars-nwe.netware subnamespace.
The earlier xattr namespace cleanup intentionally removed the unreleased user.mars_nwe names and introduced Netatalk-style org.mars-nwe source-level keys. Keeping archive and fileinfo at org.mars-nwe.archive and org.mars-nwe.fileinfo would make those NetWare server metadata records peers of AFP metadata instead of identifying their ownership. The archive date/time/archiver and file create/creator/modifier records are NetWare-core file metadata, so place them under org.mars-nwe.netware.* while leaving AFP metadata under org.mars-nwe.afp.*.
No legacy fallback is added because the old names only existed in local test systems and have not been released. The existing nwxattr wrapper still maps source-level org.mars-nwe.<domain>.* names to user.org.mars-nwe.<domain>.* on Linux, mirroring Netatalk's org.netatalk.* EA abstraction.
Tests: git diff --check
TODO: keep future nwbind/nwserv/AFP metadata in explicit org.mars-nwe.<domain>.* subnamespaces instead of adding new flat org.mars-nwe.* keys.
Implement a deliberately narrow write-safe slice of the WebSDK/NWAFP Set File Information semantics for the NCP 0x2222/35/16 AFP 2.0 Set File Information call.
The only accepted request bitmap is the FinderInfo bit (0x0020). The handler uses the same path-backed raw VOL:-style compatibility subset as the existing AFP get, scan, open-fork, and temporary-directory-handle smoke endpoints, resolves the effective NetWare volume from the path prefix, rejects entry-id-only lookup until persistent CNID/base-ID mapping exists, and rejects directory or non-FinderInfo writes rather than pretending to implement DOS attribute, timestamp, delete-protect, resource-fork, or broader Mac namespace write semantics.
Store the 32-byte FinderInfo block in mars_nwe-owned metadata under the source-level xattr name org.mars-nwe.afp.finder-info and teach the existing AFP file-info response builder to read that value before falling back to Netatalk/libatalk AppleDouble FinderInfo. This makes the write immediately verifiable through AFP 2.0 Get File Information without changing data-fork or resource-fork contents.
Add a small local xattr abstraction for mars_nwe-private metadata names. Netatalk exposes names such as org.netatalk.Metadata at the libatalk layer, but prefixes them with user. on Linux inside its EA wrapper. Mirror that behavior for mars_nwe so source code and documentation use org.mars-nwe.* consistently while Linux stores user.org.mars-nwe.* where the kernel requires a namespace prefix. Convert the existing archive/fileinfo xattr calls to the same wrapper so the previous org.mars-nwe.* namespace rename remains functional on Linux.
Add tests/linux/afp_set_file_info_smoke, which sends AFP 0x10 with a FinderInfo bitmap, then verifies the result through AFP 0x0f Get File Information. Document the smoke command, expected output, server-log shape, and the remaining unsupported Set File Information write semantics.
Tests: git diff --check; gcc -Iinclude -I/mnt/data/stubs -fsyntax-only tests/linux/afp_set_file_info_smoke.c; cmake --build build-off --target nwconn with ENABLE_NETATALK_LIBATALK=OFF; cmake --build build-on --target nwconn with ENABLE_NETATALK_LIBATALK=ON against Netatalk-4.4.3 headers and local link stubs.
Rename the unreleased mars_nwe private archive and file-info extended-attribute keys from the Linux user.mars_nwe.* spelling to the Netatalk-style org.mars-nwe.* namespace.
This keeps the mars_nwe metadata namespace aligned with the AFP/libatalk backend direction, where Netatalk owns org.netatalk.* keys and mars_nwe-owned metadata should live under org.mars-nwe.* instead of looking like ordinary user application attributes.
No legacy read fallback is added because the user.mars_nwe.* names have only existed in local test builds and have not shipped in a release. New writes therefore use only org.mars-nwe.archive and org.mars-nwe.fileinfo, avoiding migration complexity before AFP metadata persistence is introduced.
Document the namespace decision in TODO.md so future AFP xattr work can build on org.mars-nwe.afp.* or a compact org.mars-nwe.afp.metadata record rather than adding new user.mars_nwe.* keys.
Tests: cmake --build build-xattr-off --target nwserv; cmake --build build-xattr-off --target all reaches the existing missing gdbm.h dependency while nwconn has already been built in this tree.