Commit Graph

66 Commits

Author SHA1 Message Date
Mario Fetka
e73eb89f8c docs: update NCP and IPX layer documentation
Update README and file-level comments after the NCP/IPX source split and
renames.

Document the current layering: ncpapi.c/ncpapi.h contain the ncpXX_YY_*
protocol API wrappers, ncpcall.c contains low-level requester/transport
helpers, ncp.asm/ncp.h provide INT 21h and Client32 requester entry points, and
ipx.asm/ipx.h provide IPX and far-memory assembly glue.

Also remove stale c32ncp/kern_wasm/kern.h planning references and update the
license section to mention the root-level COPYING file.

No behavior change.
2026-05-29 12:58:35 +02:00
Mario Fetka
892bea8a5e ncopy: use shared endian helpers
Replace the local NCOPY endian buffer helpers with the shared tools.c helpers.

This removes duplicate little-endian and big-endian get/put code while keeping
the experimental NCOPY NCP request layouts unchanged.

No behavior change.
2026-05-29 12:50:17 +02:00
Mario Fetka
b6bdbf958f tools: add shared parent path helper
Move the common parent path extraction helper into tools.c and declare it in
net.h.

Replace the local implementations in RIGHTS, NDIR and NWTESTS with
tool_parent_path(). The helper keeps the existing behavior of uppercasing the
path and preserving a trailing volume colon for parent paths such as SYS:.

No behavior change.
2026-05-29 12:46:13 +02:00
Mario Fetka
3a55cc9fc0 ipx: keep original Martin Stover copyright only
Remove the 2026 Mario Fetka copyright line from ipx.asm.

The file contains the split-out IPX and xmemmove assembly glue from the original
Martin Stover kern.asm code, without new authorship-bearing changes.

No behavior change.
2026-05-29 12:35:55 +02:00
Mario Fetka
34ec41e760 trustee: share trustee header path formatting
Move the shared GRANT/REMOVE/REVOKE header path formatting into trustee.c.

The Novell trustee tools display the server and volume separator as
SERVER/SYS: while keeping the remaining path separators as DOS backslashes.
Use one trustee_header_path() helper for that formatting instead of keeping
separate local copies in GRANT, REMOVE and REVOKE.

No behavior change.
2026-05-29 12:33:32 +02:00
Mario Fetka
f3e77819d8 dosutils: use shared option helper functions
Replace small local option helper wrappers with the shared tools.c helpers.

SLIST now uses tool_is_help_arg() directly, and REMOVE/REVOKE use
tool_is_files_option() and tool_is_subdirs_option() instead of Trustee-specific
wrappers. This keeps trustee.c focused on Rights/Trustee behavior and leaves
generic command-line option handling in tools.c.

No behavior change.
2026-05-29 12:27:02 +02:00
Mario Fetka
8f8ce00093 ncp: rename requester assembly header
Finish the ncpcall.asm/ncpcall.h to ncp.asm/ncp.h rename.

Update the Open Watcom build, object names, include directives, header guard,
README references and file-level dependency comments to use the shorter ncp
naming. The split remains the same: ncp.asm/ncp.h provide the low-level INT 21h
and Client32 requester entry points, ncpcall.c contains requester transport
helpers, and ncpapi.c contains the ncpXX_YY_* protocol API wrappers.

No behavior change.
2026-05-29 12:13:13 +02:00
Mario Fetka
98ffa17006 ncpcalls: split IPX and requester assembly glue
Split the Open Watcom assembly glue into separate IPX and NCP requester
modules.

Keep the IPX socket and far-memory helper entry points in ipx.asm and move the
INT 21h Net_Call plus Client32 requester entry points into ncpcall.asm. Split
the former kern.h declarations accordingly into ipx.h and ncpcall.h, and update
net.h and the Open Watcom build to use the new headers and object files.

This matches the current source layout where ncpcall.c owns the low-level NCP
transport helpers and ncpapi.c owns the ncpXX_YY_* protocol API wrappers.

No behavior change.
2026-05-29 12:04:16 +02:00
Mario Fetka
3740e1450c ncpapi: rename c32ncp files to NCP API names
Finish the c32ncp.c/c32ncp.h to ncpapi.c/ncpapi.h rename.

Update the build files, include directives, dependency tracking, header guard,
README references and file-level comments to use the new ncpapi naming. This
matches the current split where ncpapi contains the ncpXX_YY_* protocol API
wrappers and ncpcall contains the lower-level requester/transport helpers.

No behavior change.
2026-05-29 11:48:03 +02:00
Mario Fetka
d7f2a6551f ncpcalls: rename probe helpers as requester calls
Rename the remaining Client32 transport helper symbols from Probe-style names
to request-style names.

These helpers are no longer only diagnostic probes; they are the low-level
requester paths used by the NCP API wrappers. Rename the raw5 helper to the
more general ncp_raw_request() name and update the MapVar/OpenRef helpers to
ncp_mapvar_request() and ncp_openref_request().

No behavior change.
2026-05-29 11:40:32 +02:00
Mario Fetka
40e7ebf939 ncpcalls: rename remaining C32 transport symbols
Rename the remaining C32-prefixed transport helpers, probe helpers, types and
constants to protocol-oriented NCP names.

This removes implementation-oriented c32/C32 naming from the shared NCP API and
transport layer while keeping the current c32ncp.c/c32ncp.h file names until
the later ncpapi.c/ncpapi.h rename. The new names avoid conflicts by using
ncp_* helper names and NCP_* type/constant prefixes.

No behavior change.
2026-05-29 11:32:09 +02:00
Mario Fetka
9e89f85622 ncpcalls: move Client32 transport helpers out of NCP API file
Move the Client32/Raw5 transport helper routines from c32ncp.c into
ncpcall.c.

This keeps c32ncp.c focused on the ncpXX_YY_* protocol API wrappers in
preparation for the later ncpapi.c/ncpapi.h rename, while ncpcall.c owns the
lower-level requester and Client32 transport helpers.

No packet layout or NCP wrapper behavior is changed.
2026-05-29 11:23:25 +02:00
Mario Fetka
4b8e6e2792 ncpapi: collect protocol wrappers in c32ncp
Move the existing ncpXX_YY_* protocol wrapper implementations from ncpcall.c
into c32ncp.c.

This makes c32ncp.c the staging file for the future ncpapi.c rename, while
ncpcall.c is kept for lower-level requester/transport helpers. No function
names or packet logic are changed.

No behavior change.
2026-05-29 11:21:06 +02:00
Mario Fetka
c152661eeb c32ncp: use shared endian helpers
Replace the local endian buffer helpers in c32ncp.c with the shared tools.c
helpers.

This removes the remaining c32-local get/put helpers for little-endian and
big-endian packet fields while keeping the NCP wrapper logic unchanged. It also
keeps c32ncp.c focused on the future ncpapi role, with generic buffer handling
provided by tools.c.

No behavior change.
2026-05-29 11:11:12 +02:00
Mario Fetka
e7f67fa004 c32ncp: document NCP API wrapper functions
Add function-level comments to the NCP API wrappers in c32ncp.c.

Document the local packet helpers, Client32/Raw5 handle-path setup, NCP87
entry information and DOS information calls, effective rights lookup,
trustee-related NCP22/NCP87 wrappers, and the experimental NCP87/01,
NCP74 and NCP66 helpers used by the NCOPY investigation.

The comments are written so the file can later be renamed to ncpapi.c without
changing the documented API purpose.

No behavior change.
2026-05-29 10:57:57 +02:00
Mario Fetka
7c1499a16c ncpapi: use protocol names for NCP wrapper functions
Rename the public NCP wrapper functions in c32ncp.c/c32ncp.h from c32_ncp*
implementation-oriented names to protocol-oriented ncpXX_YY_* names.

This prepares the code for a later c32ncp.c/c32ncp.h -> ncpapi.c/ncpapi.h
file rename while keeping the current file names unchanged for now. The new
names keep the NCP function/subfunction visible and describe the operation
performed by each wrapper.

Update all callers to use the new names. Transport-specific helpers such as
c32_get_ncp_handle() are left unchanged.

No behavior change.
2026-05-29 10:50:05 +02:00
Mario Fetka
091dff6764 net: document multicall command dispatch
Add comments to net.c describing the NET multicall dispatch table and helper
flow.

Document how commands are resolved through NET <command> and renamed/stub-style
argv[0] invocation, how the mode field is used by shared handlers, and why
NCOPY is currently not registered in the dispatcher.

No behavior change.
2026-05-29 10:32:40 +02:00
Mario Fetka
ee5252c554 trustee: document rights and trustee helper functions
Add function-level comments to the Trustee/Rights helper routines in trustee.c.

Document option parsing, rights word parsing and formatting, bindery object
lookup, and trustee-specific directory handling. This clarifies the intended
split between generic helpers in tools.c and Trustee/Rights-specific behavior
in trustee.c.

No behavior change.
2026-05-29 10:22:52 +02:00
Mario Fetka
18323a6198 tools: document shared helper functions
Add function-level comments to the shared helper routines in tools.c.

Document the purpose and behavior of the common DOS compatibility, keyboard,
paging, memory, string, environment, current directory handle, path formatting,
wildcard and endian/NCP22 helper functions.

No behavior change.
2026-05-29 10:18:54 +02:00
Mario Fetka
7a444c6856 ncpcalls: document low-level NCP wrappers
Add function-level comments to the low-level NCP wrapper functions in
ncpcall.c.

Document each wrapper's purpose, NCP function/subfunction, requester path and
return behavior. The descriptions are based on the existing implementation and
cross-checked against the MARS-NWE admin sources and Novell SDK/WebSDK
references.

No behavior change.
2026-05-29 10:13:01 +02:00
Mario Fetka
adf16cab28 ncpcalls: keep bindery access level wrapper on NCP14 name
Rename the bindery access level wrapper from ncp17_46_get_bindery_access_level()
to ncp14_46_get_bindery_access_level().

The previous rename made the operation look like a normal NCP17 bindery wrapper,
but the historic implementation used the ncp_14_46 naming. Keep that protocol
reference visible while retaining the descriptive operation name.

No behavior change.
2026-05-29 10:01:48 +02:00
Mario Fetka
53e28c6bfe ncpcalls: use descriptive names for NCP wrapper functions
Rename the low-level NCP wrapper functions in ncpcall.c and net.h to include
both the NCP function/subfunction number and the operation they perform.

This keeps the numeric protocol reference visible for comparison with SDK
documentation and MARS-NWE logs, while making call sites easier to understand.
Update all callers to use the new names.

No behavior change.
2026-05-29 09:55:33 +02:00
Mario Fetka
19afe23651 dosutils: use shared path helper predicates
Replace small local path predicate wrappers with the shared tools.c helpers.

NDIR now uses tool_is_dot_dir() directly and NCOPY uses tool_has_wildcards()
for wildcard checks. More behavior-sensitive NCOPY path helpers are left local
for now to avoid changing path normalization or default handling while NCOPY
remains under investigation.
2026-05-29 09:49:14 +02:00
Mario Fetka
9ef8aeccc0 trustee: use shared tool helpers for generic path handling
Remove generic wrapper helpers from trustee.c and switch GRANT/REMOVE/REVOKE
callers to the shared tools.c helpers directly.

Keep trustee.c focused on Trustee/Rights-specific behavior such as option
parsing, rights parsing/formatting, object lookup and trustee path handling.
The generic string, current directory handle, uppercase and path helper logic
now lives in tools.c where it can be reused by other DOS utilities.
2026-05-29 09:44:14 +02:00
Mario Fetka
b3cec8eecf tools: add shared current directory handle helper
Add tool_current_dhandle_only() as a small wrapper for callers that only need
the current NetWare directory handle.

Replace the local creator_current_dhandle() and tests_current_dhandle()
implementations in CREATOR and NWTESTS with the shared helper. This removes
duplicate requester-current-directory code without changing behavior.
2026-05-29 09:38:08 +02:00
Mario Fetka
5fa36cc6f4 dosutils: use shared case-insensitive string helper
Replace local case-insensitive argument comparison helpers in MAP, SLIST,
WHOAMI and NWTESTS with the shared tool_strsame() helper.

This removes small duplicate helpers without changing command parsing behavior.
Trustee-specific wrappers and the experimental NCOPY code are intentionally
left untouched.
2026-05-29 09:32:23 +02:00
Mario Fetka
fc91f3f274 tools: add shared NCP22 name helper
Move the common NCP22 DOS name buffer helper into tools.c and declare it in
net.h.

Replace the local copy/uppercase implementations in CREATOR, FLAG, FLAGDIR,
NDIR and NWTESTS with tool_copy_ncp22_name(). The helper keeps the existing
behavior: uppercase conversion, path separator rejection and the 1..12 byte
DOS name length limit.

NCOPY is intentionally left untouched while its NCP copy path remains under
investigation.
2026-05-29 09:26:28 +02:00
Mario Fetka
0362cc7810 tools: add shared endian helpers
Move common little-endian and big-endian buffer helpers into tools.c and
declare them in net.h.

Replace local duplicate implementations in FLAG, FLAGDIR and NDIR with the
shared helpers. This keeps the existing packet layouts unchanged while reducing
copy/paste code across the DOS utilities.

NCOPY and the experimental NCP copy code are intentionally left untouched for
now.
2026-05-29 09:19:22 +02:00
Mario Fetka
de931af3c4 Correct copyright for historic file 2026-05-29 08:09:32 +02:00
Mario Fetka
50524cf759 dosutils: add GPL-2 headers and file descriptions
Add GPL-2-or-later license headers to the DOS utility source files and
document the purpose and local dependencies of each C, header and assembler
file.

Preserve the original Martin Stover copyright attribution for the historic
MARS-NWE utility sources, including files that did not previously carry an
explicit header but are part of the original tool set. Add Mario Fetka as the
2026 copyright holder for the current maintenance work, and use Mario-only
headers for files without original Martin Stover ownership.

Also add a root-level COPYING file containing the GPL-2 license text.
2026-05-29 08:07:09 +02:00
Mario Fetka
4a952b4c4c dosutils: align Novell-compatible tests and stage NCOPY work
Update the DOS utilities and test suite with the current Novell comparison
state.

Validated/updated tool behavior:
- improve CREATOR output by showing Novell-style attribute and rights masks
- extend FLAGDIR handling with old NCP22 directory attribute read/write
  fallback paths
- expand NDIR Novell-style formatting, filtering, /SUB handling, date output,
  DI/RI attribute display and richer metadata collection
- adjust REVOKE output/grammar, recursive /SUBDIRECTORIES behavior and trustee
  update/delete paths to better match Novell tools
- adjust SLIST header/output behavior for logged-in and logged-out cases
- update README status to reflect the currently green/tested tools

Test-suite changes:
- add/refresh Novell comparison tests for CREATOR, NDIR, REVOKE and SLIST
- update NCOPY tests and collection scripts for the current investigation state
- refresh per-tool README files and top-level test documentation
- keep MAP documented as still separately open

NCOPY:
- add the current NCOPY implementation and experimental NCP74/server-side-copy
  scaffolding
- build ncopy.c so it stays compile-tested
- keep NCOPY disabled in the NET multicall dispatch for now because the
  server-side-copy/open-handle path is still unsafe and needs further analysis

Build:
- include ncopy.c in the DOS utility build
- drop the temporary MARS_DOSUTILS_VERSION define wiring from CMake
2026-05-29 07:40:04 +02:00
Mario Fetka
5da600c2a5 dosutils: match Novell paths for flags and trustees
Move FLAG, GRANT and REMOVE closer to the request paths used by the
Novell tools and extend the DOS comparison tests.

FLAG now reads attributes through the old NCP22 directory scan path and
writes them through NCP22/25 Set Directory/File Information. This keeps
extended attributes such as Delete Inhibit and Rename Inhibit intact and
matches the Novell behavior observed in the server logs.

GRANT now prefers NCP22/27 SetTrustee with an NCP87 fallback. Supervisor
rights are expanded like Novell does, so granting S sends and reports the
full SRWCEMFA mask. The visible output, path formatting and error text
are adjusted to match the Novell baseline.

REMOVE now prefers NCP22/2B DelTrustee with an NCP87 fallback. The
DelTrustee request layout is corrected, /SUBDIRS handling is aligned
with Novell, and the output/error text is matched to the baseline.

The FLAG, FLAGDIR, GRANT and REMOVE tests now compare NPUBLIC baselines
against the PUBLIC implementations and add delayed NOPASSUSER readback
checks using DLYSTRT and the maintainer LOGIN password option.
2026-05-28 07:54:41 +02:00
Mario Fetka
0fa4a6f700 dosutils: remove hard-coded MARS fallbacks
Do not fall back to the literal server name "MARS" in LOGIN or WHOAMI.

LOGIN now uses a neutral usage example and tries to resolve the current
file server through the active connection/NCP server info. If no server
name can be determined, it reports the Novell-style error:

  No known file server.

WHOAMI likewise no longer invents a default server name. If the current
server name cannot be resolved, it reports the Novell-style failure:

  Unable to get server name. (%x)

This keeps the tools usable on servers with arbitrary names instead of
silently producing MARS-specific output.
2026-05-27 20:30:56 +02:00
Mario Fetka
4ad455c6df dosutils: add maintainer helpers and compare-ready tools
Add maintainer-only support used by the automated DOS compatibility
tests.

This introduces the MAINTAINER_BUILD option for the DOS tools. In
maintainer builds, LOGIN accepts the hidden /PWD: and /PASSWORD:
arguments for automated test relogin, and the DLYSTRT helper is built to
delay-start DOS batch files after the invoking batch has returned to the
prompt.

Add the WHOAMI utility and wire it into the NET command dispatch. Also
adjust SLIST and RIGHTS output to match Novell behavior more closely,
including server-not-found handling, path formatting, Supervisor rights,
missing-path errors and usage text.

Extend the test scripts to compare NPUBLIC Novell baselines against the
PUBLIC implementations. LOGIN/LOGOUT can now run automatically via
DLYSTRT and the maintainer LOGIN password option. RIGHTS gains an
additional NOPASSUSER effective-rights matrix that covers single rights,
mixed rights, Supervisor rights, ALL/N and file trustee cases.

Normal builds remain free of maintainer-only helpers and hidden password
handling.
2026-05-27 20:14:01 +02:00
Mario Fetka
f214e89d69 tests: add Novell DOS tool baseline suite
Add DOS-side baseline scripts for the Novell tools used to compare the
reimplemented public utilities.

The suite covers the current baseline set:

  MAP
  SLIST
  WHOAMI
  LOGIN / LOGOUT
  NDIR
  NCOPY
  FLAG
  FLAGDIR
  CREATOR
  RIGHTS
  GRANT
  REVOKE
  REMOVE

It also includes supporting trustee, rights, rename, move, delete and
file-operation tests.

Each test writes reproducible output into a per-tool CMP directory and
provides a matching ZIP helper for collecting the results. The ZIP
helpers clean generated test trees afterwards so SYS: does not keep
accumulating temporary directories.

This is the Novell baseline layer only. A later change can extend the
same scripts to run the full comparison cycle:

  NPUBLIC baseline -> PUBLIC implementation -> NPUBLIC control
2026-05-27 13:31:46 +02:00
Mario Fetka
0df41482c7 dosutils: add creator and supporting NCP helpers
Add the CREATOR utility and wire it into the DOS tools build and NET
command dispatch.

Extend the client-side NCP helpers with the calls needed by the new and
updated tools, including DOS namespace information and effective-rights
queries. Also update MAP handling for automatic drive mappings used by
the login script.

This commit contains the tool/source support only. The DOS baseline test
suite is kept separate and will be added in a follow-up commit.
2026-05-27 13:31:02 +02:00
Mario Fetka
6d2d3f367f dosutils: use NCP87 DOS info fields in NDIR
Add a Client32 NCP87 helper for obtaining DOS namespace file and
subdirectory information and use it in NDIR.

The new helper reads the classic NCP87 subfunction 6 RIM_ALL DOS info
block, including timestamps, inherited rights, directory identifiers and
size metadata.

Use the NCP87 inherited rights mask for the inherited-rights column while
keeping the existing Client32 effective-rights path for the effective
rights column.  Also use the NCP87 modify, archive, last-access and
creation date fields for the /DATES display, falling back to DOS
findfirst timestamps when the NCP87 info request is not available.

Tighten the /DATES layout so the full Created/Copied timestamp remains
within an 80-column DOS screen.
2026-05-25 09:17:56 +02:00
Mario Fetka
7117bfff68 dosutils: add Novell-style NDIR listing tool
Add an initial Novell-style NDIR implementation for the DOS utilities.

The new tool supports basic DOS namespace directory listings using
_dos_findfirst/_dos_findnext, including wildcard paths, current-directory
listing, files-only and directories-only modes, recursive /SUB listings,
continuous output and Novell-style help text.

NDIR separates file and directory output into Novell-like sections,
prints long NetWare-style attribute brackets, and reports both file bytes
and allocated bytes in blocks using a simple per-file 4 KiB block
approximation for the initial implementation.

Add initial /RIGHTS support.  The rights format displays rights columns
for files and directories, obtains effective rights through Client32
NCP87, and falls back to the older directory-handle effective-rights path
when needed.  For now the inherited-rights column uses the effective
rights value until a separate inherited-rights mask is available.

Add initial /DATES support with a Novell-style date column layout showing
Last Updated, Last Archived, Accessed and Created/Copied fields.  The
initial implementation uses the DOS findfirst update timestamp for the
available date values and placeholder archive/access values until full
NetWare namespace date fields are exposed.

Add /SHORT and /BRIEF as compact output modes for recursive listings and
manual testing.  These modes keep the useful values while suppressing the
large Novell-style section headers and empty recursive sections.

Wire NDIR into the multicall dispatcher, CMake build and install list,
and document the supported command forms in the README.

Owner display, true inherited-right masks, full namespace date fields,
sorting and restrictions remain future work.
2026-05-25 08:49:47 +02:00
Mario Fetka
c50202e93b dosutils: factor shared helpers and update README
Move common DOS utility helper code into tools.c and expose it through
net.h.  This removes duplicated command-local helpers from GRANT,
RIGHTS, FLAG, FLAGDIR and the trustee helper layer.

The shared helpers cover case-insensitive argument comparison, help and
option detection, /FILES and /SUBDIRS parsing, current network directory
handle lookup, current volume prefix formatting, uppercase DOS path
copying, basename/header-path handling, wildcard detection and simple
path joining/splitting.

Keep the command frontends smaller and less coupled so the current
multicall utility can later be split into smaller grouped multicall
binaries, such as trustee tools, login/session tools and file/flag
tools.

Update the DOS utilities README for the newer Client32 and trustee
commands.  Document RIGHTS, GRANT, REVOKE and REMOVE in the status,
feature, command and install sections.  Add command reference entries
for the trustee tools, including Novell-style syntax, supported rights,
recursive/file options and missing-trustee behavior.

Also mention the shared trustee helper layer and common tools.c helpers
used by the newer command frontends.
2026-05-24 20:45:56 +02:00
Mario Fetka
4cafe16980 dosutils: add Novell-style REVOKE and REMOVE trustee tools
Implement REVOKE and REMOVE for the Client32 DOS utilities.

REVOKE now supports Novell-style syntax:

  REVOKE rightslist* [FOR path] FROM [USER|GROUP] name [options]

and removes rights from explicit trustee assignments.  It scans the
trustee list first, updates the trustee rights mask, and deletes the
trustee entry when no rights remain.

REMOVE now supports Novell-style syntax:

  REMOVE [USER | GROUP] name [FROM path] [option]

and deletes explicit trustee assignments for users or groups.

Both tools support USER/GROUP lookup, /FILES, /SUBDIRS,
/SUBDIRECTORIES, wildcard file targets, recursive directory handling,
Novell-style help text and summary output.  Missing trustee entries are
reported with Novell-style "No trustee for the specified ..." messages.

Add shared trustee helpers and Client32 NCP87 trustee scan/delete
support.  Also adjust GRANT ALL so it matches Novell behavior by not
granting Supervisor implicitly; Supervisor must be granted explicitly.
2026-05-24 20:23:43 +02:00
Mario Fetka
fc97eb8d25 dosutils: add Novell-style paging to FLAG tools and SLIST
- add a shared DOS pager helper for long tool output
- page FLAG wildcard output with the Novell continue prompt
- fix FLAGDIR current-directory handling for "." and volume root
- add FLAGDIR wildcard directory listing support
- page FLAGDIR wildcard output like Novell FLAGDIR
- keep FLAGDIR display formatting aligned with Novell output
- make SLIST /CONTINUE enable continuous output
- keep SLIST bindery scanning compatible with ncpfs behavior
- preserve SLIST NET_ADDRESS display and default server marking
2026-05-24 15:51:38 +02:00
Mario Fetka
f940d2d88e dosutils: implement GRANT trustee management
- add GRANT as a new multi-call DOS utility
- implement Client32 NCP87 trustee-add helper
- resolve USER and GROUP bindery objects before granting rights
- support Novell-style rights lists, including ALL and N
- support directory trustee grants
- support file trustee grants via /FILES
- implement recursive grants via /SUBDIRECTORIES
- accept /SUBDIRS as a compatibility alias
- format GRANT success output close to Novell GRANT
- add GRANT comparison scripts for normal and recursive test cases
2026-05-24 13:27:07 +02:00
Mario Fetka
9ab65e2f00 dosutils: add RIGHTS and finish Novell-style display fixes
- add RIGHTS as a new multi-call DOS utility
- implement Client32 NCP87 effective-rights query helper
- map NCP effective-rights bits to Novell RIGHTS display order
- keep legacy directory-handle based rights lookup as fallback
- match Novell RIGHTS output for directories and files more closely
- remove hardcoded MARS/SYS and SYS display fallbacks from RIGHTS/FLAGDIR
- derive display prefixes from the active network drive where available
- adjust FLAGDIR output formatting to match Novell field alignment
- keep FLAG and SLIST unchanged after checking for hardcoded prefixes
2026-05-24 11:20:07 +02:00
Mario Fetka
456349088e Split DOS utility install between legacy and new binaries
Keep the previous DOS utility binary as netold.exe and use it as the
default source for legacy command names.  Install the new net.exe only for
tools that are not available in the legacy binary, currently SLIST, FLAG
and FLAGDIR.

Add CMake selection logic so maintainers can opt into installing the new
binary for all command names with MARS_NWE_INSTALL_NEW_DOSUTILS, while the
default install remains conservative for older NETX/DOSX-style setups.

Update the staged net.exe to the current Client32-enabled build and add
netold.exe as the preserved legacy binary.
2026-05-24 02:34:17 +02:00
Mario Fetka
f62ca19c50 Add Readme 2026-05-24 02:13:02 +02:00
Mario Fetka
ff92f72583 Add FLAGDIR utility and clean DOS utility build files
Add a NetWare-style FLAGDIR implementation for directory attributes and
register it in the multi-call DOS utility dispatcher.  The new command
supports the 386-style directory flags Normal, System, Hidden,
DeleteInhibit, Purge and RenameInhibit, and formats output close to the
Novell FLAGDIR tool for simple mapped paths.

Update the DOS utilities install/build metadata so flagdir.exe is emitted
alongside the other public tools.  Adjust the Open Watcom CMake build to
compile C sources into the build directory instead of leaving object files
in the source tree.

Move the historical Borland/TASM build files into doc/ to keep the active
source directory focused on the modern Watcom/CMake build.
2026-05-24 02:09:59 +02:00
Mario Fetka
83f8947ece Add Client32 NCP support for FLAG and FLAGDIR
Implement a working DOS Client32 NCP87 path using the NIOS resolver,
CONNOpenByReference and COMPATNcpRequestReply.

Add an initial FLAGDIR implementation for NetWare 386-style directory
attributes.  Support Normal, System, Hidden, Delete Inhibit, Purge and
Rename Inhibit, using the same Client32 NCP87 modify/read helpers.  Match
the Novell FLAGDIR display style more closely for simple mapped paths.

Also add/keep minimal TESTS coverage for the verified Client32 NCP87
attribute path.
2026-05-24 01:47:22 +02:00
Mario Fetka
87c1e50cf9 feat: add Client32 NCP support for FLAG 2026-05-24 00:33:28 +02:00
Mario Fetka
7f98d73738 test: add DOS interrupt and kernel test helpers 2026-05-24 00:33:17 +02:00
Mario Fetka
3a5b08a4bf feat: implement FLAG command handling 2026-05-24 00:33:03 +02:00