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.
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.
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.
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.
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.
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.
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
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.
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.