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
195 lines
8.5 KiB
Batchfile
195 lines
8.5 KiB
Batchfile
@ECHO OFF
|
|
REM CIXSTA.BAT
|
|
REM Automated CREATOR/xattr test for MARS NWE.
|
|
REM
|
|
REM PART1 runs as SUPERVISOR, prepares data and queues CIXC via DLYSTRT.
|
|
REM PART2 runs after CIXC has logged SUPERVISOR back in and collects results
|
|
REM from C:\CIXTMP into F:\CIXCMP.
|
|
REM
|
|
REM Optional NOPASSUSER readback requires:
|
|
REM SET LGNTPWD=your-supervisor-password
|
|
|
|
IF "%1"=="" GOTO PART1
|
|
IF "%1"=="PART2" GOTO PART2
|
|
IF "%1"=="part2" GOTO PART2
|
|
IF "%1"=="Part2" GOTO PART2
|
|
ECHO Usage: CIXSTA [PART2]
|
|
GOTO END
|
|
|
|
:PART1
|
|
F:
|
|
CD \
|
|
|
|
REM --- Clean generated test/result directories (contents only). ---
|
|
IF EXIST CIXTEST\NUL DELTREE /Y CIXTEST\*.*
|
|
IF EXIST CIXCMP\NUL DELTREE /Y CIXCMP\*.*
|
|
|
|
IF NOT EXIST CIXTEST\NUL MD CIXTEST
|
|
IF NOT EXIST CIXTEST\SUP\NUL MD CIXTEST\SUP
|
|
IF NOT EXIST CIXCMP\NUL MD CIXCMP
|
|
IF NOT EXIST CIXCMP\PRE\NUL MD CIXCMP\PRE
|
|
IF NOT EXIST CIXCMP\POST\NUL MD CIXCMP\POST
|
|
IF NOT EXIST CIXCMP\LINUX\NUL MD CIXCMP\LINUX
|
|
IF NOT EXIST CIXCMP\UNOV\NUL MD CIXCMP\UNOV
|
|
IF NOT EXIST CIXCMP\UPUB\NUL MD CIXCMP\UPUB
|
|
IF NOT EXIST CIXCMP\UCREATOR\NUL MD CIXCMP\UCREATOR
|
|
|
|
IF EXIST F:\CIXCMP\RUN.LOG DEL F:\CIXCMP\RUN.LOG
|
|
IF EXIST F:\CIXCMP\SUMMARY.TXT DEL F:\CIXCMP\SUMMARY.TXT
|
|
IF EXIST F:\CIXCMP\CIXSTA.ZIP DEL F:\CIXCMP\CIXSTA.ZIP
|
|
IF EXIST F:\CIXCMP\ZIP.LOG DEL F:\CIXCMP\ZIP.LOG
|
|
|
|
IF EXIST F:\CIXCMP\PRE\*.OUT DEL F:\CIXCMP\PRE\*.OUT
|
|
IF EXIST F:\CIXCMP\POST\*.OUT DEL F:\CIXCMP\POST\*.OUT
|
|
IF EXIST F:\CIXCMP\LINUX\*.TXT DEL F:\CIXCMP\LINUX\*.TXT
|
|
IF EXIST F:\CIXCMP\UNOV\*.OUT DEL F:\CIXCMP\UNOV\*.OUT
|
|
IF EXIST F:\CIXCMP\UPUB\*.OUT DEL F:\CIXCMP\UPUB\*.OUT
|
|
IF EXIST F:\CIXCMP\UCREATOR\*.OUT DEL F:\CIXCMP\UCREATOR\*.OUT
|
|
IF EXIST F:\CIXCMP\UCOMP.LOG DEL F:\CIXCMP\UCOMP.LOG
|
|
IF EXIST F:\CIXCMP\HELPER.TXT DEL F:\CIXCMP\HELPER.TXT
|
|
IF EXIST F:\CIXCMP\ULOG1.OUT DEL F:\CIXCMP\ULOG1.OUT
|
|
IF EXIST F:\CIXCMP\ULOGIN.OUT DEL F:\CIXCMP\ULOGIN.OUT
|
|
IF EXIST F:\CIXCMP\ULOG2.OUT DEL F:\CIXCMP\ULOG2.OUT
|
|
IF EXIST F:\CIXCMP\ULGSUP.OUT DEL F:\CIXCMP\ULGSUP.OUT
|
|
|
|
REM Reset files from previous runs.
|
|
IF EXIST F:\CIXTEST\SUP\S_SUP.TXT DEL F:\CIXTEST\SUP\S_SUP.TXT
|
|
IF EXIST F:\CIXTEST\SUP\S_ARCH.TXT DEL F:\CIXTEST\SUP\S_ARCH.TXT
|
|
IF EXIST F:\CIXTEST\SUP\S_ALL.TXT DEL F:\CIXTEST\SUP\S_ALL.TXT
|
|
|
|
ECHO CIXSTA creator/xattr test using PUBLIC\CREATOR > F:\CIXCMP\RUN.LOG
|
|
ECHO Run this as SUPERVISOR. >> F:\CIXCMP\RUN.LOG
|
|
ECHO Date/time stamp skipped to avoid DOS prompt. >> F:\CIXCMP\RUN.LOG
|
|
ECHO Optional user-context target: NOPASSUSER >> F:\CIXCMP\RUN.LOG
|
|
ECHO. >> F:\CIXCMP\RUN.LOG
|
|
|
|
ECHO SUP CREATOR FILE > F:\CIXTEST\SUP\S_SUP.TXT
|
|
ECHO SUP ARCHIVE FILE > F:\CIXTEST\SUP\S_ARCH.TXT
|
|
ECHO SUP ALL FILE > F:\CIXTEST\SUP\S_ALL.TXT
|
|
|
|
NPUBLIC\FLAG F:\CIXTEST\SUP\S_SUP.TXT N >> F:\CIXCMP\RUN.LOG
|
|
NPUBLIC\FLAG F:\CIXTEST\SUP\S_ARCH.TXT N >> F:\CIXCMP\RUN.LOG
|
|
NPUBLIC\FLAG F:\CIXTEST\SUP\S_ALL.TXT N >> F:\CIXCMP\RUN.LOG
|
|
|
|
ECHO === PRE READBACK === >> F:\CIXCMP\RUN.LOG
|
|
NPUBLIC\NDIR F:\CIXTEST\SUP /DATES > F:\CIXCMP\PRE\SUPDAT.OUT
|
|
NPUBLIC\NDIR F:\CIXTEST\SUP /RIGHTS > F:\CIXCMP\PRE\SUPRGT.OUT
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_SUP.TXT /SHOW > F:\CIXCMP\PRE\CSUP.OUT
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_ARCH.TXT /SHOW > F:\CIXCMP\PRE\CARCH.OUT
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_ALL.TXT /SHOW > F:\CIXCMP\PRE\CALL.OUT
|
|
|
|
ECHO === CREATOR TOOL SET INFO === >> F:\CIXCMP\RUN.LOG
|
|
|
|
REM Set fileinfo xattr fields.
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_SUP.TXT /CREATOR MARIO >> F:\CIXCMP\RUN.LOG
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_SUP.TXT /MODIFIER MARIO >> F:\CIXCMP\RUN.LOG
|
|
|
|
REM Set archive xattr fields.
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_ARCH.TXT /ARCHIVE MARIO >> F:\CIXCMP\RUN.LOG
|
|
|
|
REM Set all three groups with one command and explicit date/time.
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_ALL.TXT /ALL MARIO 2026-05-25 16:12:00 >> F:\CIXCMP\RUN.LOG
|
|
|
|
ECHO === POST READBACK === >> F:\CIXCMP\RUN.LOG
|
|
NPUBLIC\NDIR F:\CIXTEST\SUP /DATES > F:\CIXCMP\POST\SUPDAT.OUT
|
|
NPUBLIC\NDIR F:\CIXTEST\SUP /RIGHTS > F:\CIXCMP\POST\SUPRGT.OUT
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_SUP.TXT /SHOW > F:\CIXCMP\POST\CSUP.OUT
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_ARCH.TXT /SHOW > F:\CIXCMP\POST\CARCH.OUT
|
|
PUBLIC\CREATOR F:\CIXTEST\SUP\S_ALL.TXT /SHOW > F:\CIXCMP\POST\CALL.OUT
|
|
|
|
NPUBLIC\FLAG F:\CIXTEST\SUP\S_SUP.TXT > F:\CIXCMP\POST\FSUP.OUT
|
|
NPUBLIC\FLAG F:\CIXTEST\SUP\S_ARCH.TXT > F:\CIXCMP\POST\FARCH.OUT
|
|
NPUBLIC\FLAG F:\CIXTEST\SUP\S_ALL.TXT > F:\CIXCMP\POST\FALL.OUT
|
|
|
|
REM Allow NOPASSUSER to read this tree for optional user-context readback.
|
|
REM Creator metadata is set by SUPERVISOR above; the helper only verifies
|
|
REM that /SHOW and effective rights look sane for a normal user.
|
|
\NPUBLIC\GRANT R F FOR F:\CIXTEST\SUP TO USER NOPASSUSER > F:\CIXCMP\POST\UGRANTD.OUT
|
|
\NPUBLIC\GRANT R F FOR F:\CIXTEST\SUP\S_SUP.TXT TO USER NOPASSUSER > F:\CIXCMP\POST\UGRNTS.OUT
|
|
\NPUBLIC\GRANT R F FOR F:\CIXTEST\SUP\S_ARCH.TXT TO USER NOPASSUSER > F:\CIXCMP\POST\UGRNTA.OUT
|
|
\NPUBLIC\GRANT R F FOR F:\CIXTEST\SUP\S_ALL.TXT TO USER NOPASSUSER > F:\CIXCMP\POST\UGRNTL.OUT
|
|
|
|
REM --- Queue delayed NOPASSUSER readback helper. ---
|
|
IF "%LGNTPWD%"=="" GOTO NEEDPWD
|
|
IF EXIST C:\CIXTMP\*.* DELTREE /Y C:\CIXTMP
|
|
IF NOT EXIST C:\CIXTMP MD C:\CIXTMP
|
|
IF NOT EXIST C:\CIXTMP\UNOV MD C:\CIXTMP\UNOV
|
|
IF NOT EXIST C:\CIXTMP\UPUB MD C:\CIXTMP\UPUB
|
|
IF NOT EXIST C:\CIXTMP\UCREATOR MD C:\CIXTMP\UCREATOR
|
|
|
|
REM DLYSTRT must be local because F: disappears after LOGOUT.
|
|
IF EXIST \PUBLIC\DLYSTRT.EXE COPY \PUBLIC\DLYSTRT.EXE C:\CIXTMP > NUL
|
|
IF EXIST C:\CIXTMP\DLYSTRT.EXE GOTO HAVEDLY
|
|
ECHO ERROR: DLYSTRT.EXE not found. >> F:\CIXCMP\RUN.LOG
|
|
ECHO ERROR: DLYSTRT.EXE not found.
|
|
GOTO END
|
|
|
|
:HAVEDLY
|
|
REM Only the helper and DLYSTRT must be local. CIXSTA stays on F:\ and is
|
|
REM started as F:\CIXSTA.BAT PART2 after the SUPERVISOR re-login.
|
|
COPY F:\CIXC.BAT C:\CIXTMP\CIXC.BAT > NUL
|
|
|
|
C:
|
|
CD \CIXTMP
|
|
DLYSTRT /T:2 CIXC.BAT
|
|
ECHO CIXC queued via DLYSTRT. >> F:\CIXCMP\RUN.LOG
|
|
ECHO CIXC wurde via DLYSTRT gestartet.
|
|
ECHO Nach automatischem Re-Login wird CIXSTA PART2 gestartet.
|
|
GOTO END
|
|
|
|
:PART2
|
|
F:
|
|
CD \
|
|
IF NOT EXIST CIXCMP\UNOV MD CIXCMP\UNOV
|
|
IF NOT EXIST CIXCMP\UPUB MD CIXCMP\UPUB
|
|
IF NOT EXIST CIXCMP\UCREATOR MD CIXCMP\UCREATOR
|
|
|
|
IF EXIST C:\CIXTMP\UNOV\*.* COPY C:\CIXTMP\UNOV\*.* F:\CIXCMP\UNOV > NUL
|
|
IF EXIST C:\CIXTMP\UPUB\*.* COPY C:\CIXTMP\UPUB\*.* F:\CIXCMP\UPUB > NUL
|
|
IF EXIST C:\CIXTMP\UCREATOR\*.* COPY C:\CIXTMP\UCREATOR\*.* F:\CIXCMP\UCREATOR > NUL
|
|
IF EXIST C:\CIXTMP\HELPER.TXT COPY C:\CIXTMP\HELPER.TXT F:\CIXCMP\HELPER.TXT > NUL
|
|
IF EXIST C:\CIXTMP\ULOG1.OUT COPY C:\CIXTMP\ULOG1.OUT F:\CIXCMP\ULOG1.OUT > NUL
|
|
IF EXIST C:\CIXTMP\ULOGIN.OUT COPY C:\CIXTMP\ULOGIN.OUT F:\CIXCMP\ULOGIN.OUT > NUL
|
|
IF EXIST C:\CIXTMP\ULOG2.OUT COPY C:\CIXTMP\ULOG2.OUT F:\CIXCMP\ULOG2.OUT > NUL
|
|
IF EXIST C:\CIXTMP\ULGSUP.OUT COPY C:\CIXTMP\ULGSUP.OUT F:\CIXCMP\ULGSUP.OUT > NUL
|
|
|
|
ECHO === COMPARE NOPASSUSER NOVELL RIGHTS AGAINST PUBLIC RIGHTS === > F:\CIXCMP\UCOMP.LOG
|
|
ECHO Comparing SUP directory >> F:\CIXCMP\UCOMP.LOG
|
|
FC F:\CIXCMP\UNOV\SUPRGT.OUT F:\CIXCMP\UPUB\SUPRGT.OUT >> F:\CIXCMP\UCOMP.LOG
|
|
ECHO Comparing S_SUP.TXT >> F:\CIXCMP\UCOMP.LOG
|
|
FC F:\CIXCMP\UNOV\RSUP.OUT F:\CIXCMP\UPUB\RSUP.OUT >> F:\CIXCMP\UCOMP.LOG
|
|
ECHO Comparing S_ARCH.TXT >> F:\CIXCMP\UCOMP.LOG
|
|
FC F:\CIXCMP\UNOV\RARCH.OUT F:\CIXCMP\UPUB\RARCH.OUT >> F:\CIXCMP\UCOMP.LOG
|
|
ECHO Comparing S_ALL.TXT >> F:\CIXCMP\UCOMP.LOG
|
|
FC F:\CIXCMP\UNOV\RALL.OUT F:\CIXCMP\UPUB\RALL.OUT >> F:\CIXCMP\UCOMP.LOG
|
|
|
|
ECHO === SUMMARY === > F:\CIXCMP\SUMMARY.TXT
|
|
ECHO CIXSTA creator/xattr test with PUBLIC\CREATOR finished. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO Expected: >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO - S_SUP.TXT has creator/modifier MARIO via user.mars_nwe.fileinfo. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO - S_ARCH.TXT has archive date/time/archiver MARIO via user.mars_nwe.archive. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO - S_ALL.TXT has fileinfo and archive metadata with explicit date/time. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO - POST\C*.OUT shows PUBLIC\CREATOR /SHOW readback. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO - POST\SUPDAT.OUT shows NDIR /DATES readback. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO - UCREATOR/UNOV/UPUB show NOPASSUSER readback. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO. >> F:\CIXCMP\SUMMARY.TXT
|
|
ECHO Next Linux-side step: run cix_collect_xattr.sh, then CIXZIP. >> F:\CIXCMP\SUMMARY.TXT
|
|
|
|
ECHO.
|
|
ECHO CIXSTA PART2 fertig.
|
|
ECHO Jetzt auf Linux cix_collect_xattr.sh ausfuehren, dann CIXZIP.
|
|
ECHO.
|
|
GOTO END
|
|
|
|
:NEEDPWD
|
|
ECHO ERROR: LGNTPWD ist nicht gesetzt.
|
|
ECHO Fuer den automatischen CREATOR/NOPASSUSER-Test zuerst setzen, z.B.:
|
|
ECHO SET LGNTPWD=dein-supervisor-passwort
|
|
ECHO Danach starten:
|
|
ECHO F:\CIXSTA
|
|
ECHO Es wurde kein DLYSTRT installiert und kein User-Kontext-Test gestartet.
|
|
GOTO END
|
|
|
|
:END
|