Commit Graph

11 Commits

Author SHA1 Message Date
OpenAI
995a1e6cd7 nwconn: add AFP FinderInfo set smoke path
All checks were successful
Source release / source-package (push) Successful in 49s
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.
2026-05-30 11:29:33 +02:00
Mario Fetka
13737d03c3 build: add optional Netatalk libatalk backend hook
Some checks failed
Source release / source-package (push) Failing after 41s
Add an opt-in CMake hook for Netatalk/libatalk and a small nwconn-side helper
layer for future AFP/Mac namespace work.

NetWare AFP NCP 0x23 calls still have to be decoded and answered by MARS-NWE;
libatalk is not used as an afpd proxy. Instead, expose local helper wrappers
that can read AppleDouble/Finder Info metadata and resource-fork sizes from a
backing Unix path when libatalk is available.

The WebSDK documents the AFP calls as NetWare server entry points for Mac
namespace semantics, and the SDK headers expose probes such as NWAFPSupported()
plus AFP entry-id and file-information calls. Those calls require AFP entry
IDs, Finder Info, resource forks, and per-volume Mac namespace state before
MARS-NWE can return success.

Keep NCP 0x23 returning invalid namespace for now, but record whether the
libatalk metadata backend was compiled in when rejecting AFP calls. Update
TODO.md to track the remaining NetWare AFP implementation work on top of the
new backend hook.

This adds build-time integration and local metadata helpers only; it does not
change AFP protocol behavior.
2026-05-30 01:25:55 +02:00
Mario Fetka
ca32f0a128 nwbind: use build date in server information
All checks were successful
Source release / source-package (push) Successful in 49s
Keep the server information fields semantically distinct after replacing
the legacy KOAN/14-Jun-03 strings.

The revision string now reports the Mars NWE release version, for
example:

  Mars NWE 0.99.pl28

and the separate revision-date field is populated from a CMake-provided
build date in the traditional NetWare-style format, for example:

  27-May-26

The build date can be overridden through CMake for reproducible builds;
otherwise it defaults to the current UTC build date.
2026-05-27 21:36:45 +02:00
Mario Fetka
8017c0c078 Add CMake quota detection and enable quota support by default
All checks were successful
Source release / source-package (push) Successful in 47s
Add a FindQuota.cmake module that checks for the Linux quota headers and
symbols required by the MARS NWE quota backend. Prefer modern
<sys/quota.h> with quotactl(), and keep <linux/quota.h> as fallback for
older systems.

Enable quota support by default, but only compile it in when the required
headers and quota symbols are available. Also move the QTAINSYS define to
the detected sys/quota.h path so modern Linux builds use the correct
header automatically.
2026-05-26 09:32:01 +02:00
Mario Fetka
b031402933 Archive-xattr-Patch
All checks were successful
Source release / source-package (push) Successful in 41s
2026-05-25 21:07:46 +02:00
Mario Fetka
e817405919 feat: add DOS long-name alias support 2026-05-24 00:50:32 +02:00
Mario Fetka
33d1da469a Tighten string helper prototypes and quiet pointer-sign warnings 2026-04-20 23:39:42 +02:00
Mario Fetka
35d12ee7aa Update to pld patches and integrate koan patch 2013-11-05 11:54:31 +01:00
Mario Fetka
be2d60525a update patches 2011-11-14 19:58:21 +01:00
Mario Fetka
53086a5b03 correct bug https://bugzilla.novell.com/show_bug.cgi?id=692201 2011-11-13 21:50:34 +01:00
Mario Fetka
0fbc9baf41 Restructure for camke build 2011-11-13 17:37:22 +01:00