Files
mars-dosutils/test/login/README.md
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

3.1 KiB

LOGIN / LOGOUT baseline test

LGNTSTA is an automated maintainer baseline test for Novell LOGIN, LOGOUT, and MAP.

This test does not overwrite SYS:LOGIN, SYS:PUBLIC, or SYS:NPUBLIC. It copies the Novell tools to a temporary local directory on C: and runs from there. LOGIN and MAP are copied from SYS:NLOGIN; LOGOUT is copied from SYS:NPUBLIC. The maintainer helper DLYSTRT.EXE is also copied to C:\LGNTTMP before it is used, so the delayed phase no longer depends on F: or PUBLIC being visible.

Required setup

User NOPASSUSER must exist on MARS and must be able to login without a password.

For a fully automated run, the DOS tools must be built with MAINTAINER_BUILD=ON so LOGIN /PWD: and DLYSTRT are available.

Set the supervisor password in the DOS environment before starting:

SET LGNTPWD=your-supervisor-password

The password is not written to RUN.LOG or HELPER.TXT, but it is still present in the DOS environment during the test. Use this only for maintainer testing.

Run

Start while logged in as SUPERVISOR:

F:\LGNTSTA

LGNTSTA prepares C:\LGNTTMP, copies the local helper there, and installs:

C:
CD \LGNTTMP
DLYSTRT /T:2 LGNTC.BAT

Then LGNTSTA exits after switching to C:\LGNTTMP. After the delay, DLYSTRT types LGNTC.BAT into the local C: prompt, and the helper does:

LOGOUT
LOGIN NOPASSUSER
MAP
LOGOUT
LOGIN SUPERVISOR /PWD:%LGNTPWD%
F:\LGNTSTA PART2
F:\LGNTZIP

If LGNTPWD is not set, LGNTSTA does not start Part 1 at all. It prints a short usage hint with the required SET LGNTPWD=... command and does not install DLYSTRT, so the test cannot accidentally log out and then stop half-way through.

Expected output files

F:\LGNTCMP\OUT contains:

D01_LOG.OUT   LOGOUT output from initial supervisor session
D02_LGIN.OUT  LOGIN NOPASSUSER output
D03_MAP.OUT   MAP output after NOPASSUSER login
D04_LGOT.OUT  LOGOUT output from NOPASSUSER session
D05_LGSU.OUT  LOGIN SUPERVISOR /PWD output, if LGNTPWD was set
D99_HELP.OUT  simulated LOGIN usage line for later comparison
HELPER.TXT    helper trace

D99_HELP.OUT is intentionally produced with ECHO, because Novell LOGIN /? may not redirect help text reliably.

Implementation note

After LOGOUT, the network drive F: disappears. Therefore LGNTSTA must finish before logout happens. DLYSTRT provides that gap by returning to DOS first. LGNTSTA switches to C:\LGNTTMP before installing it, so the delayed command is typed into a local C: prompt instead of an F: prompt.

After LOGIN NOPASSUSER, DOS/NetWare may change the current drive/search path. LGNTC.BAT therefore calls C:\LGNTTMP\LOGIN, C:\LGNTTMP\MAP, and C:\LGNTTMP\LOGOUT explicitly and redirects to absolute C:\LGNTTMP\*.OUT files.

Parameter handling

LGNTSTA starts Part 1 only when called without parameters. PART2 is accepted case-insensitively (PART2, part2, Part2, etc.). Any other parameter prints usage and does not start Part 1, so a typo cannot accidentally reset the test state.