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
This commit is contained in:
Mario Fetka
2026-05-29 07:40:04 +02:00
parent 5da600c2a5
commit 4a952b4c4c
36 changed files with 5873 additions and 943 deletions

149
test/ndir/NDIRC.BAT Normal file
View File

@@ -0,0 +1,149 @@
@ECHO OFF
REM NDIRC.BAT
REM Delayed helper for NDIRTSTA user-context test.
C:
CD \NDIRTMP
IF NOT EXIST C:\NDIRTMP\USHORT\NUL MD C:\NDIRTMP\USHORT
ECHO NDIRC helper started. > C:\NDIRTMP\HELPER.TXT
ECHO Running NOPASSUSER NDIR readback. >> C:\NDIRTMP\HELPER.TXT
LOGOUT > C:\NDIRTMP\D01_LOG.OUT
LOGIN NOPASSUSER > C:\NDIRTMP\D02_LGIN.OUT
F:
CD \
ECHO U10 ROOT as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR /RIGHTS > C:\NDIRTMP\UNOV\U10_ROOT.OUT
\PUBLIC\NDIR F:\TNDIR /RIGHTS > C:\NDIRTMP\UPUB\U10_ROOT.OUT
ECHO U11 RF as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\URF /RIGHTS > C:\NDIRTMP\UNOV\U11_RF.OUT
\PUBLIC\NDIR F:\TNDIR\URF /RIGHTS > C:\NDIRTMP\UPUB\U11_RF.OUT
ECHO U12 FULL as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\UFULL /RIGHTS > C:\NDIRTMP\UNOV\U12_FULL.OUT
\PUBLIC\NDIR F:\TNDIR\UFULL /RIGHTS > C:\NDIRTMP\UPUB\U12_FULL.OUT
ECHO U13 S as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\US /RIGHTS > C:\NDIRTMP\UNOV\U13_S.OUT
\PUBLIC\NDIR F:\TNDIR\US /RIGHTS > C:\NDIRTMP\UPUB\U13_S.OUT
ECHO U14 N as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\UNONE /RIGHTS > C:\NDIRTMP\UNOV\U14_N.OUT
\PUBLIC\NDIR F:\TNDIR\UNONE /RIGHTS > C:\NDIRTMP\UPUB\U14_N.OUT
ECHO U15 SUB as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\USUB /SUB /RIGHTS > C:\NDIRTMP\UNOV\U15_SUB.OUT
\PUBLIC\NDIR F:\TNDIR\USUB /SUB /RIGHTS > C:\NDIRTMP\UPUB\U15_SUB.OUT
ECHO U16 wildcard as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\*.TXT > C:\NDIRTMP\UNOV\U16_TXT.OUT
\PUBLIC\NDIR F:\TNDIR\*.TXT > C:\NDIRTMP\UPUB\U16_TXT.OUT
ECHO U17 matrix root as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\MAT /RIGHTS > C:\NDIRTMP\UNOV\U17_MATR.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /RIGHTS > C:\NDIRTMP\UPUB\U17_MATR.OUT
ECHO U18 matrix dates as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\MAT /DATES > C:\NDIRTMP\UNOV\U18_MDAT.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /DATES > C:\NDIRTMP\UPUB\U18_MDAT.OUT
ECHO U19 matrix files only as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\MAT /FO > C:\NDIRTMP\UNOV\U19_MFO.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /FO > C:\NDIRTMP\UPUB\U19_MFO.OUT
ECHO U20 matrix dirs only as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\MAT /DO > C:\NDIRTMP\UNOV\U20_MDO.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /DO > C:\NDIRTMP\UPUB\U20_MDO.OUT
ECHO U21 matrix sub rights as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\MAT /SUB /RIGHTS > C:\NDIRTMP\UNOV\U21_MSUB.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /SUB /RIGHTS > C:\NDIRTMP\UPUB\U21_MSUB.OUT
ECHO U22 matrix hidden filter as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\MAT /H > C:\NDIRTMP\UNOV\U22_MH.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /H > C:\NDIRTMP\UPUB\U22_MH.OUT
ECHO U23 matrix wildcard as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\MAT\*.TXT > C:\NDIRTMP\UNOV\U23_MTXT.OUT
\PUBLIC\NDIR F:\TNDIR\MAT\*.TXT > C:\NDIRTMP\UPUB\U23_MTXT.OUT
ECHO U24 user matrix rights as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\USR /RIGHTS > C:\NDIRTMP\UNOV\U24_USRR.OUT
\PUBLIC\NDIR F:\TNDIR\USR /RIGHTS > C:\NDIRTMP\UPUB\U24_USRR.OUT
ECHO U25 user matrix sub rights as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\USR /SUB /RIGHTS > C:\NDIRTMP\UNOV\U25_USRS.OUT
\PUBLIC\NDIR F:\TNDIR\USR /SUB /RIGHTS > C:\NDIRTMP\UPUB\U25_USRS.OUT
ECHO U26 user matrix dirs only rights as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\USR /DO /RIGHTS > C:\NDIRTMP\UNOV\U26_USRD.OUT
\PUBLIC\NDIR F:\TNDIR\USR /DO /RIGHTS > C:\NDIRTMP\UPUB\U26_USRD.OUT
ECHO U27 user matrix wildcard as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\USR\*.TXT > C:\NDIRTMP\UNOV\U27_USRT.OUT
\PUBLIC\NDIR F:\TNDIR\USR\*.TXT > C:\NDIRTMP\UPUB\U27_USRT.OUT
ECHO U28 user matrix dates as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\USR /DATES > C:\NDIRTMP\UNOV\U28_USRD.OUT
\PUBLIC\NDIR F:\TNDIR\USR /DATES > C:\NDIRTMP\UPUB\U28_USRD.OUT
ECHO U29 group EVERYONE view as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\USR\U_EVERYF /RIGHTS > C:\NDIRTMP\UNOV\U29_EVRF.OUT
\PUBLIC\NDIR F:\TNDIR\USR\U_EVERYF /RIGHTS > C:\NDIRTMP\UPUB\U29_EVRF.OUT
ECHO U30 NOPASSUSER S child view >> C:\NDIRTMP\HELPER.TXT
\NPUBLIC\NDIR F:\TNDIR\USR\U_CHILD /SUB /RIGHTS > C:\NDIRTMP\UNOV\U30_CHLD.OUT
\PUBLIC\NDIR F:\TNDIR\USR\U_CHILD /SUB /RIGHTS > C:\NDIRTMP\UPUB\U30_CHLD.OUT
ECHO PUBLIC-only /SHORT outputs as NOPASSUSER >> C:\NDIRTMP\HELPER.TXT
\PUBLIC\NDIR F:\TNDIR /RIGHTS /SHORT > C:\NDIRTMP\USHORT\US10_ROOT.OUT
\PUBLIC\NDIR F:\TNDIR\URF /RIGHTS /SHORT > C:\NDIRTMP\USHORT\US11_RF.OUT
\PUBLIC\NDIR F:\TNDIR\USUB /SUB /RIGHTS /SHORT > C:\NDIRTMP\USHORT\US15_SUB.OUT
\PUBLIC\NDIR F:\TNDIR\*.TXT /SHORT > C:\NDIRTMP\USHORT\US16_TXT.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /RIGHTS /SHORT > C:\NDIRTMP\USHORT\US17_MATR.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /SUB /RIGHTS /SHORT > C:\NDIRTMP\USHORT\US21_MSUB.OUT
\PUBLIC\NDIR F:\TNDIR\USR /SUB /RIGHTS /SHORT > C:\NDIRTMP\USHORT\US25_USRS.OUT
ECHO === NDIR USER CONTEXT COMPARE === > C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U10_ROOT.OUT C:\NDIRTMP\UPUB\U10_ROOT.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U11_RF.OUT C:\NDIRTMP\UPUB\U11_RF.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U12_FULL.OUT C:\NDIRTMP\UPUB\U12_FULL.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U13_S.OUT C:\NDIRTMP\UPUB\U13_S.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U14_N.OUT C:\NDIRTMP\UPUB\U14_N.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U15_SUB.OUT C:\NDIRTMP\UPUB\U15_SUB.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U16_TXT.OUT C:\NDIRTMP\UPUB\U16_TXT.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U17_MATR.OUT C:\NDIRTMP\UPUB\U17_MATR.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U18_MDAT.OUT C:\NDIRTMP\UPUB\U18_MDAT.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U19_MFO.OUT C:\NDIRTMP\UPUB\U19_MFO.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U20_MDO.OUT C:\NDIRTMP\UPUB\U20_MDO.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U21_MSUB.OUT C:\NDIRTMP\UPUB\U21_MSUB.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U22_MH.OUT C:\NDIRTMP\UPUB\U22_MH.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U23_MTXT.OUT C:\NDIRTMP\UPUB\U23_MTXT.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U24_USRR.OUT C:\NDIRTMP\UPUB\U24_USRR.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U25_USRS.OUT C:\NDIRTMP\UPUB\U25_USRS.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U26_USRD.OUT C:\NDIRTMP\UPUB\U26_USRD.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U27_USRT.OUT C:\NDIRTMP\UPUB\U27_USRT.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U28_USRD.OUT C:\NDIRTMP\UPUB\U28_USRD.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U29_EVRF.OUT C:\NDIRTMP\UPUB\U29_EVRF.OUT >> C:\NDIRTMP\UCOMP.LOG
FC C:\NDIRTMP\UNOV\U30_CHLD.OUT C:\NDIRTMP\UPUB\U30_CHLD.OUT >> C:\NDIRTMP\UCOMP.LOG
LOGOUT > C:\NDIRTMP\D03_LGOT.OUT
F:\LOGIN\LOGIN SUPERVISOR /PWD:%LGNTPWD% > C:\NDIRTMP\D04_LGSU.OUT
F:
CD \
IF EXIST \NDIRTSTA.BAT GOTO HAVEF
ECHO F: wurde nicht wiederhergestellt oder \NDIRTSTA.BAT fehlt. >> C:\NDIRTMP\HELPER.TXT
GOTO END
:HAVEF
C:
CD \NDIRTMP
DLYSTRT /T:2 F:\NDIRTSTA.BAT PART2
:END

View File

@@ -1,172 +1,376 @@
@ECHO OFF
REM NDIRTSTA.BAT
REM Automated Novell NDIR baseline for MARS NWE.
REM Automated NDIR compare test for MARS NWE.
REM
REM No PAUSE, no screenshots required.
REM All output is redirected into F:\NDCMP.
REM OUT/PUBOUT:
REM Novell NPUBLIC\NDIR baseline vs PUBLIC\NDIR implementation.
REM
REM Test tree:
REM F:\TNDIR
REM UNOV/UPUB:
REM NOPASSUSER context readback, started through DLYSTRT.
REM
REM Results:
REM F:\NDCMP\RUN.LOG
REM F:\NDCMP\SUMMARY.TXT
REM F:\NDCMP\OUT\*.OUT
REM SHORTOUT/USHORT:
REM PUBLIC-only /SHORT helper output. /SHORT is our local option and is
REM not compared against Novell NDIR.
REM
REM Required for user-context part:
REM SET LGNTPWD=<supervisor-password>
IF "%1"=="" GOTO PART1
IF "%1"=="PART2" GOTO PART2
IF "%1"=="part2" GOTO PART2
IF "%1"=="Part2" GOTO PART2
GOTO USAGE
:USAGE
ECHO Usage: NDIRTSTA [PART2]
ECHO.
ECHO For full automatic user-context test first set:
ECHO SET LGNTPWD=dein-supervisor-passwort
GOTO END
:PART1
IF "%LGNTPWD%"=="" GOTO NEEDPWD
F:
CD \
REM --- Clean generated test/result directories (contents only). ---
IF EXIST NDIRTEST\NUL DELTREE /Y NDIRTEST\*.*
IF EXIST NDIRCMP\NUL DELTREE /Y NDIRCMP\*.*
REM --- Clean generated test/result directories. ---
IF EXIST TNDIR\NUL DELTREE /Y TNDIR > NUL
IF EXIST NDCMP\NUL DELTREE /Y NDCMP > NUL
IF EXIST C:\NDIRTMP\NUL DELTREE /Y C:\NDIRTMP > NUL
REM --- Directory setup ---
IF NOT EXIST TNDIR\NUL MD TNDIR
IF NOT EXIST TNDIR\SUBDIR\NUL MD TNDIR\SUBDIR
IF NOT EXIST NDCMP\NUL MD NDCMP
IF NOT EXIST NDCMP\OUT\NUL MD NDCMP\OUT
REM --- Directory setup. ---
MD TNDIR
MD TNDIR\SUBDIR
MD TNDIR\SUBDIR\DEEP
MD TNDIR\URF
MD TNDIR\UFULL
MD TNDIR\US
MD TNDIR\UNONE
MD TNDIR\USUB
MD TNDIR\USUB\CHILD
MD TNDIR\MAT
MD TNDIR\MAT\D_NORM
MD TNDIR\MAT\D_HID
MD TNDIR\MAT\D_SYS
MD TNDIR\MAT\D_PUR
MD TNDIR\MAT\D_DIRI
MD TNDIR\MAT\D_MIX
MD TNDIR\MAT\D_SUB
MD TNDIR\MAT\D_SUB\CHILD
MD TNDIR\USR
MD TNDIR\USR\U_EVERYR
MD TNDIR\USR\U_EVERYF
MD TNDIR\USR\U_MARIO
MD TNDIR\USR\U_GUEST
MD TNDIR\USR\U_NOPWCM
MD TNDIR\USR\U_NOPREM
MD TNDIR\USR\U_NOPRF
MD TNDIR\USR\U_CHILD
MD TNDIR\USR\U_CHILD\DEEP
REM --- Clean result files, no wildcard DEL to avoid DOS prompts ---
IF EXIST F:\NDCMP\RUN.LOG DEL F:\NDCMP\RUN.LOG
IF EXIST F:\NDCMP\SUMMARY.TXT DEL F:\NDCMP\SUMMARY.TXT
IF EXIST F:\NDCMP\ZIP.LOG DEL F:\NDCMP\ZIP.LOG
IF EXIST F:\NDCMP\NDIRTSTA.ZIP DEL F:\NDCMP\NDIRTSTA.ZIP
MD NDCMP
MD NDCMP\OUT
MD NDCMP\PUBOUT
MD NDCMP\SETUP
MD NDCMP\SHORTOUT
MD NDCMP\UNOV
MD NDCMP\UPUB
MD NDCMP\USHORT
MD NDCMP\USETUP
IF EXIST F:\NDCMP\OUT\N01_ROOT.OUT DEL F:\NDCMP\OUT\N01_ROOT.OUT
IF EXIST F:\NDCMP\OUT\N02_ALFA.OUT DEL F:\NDCMP\OUT\N02_ALFA.OUT
IF EXIST F:\NDCMP\OUT\N02_BETA.OUT DEL F:\NDCMP\OUT\N02_BETA.OUT
IF EXIST F:\NDCMP\OUT\N03_DATES.OUT DEL F:\NDCMP\OUT\N03_DATES.OUT
IF EXIST F:\NDCMP\OUT\N03_ADATE.OUT DEL F:\NDCMP\OUT\N03_ADATE.OUT
IF EXIST F:\NDCMP\OUT\N04_RGT.OUT DEL F:\NDCMP\OUT\N04_RGT.OUT
IF EXIST F:\NDCMP\OUT\N04_RGTA.OUT DEL F:\NDCMP\OUT\N04_RGTA.OUT
IF EXIST F:\NDCMP\OUT\N05_FLGA.OUT DEL F:\NDCMP\OUT\N05_FLGA.OUT
IF EXIST F:\NDCMP\OUT\N05_FLGB.OUT DEL F:\NDCMP\OUT\N05_FLGB.OUT
IF EXIST F:\NDCMP\OUT\N05_FLGG.OUT DEL F:\NDCMP\OUT\N05_FLGG.OUT
IF EXIST F:\NDCMP\OUT\N06_ATTR.OUT DEL F:\NDCMP\OUT\N06_ATTR.OUT
IF EXIST F:\NDCMP\OUT\N06_ADAT.OUT DEL F:\NDCMP\OUT\N06_ADAT.OUT
IF EXIST F:\NDCMP\OUT\N07_H.OUT DEL F:\NDCMP\OUT\N07_H.OUT
IF EXIST F:\NDCMP\OUT\N07_RO.OUT DEL F:\NDCMP\OUT\N07_RO.OUT
IF EXIST F:\NDCMP\OUT\N07_SY.OUT DEL F:\NDCMP\OUT\N07_SY.OUT
IF EXIST F:\NDCMP\OUT\N07_A.OUT DEL F:\NDCMP\OUT\N07_A.OUT
IF EXIST F:\NDCMP\OUT\N08_NOTH.OUT DEL F:\NDCMP\OUT\N08_NOTH.OUT
IF EXIST F:\NDCMP\OUT\N08_NOTR.OUT DEL F:\NDCMP\OUT\N08_NOTR.OUT
IF EXIST F:\NDCMP\OUT\N09_SUN.OUT DEL F:\NDCMP\OUT\N09_SUN.OUT
IF EXIST F:\NDCMP\OUT\N09_SSI.OUT DEL F:\NDCMP\OUT\N09_SSI.OUT
IF EXIST F:\NDCMP\OUT\N09_SUP.OUT DEL F:\NDCMP\OUT\N09_SUP.OUT
IF EXIST F:\NDCMP\OUT\N10_TXT.OUT DEL F:\NDCMP\OUT\N10_TXT.OUT
IF EXIST F:\NDCMP\OUT\N10_DAT.OUT DEL F:\NDCMP\OUT\N10_DAT.OUT
IF EXIST F:\NDCMP\OUT\N11_FO.OUT DEL F:\NDCMP\OUT\N11_FO.OUT
IF EXIST F:\NDCMP\OUT\N11_DO.OUT DEL F:\NDCMP\OUT\N11_DO.OUT
IF EXIST F:\NDCMP\OUT\N12_SUB.OUT DEL F:\NDCMP\OUT\N12_SUB.OUT
IF EXIST F:\NDCMP\OUT\N12_SDIR.OUT DEL F:\NDCMP\OUT\N12_SDIR.OUT
IF EXIST F:\NDCMP\OUT\N14_FINAL.OUT DEL F:\NDCMP\OUT\N14_FINAL.OUT
ECHO NDIRTSTA automated Novell NDIR baseline > F:\NDCMP\RUN.LOG
ECHO NDIRTSTA NDIR compare test > F:\NDCMP\RUN.LOG
ECHO Date/time stamp skipped to avoid DOS prompt. >> F:\NDCMP\RUN.LOG
ECHO. >> F:\NDCMP\RUN.LOG
ECHO === SETUP TEST TREE === >> F:\NDCMP\RUN.LOG
REM Reset test files.
IF EXIST F:\TNDIR\ALPHA.TXT DEL F:\TNDIR\ALPHA.TXT
IF EXIST F:\TNDIR\BETA.TXT DEL F:\TNDIR\BETA.TXT
IF EXIST F:\TNDIR\GAMMA.DAT DEL F:\TNDIR\GAMMA.DAT
IF EXIST F:\TNDIR\SUBDIR\SUB.TXT DEL F:\TNDIR\SUBDIR\SUB.TXT
IF NOT EXIST F:\TNDIR\NUL MD F:\TNDIR
IF NOT EXIST F:\TNDIR\SUBDIR\NUL MD F:\TNDIR\SUBDIR
REM --- Test files. ---
ECHO NDIR TEST ALPHA > F:\TNDIR\ALPHA.TXT
ECHO NDIR TEST BETA > F:\TNDIR\BETA.TXT
ECHO NDIR TEST GAMMA > F:\TNDIR\GAMMA.DAT
ECHO NDIR SUB FILE > F:\TNDIR\SUBDIR\SUB.TXT
ECHO NDIR DEEP FILE > F:\TNDIR\SUBDIR\DEEP\DEEP.TXT
ECHO NDIR RF FILE > F:\TNDIR\URF\RF.TXT
ECHO NDIR FULL FILE > F:\TNDIR\UFULL\FULL.TXT
ECHO NDIR S FILE > F:\TNDIR\US\S.TXT
ECHO NDIR N FILE > F:\TNDIR\UNONE\N.TXT
ECHO NDIR USUB FILE > F:\TNDIR\USUB\ROOT.TXT
ECHO NDIR USUB CHILD > F:\TNDIR\USUB\CHILD\CHILD.TXT
ECHO MAT NORMAL > F:\TNDIR\MAT\NORMAL.TXT
ECHO MAT HIDDEN > F:\TNDIR\MAT\HIDFILE.TXT
ECHO MAT READONLY > F:\TNDIR\MAT\ROFILE.TXT
ECHO MAT SYSTEM > F:\TNDIR\MAT\SYSFILE.DAT
ECHO MAT ARCHIVE > F:\TNDIR\MAT\ARCFILE.BIN
ECHO MAT INHIBIT > F:\TNDIR\MAT\DIRIFILE.TXT
ECHO MAT MIXED > F:\TNDIR\MAT\MIXFILE.TXT
ECHO MAT SUB ROOT > F:\TNDIR\MAT\D_SUB\ROOT.TXT
ECHO MAT SUB CHILD > F:\TNDIR\MAT\D_SUB\CHILD\CHILD.TXT
ECHO USER EVERY R > F:\TNDIR\USR\U_EVERYR\E_R.TXT
ECHO USER EVERY FULL > F:\TNDIR\USR\U_EVERYF\E_FULL.TXT
ECHO USER MARIO RF > F:\TNDIR\USR\U_MARIO\MARIO.TXT
ECHO USER GUEST RF > F:\TNDIR\USR\U_GUEST\GUEST.TXT
ECHO USER NOP WCM > F:\TNDIR\USR\U_NOPWCM\WCM.TXT
ECHO USER NOP REMA > F:\TNDIR\USR\U_NOPREM\REMA.TXT
ECHO USER NOP RF > F:\TNDIR\USR\U_NOPRF\RF.TXT
ECHO USER CHILD ROOT > F:\TNDIR\USR\U_CHILD\ROOT.TXT
ECHO USER CHILD DEEP > F:\TNDIR\USR\U_CHILD\DEEP\DEEP.TXT
ECHO === ATTRIBUTE CLEANUP === >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\ALPHA.TXT N >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\BETA.TXT N >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\GAMMA.DAT N >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\SUBDIR\SUB.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\ALPHA.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\BETA.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\GAMMA.DAT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\SUBDIR\SUB.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\NORMAL.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\HIDFILE.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\ROFILE.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\SYSFILE.DAT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\ARCFILE.BIN N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\DIRIFILE.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\MIXFILE.TXT N >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_NORM Normal >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_HID Normal >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_SYS Normal >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_PUR Normal >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_DIRI Normal >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_MIX Normal >> F:\NDCMP\RUN.LOG
ECHO === N01 BASIS DIRECTORY === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR > F:\NDCMP\OUT\N01_ROOT.OUT
ECHO === D01 BASIS DIRECTORY === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR > F:\NDCMP\OUT\D01_ROOT.OUT
\PUBLIC\NDIR F:\TNDIR > F:\NDCMP\PUBOUT\D01_ROOT.OUT
ECHO === N02 DIRECT FILES === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR\ALPHA.TXT > F:\NDCMP\OUT\N02_ALFA.OUT
NPUBLIC\NDIR F:\TNDIR\BETA.TXT > F:\NDCMP\OUT\N02_BETA.OUT
ECHO === D02 DIRECT FILE === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR\ALPHA.TXT > F:\NDCMP\OUT\D02_ALFA.OUT
\PUBLIC\NDIR F:\TNDIR\ALPHA.TXT > F:\NDCMP\PUBOUT\D02_ALFA.OUT
ECHO === N03 DATES === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR /DATES > F:\NDCMP\OUT\N03_DATES.OUT
NPUBLIC\NDIR F:\TNDIR\ALPHA.TXT /DATES > F:\NDCMP\OUT\N03_ADATE.OUT
ECHO === D03 DATES === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR /DATES > F:\NDCMP\OUT\D03_DATE.OUT
\PUBLIC\NDIR F:\TNDIR /DATES > F:\NDCMP\PUBOUT\D03_DATE.OUT
ECHO === N04 RIGHTS === >> F:\NDCMP\RUN.LOG
NPUBLIC\RIGHTS F:\TNDIR > F:\NDCMP\OUT\N04_RGT.OUT
NPUBLIC\NDIR F:\TNDIR /RIGHTS >> F:\NDCMP\OUT\N04_RGT.OUT
NPUBLIC\NDIR F:\TNDIR\ALPHA.TXT /RIGHTS > F:\NDCMP\OUT\N04_RGTA.OUT
ECHO === D04 RIGHTS === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR /RIGHTS > F:\NDCMP\OUT\D04_RGHT.OUT
\PUBLIC\NDIR F:\TNDIR /RIGHTS > F:\NDCMP\PUBOUT\D04_RGHT.OUT
ECHO === N05 SET ATTRIBUTES === >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\ALPHA.TXT +H >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\BETA.TXT +RO >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\GAMMA.DAT +Sy +A >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\ALPHA.TXT > F:\NDCMP\OUT\N05_FLGA.OUT
NPUBLIC\FLAG F:\TNDIR\BETA.TXT > F:\NDCMP\OUT\N05_FLGB.OUT
NPUBLIC\FLAG F:\TNDIR\GAMMA.DAT > F:\NDCMP\OUT\N05_FLGG.OUT
ECHO === D05 SET ATTRIBUTES === >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\ALPHA.TXT +H >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\BETA.TXT +RO >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\GAMMA.DAT +Sy +A >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR > F:\NDCMP\OUT\D05_ATTR.OUT
\PUBLIC\NDIR F:\TNDIR > F:\NDCMP\PUBOUT\D05_ATTR.OUT
ECHO === N06 NDIR AFTER ATTRIBUTES === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR > F:\NDCMP\OUT\N06_ATTR.OUT
NPUBLIC\NDIR F:\TNDIR /DATES > F:\NDCMP\OUT\N06_ADAT.OUT
ECHO === D06 ATTRIBUTE FILTERS === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR /H > F:\NDCMP\OUT\D06_H.OUT
\PUBLIC\NDIR F:\TNDIR /H > F:\NDCMP\PUBOUT\D06_H.OUT
\NPUBLIC\NDIR F:\TNDIR /RO > F:\NDCMP\OUT\D07_RO.OUT
\PUBLIC\NDIR F:\TNDIR /RO > F:\NDCMP\PUBOUT\D07_RO.OUT
\NPUBLIC\NDIR F:\TNDIR /SY > F:\NDCMP\OUT\D08_SY.OUT
\PUBLIC\NDIR F:\TNDIR /SY > F:\NDCMP\PUBOUT\D08_SY.OUT
\NPUBLIC\NDIR F:\TNDIR /A > F:\NDCMP\OUT\D09_A.OUT
\PUBLIC\NDIR F:\TNDIR /A > F:\NDCMP\PUBOUT\D09_A.OUT
ECHO === N07 ATTRIBUTE FILTERS === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR /H > F:\NDCMP\OUT\N07_H.OUT
NPUBLIC\NDIR F:\TNDIR /RO > F:\NDCMP\OUT\N07_RO.OUT
NPUBLIC\NDIR F:\TNDIR /SY > F:\NDCMP\OUT\N07_SY.OUT
NPUBLIC\NDIR F:\TNDIR /A > F:\NDCMP\OUT\N07_A.OUT
ECHO === D10 NOT FILTER === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR /NOT H > F:\NDCMP\OUT\D10_NOTH.OUT
\PUBLIC\NDIR F:\TNDIR /NOT H > F:\NDCMP\PUBOUT\D10_NOTH.OUT
ECHO === N08 NOT FILTERS === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR /NOT H > F:\NDCMP\OUT\N08_NOTH.OUT
NPUBLIC\NDIR F:\TNDIR /NOT RO > F:\NDCMP\OUT\N08_NOTR.OUT
ECHO === D11 WILDCARDS === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR\*.TXT > F:\NDCMP\OUT\D11_TXT.OUT
\PUBLIC\NDIR F:\TNDIR\*.TXT > F:\NDCMP\PUBOUT\D11_TXT.OUT
\NPUBLIC\NDIR F:\TNDIR\*.DAT > F:\NDCMP\OUT\D12_DAT.OUT
\PUBLIC\NDIR F:\TNDIR\*.DAT > F:\NDCMP\PUBOUT\D12_DAT.OUT
ECHO === N09 SORT TESTS === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR /SORT UN > F:\NDCMP\OUT\N09_SUN.OUT
NPUBLIC\NDIR F:\TNDIR /SORT SI > F:\NDCMP\OUT\N09_SSI.OUT
NPUBLIC\NDIR F:\TNDIR /SORT UP > F:\NDCMP\OUT\N09_SUP.OUT
ECHO === D13 FILES/DIRS ONLY === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR /FO > F:\NDCMP\OUT\D13_FO.OUT
\PUBLIC\NDIR F:\TNDIR /FO > F:\NDCMP\PUBOUT\D13_FO.OUT
\NPUBLIC\NDIR F:\TNDIR /DO > F:\NDCMP\OUT\D14_DO.OUT
\PUBLIC\NDIR F:\TNDIR /DO > F:\NDCMP\PUBOUT\D14_DO.OUT
ECHO === N10 WILDCARDS === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR\*.TXT > F:\NDCMP\OUT\N10_TXT.OUT
NPUBLIC\NDIR F:\TNDIR\*.DAT > F:\NDCMP\OUT\N10_DAT.OUT
ECHO === D15 SUBDIRECTORY === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR /SUB > F:\NDCMP\OUT\D15_SUB.OUT
\PUBLIC\NDIR F:\TNDIR /SUB > F:\NDCMP\PUBOUT\D15_SUB.OUT
\NPUBLIC\NDIR F:\TNDIR /SUB /RIGHTS > F:\NDCMP\OUT\D16_SUBR.OUT
\PUBLIC\NDIR F:\TNDIR /SUB /RIGHTS > F:\NDCMP\PUBOUT\D16_SUBR.OUT
ECHO === N11 FILES ONLY / DIRS ONLY === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR /FO > F:\NDCMP\OUT\N11_FO.OUT
NPUBLIC\NDIR F:\TNDIR /DO > F:\NDCMP\OUT\N11_DO.OUT
ECHO === N12 SUBDIRECTORY TEST === >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR /SUB > F:\NDCMP\OUT\N12_SUB.OUT
NPUBLIC\NDIR F:\TNDIR\SUBDIR > F:\NDCMP\OUT\N12_SDIR.OUT
ECHO === D17 FILE/DIR ATTRIBUTE MATRIX SETUP === >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\HIDFILE.TXT +H >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\ROFILE.TXT +RO >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\SYSFILE.DAT +Sy >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\ARCFILE.BIN +A >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\DIRIFILE.TXT +DI +RI >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAG F:\TNDIR\MAT\MIXFILE.TXT +H +RO +A >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_HID Hidden >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_SYS System >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_PUR Purge >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_DIRI Deleteinhibit Renameinhibit >> F:\NDCMP\RUN.LOG
\NPUBLIC\FLAGDIR F:\TNDIR\MAT\D_MIX Hidden System Purge >> F:\NDCMP\RUN.LOG
ECHO === N14 CLEANUP ATTRIBUTES === >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\ALPHA.TXT N >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\BETA.TXT N >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\GAMMA.DAT N >> F:\NDCMP\RUN.LOG
NPUBLIC\FLAG F:\TNDIR\SUBDIR\SUB.TXT N >> F:\NDCMP\RUN.LOG
NPUBLIC\NDIR F:\TNDIR > F:\NDCMP\OUT\N14_FINAL.OUT
ECHO === D17-D29 FILE/DIR ATTRIBUTE MATRIX === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR\MAT > F:\NDCMP\OUT\D17_MATR.OUT
\PUBLIC\NDIR F:\TNDIR\MAT > F:\NDCMP\PUBOUT\D17_MATR.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /DATES > F:\NDCMP\OUT\D18_MDAT.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /DATES > F:\NDCMP\PUBOUT\D18_MDAT.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /RIGHTS > F:\NDCMP\OUT\D19_MRGT.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /RIGHTS > F:\NDCMP\PUBOUT\D19_MRGT.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /FO > F:\NDCMP\OUT\D20_MFO.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /FO > F:\NDCMP\PUBOUT\D20_MFO.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /DO > F:\NDCMP\OUT\D21_MDO.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /DO > F:\NDCMP\PUBOUT\D21_MDO.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /SUB > F:\NDCMP\OUT\D22_MSUB.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /SUB > F:\NDCMP\PUBOUT\D22_MSUB.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /SUB /RIGHTS > F:\NDCMP\OUT\D23_MSRG.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /SUB /RIGHTS > F:\NDCMP\PUBOUT\D23_MSRG.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /H > F:\NDCMP\OUT\D24_MH.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /H > F:\NDCMP\PUBOUT\D24_MH.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /RO > F:\NDCMP\OUT\D25_MRO.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /RO > F:\NDCMP\PUBOUT\D25_MRO.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /SY > F:\NDCMP\OUT\D26_MSY.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /SY > F:\NDCMP\PUBOUT\D26_MSY.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /A > F:\NDCMP\OUT\D27_MA.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /A > F:\NDCMP\PUBOUT\D27_MA.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT /NOT H > F:\NDCMP\OUT\D28_MNH.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /NOT H > F:\NDCMP\PUBOUT\D28_MNH.OUT
\NPUBLIC\NDIR F:\TNDIR\MAT\*.TXT > F:\NDCMP\OUT\D29_MTXT.OUT
\PUBLIC\NDIR F:\TNDIR\MAT\*.TXT > F:\NDCMP\PUBOUT\D29_MTXT.OUT
ECHO === D30-D34 USER/TRUSTEE MATRIX DIRECT === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR\USR /RIGHTS > F:\NDCMP\OUT\D30_USRR.OUT
\PUBLIC\NDIR F:\TNDIR\USR /RIGHTS > F:\NDCMP\PUBOUT\D30_USRR.OUT
\NPUBLIC\NDIR F:\TNDIR\USR /SUB /RIGHTS > F:\NDCMP\OUT\D31_USRS.OUT
\PUBLIC\NDIR F:\TNDIR\USR /SUB /RIGHTS > F:\NDCMP\PUBOUT\D31_USRS.OUT
\NPUBLIC\NDIR F:\TNDIR\USR /DO /RIGHTS > F:\NDCMP\OUT\D32_USRD.OUT
\PUBLIC\NDIR F:\TNDIR\USR /DO /RIGHTS > F:\NDCMP\PUBOUT\D32_USRD.OUT
\NPUBLIC\NDIR F:\TNDIR\USR\*.TXT > F:\NDCMP\OUT\D33_USRT.OUT
\PUBLIC\NDIR F:\TNDIR\USR\*.TXT > F:\NDCMP\PUBOUT\D33_USRT.OUT
\NPUBLIC\NDIR F:\TNDIR\USR /DATES > F:\NDCMP\OUT\D34_USRD.OUT
\PUBLIC\NDIR F:\TNDIR\USR /DATES > F:\NDCMP\PUBOUT\D34_USRD.OUT
ECHO === PUBLIC-ONLY SHORT OUTPUT === >> F:\NDCMP\RUN.LOG
\PUBLIC\NDIR F:\TNDIR /SUB /SHORT > F:\NDCMP\SHORTOUT\S15_SUB.OUT
\PUBLIC\NDIR F:\TNDIR /SUB /RIGHTS /SHORT > F:\NDCMP\SHORTOUT\S16_SUBR.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /SHORT > F:\NDCMP\SHORTOUT\S17_MATR.OUT
\PUBLIC\NDIR F:\TNDIR\MAT /SUB /RIGHTS /SHORT > F:\NDCMP\SHORTOUT\S23_MSRG.OUT
\PUBLIC\NDIR F:\TNDIR\USR /SUB /RIGHTS /SHORT > F:\NDCMP\SHORTOUT\S31_USRS.OUT
ECHO === D90 MISSING / D99 HELP === >> F:\NDCMP\RUN.LOG
\NPUBLIC\NDIR F:\TNDIR\*.ZZZ > F:\NDCMP\OUT\D90_MISS.OUT
\PUBLIC\NDIR F:\TNDIR\*.ZZZ > F:\NDCMP\PUBOUT\D90_MISS.OUT
\NPUBLIC\NDIR /HELP > F:\NDCMP\OUT\D99_HELP.OUT
\PUBLIC\NDIR /HELP > F:\NDCMP\PUBOUT\D99_HELP.OUT
ECHO === DIRECT COMPARE === > F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D01_ROOT.OUT F:\NDCMP\PUBOUT\D01_ROOT.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D02_ALFA.OUT F:\NDCMP\PUBOUT\D02_ALFA.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D03_DATE.OUT F:\NDCMP\PUBOUT\D03_DATE.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D04_RGHT.OUT F:\NDCMP\PUBOUT\D04_RGHT.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D05_ATTR.OUT F:\NDCMP\PUBOUT\D05_ATTR.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D06_H.OUT F:\NDCMP\PUBOUT\D06_H.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D07_RO.OUT F:\NDCMP\PUBOUT\D07_RO.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D08_SY.OUT F:\NDCMP\PUBOUT\D08_SY.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D09_A.OUT F:\NDCMP\PUBOUT\D09_A.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D10_NOTH.OUT F:\NDCMP\PUBOUT\D10_NOTH.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D11_TXT.OUT F:\NDCMP\PUBOUT\D11_TXT.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D12_DAT.OUT F:\NDCMP\PUBOUT\D12_DAT.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D13_FO.OUT F:\NDCMP\PUBOUT\D13_FO.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D14_DO.OUT F:\NDCMP\PUBOUT\D14_DO.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D15_SUB.OUT F:\NDCMP\PUBOUT\D15_SUB.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D16_SUBR.OUT F:\NDCMP\PUBOUT\D16_SUBR.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D17_MATR.OUT F:\NDCMP\PUBOUT\D17_MATR.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D18_MDAT.OUT F:\NDCMP\PUBOUT\D18_MDAT.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D19_MRGT.OUT F:\NDCMP\PUBOUT\D19_MRGT.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D20_MFO.OUT F:\NDCMP\PUBOUT\D20_MFO.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D21_MDO.OUT F:\NDCMP\PUBOUT\D21_MDO.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D22_MSUB.OUT F:\NDCMP\PUBOUT\D22_MSUB.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D23_MSRG.OUT F:\NDCMP\PUBOUT\D23_MSRG.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D24_MH.OUT F:\NDCMP\PUBOUT\D24_MH.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D25_MRO.OUT F:\NDCMP\PUBOUT\D25_MRO.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D26_MSY.OUT F:\NDCMP\PUBOUT\D26_MSY.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D27_MA.OUT F:\NDCMP\PUBOUT\D27_MA.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D28_MNH.OUT F:\NDCMP\PUBOUT\D28_MNH.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D29_MTXT.OUT F:\NDCMP\PUBOUT\D29_MTXT.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D30_USRR.OUT F:\NDCMP\PUBOUT\D30_USRR.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D31_USRS.OUT F:\NDCMP\PUBOUT\D31_USRS.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D32_USRD.OUT F:\NDCMP\PUBOUT\D32_USRD.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D33_USRT.OUT F:\NDCMP\PUBOUT\D33_USRT.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D34_USRD.OUT F:\NDCMP\PUBOUT\D34_USRD.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D90_MISS.OUT F:\NDCMP\PUBOUT\D90_MISS.OUT >> F:\NDCMP\COMPARE.LOG
FC F:\NDCMP\OUT\D99_HELP.OUT F:\NDCMP\PUBOUT\D99_HELP.OUT >> F:\NDCMP\COMPARE.LOG
REM --- Setup NOPASSUSER matrix. ---
ECHO === USER CONTEXT SETUP === >> F:\NDCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\TNDIR TO USER NOPASSUSER > F:\NDCMP\SETUP\S00_ROOT.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\URF TO USER NOPASSUSER > F:\NDCMP\SETUP\S10_RF.OUT
\NPUBLIC\GRANT R W C E M F A FOR F:\TNDIR\UFULL TO USER NOPASSUSER > F:\NDCMP\SETUP\S11_FULL.OUT
\NPUBLIC\GRANT S FOR F:\TNDIR\US TO USER NOPASSUSER > F:\NDCMP\SETUP\S12_S.OUT
\NPUBLIC\GRANT N FOR F:\TNDIR\UNONE TO USER NOPASSUSER > F:\NDCMP\SETUP\S13_N.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\USUB TO USER NOPASSUSER > F:\NDCMP\SETUP\S14_SUB.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\USUB\CHILD TO USER NOPASSUSER > F:\NDCMP\SETUP\S15_CHLD.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\MAT TO USER NOPASSUSER > F:\NDCMP\SETUP\S20_MATR.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\MAT\D_SUB TO USER NOPASSUSER > F:\NDCMP\SETUP\S21_MSUD.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\MAT\D_SUB\CHILD TO USER NOPASSUSER > F:\NDCMP\SETUP\S22_MCHD.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\USR TO USER NOPASSUSER > F:\NDCMP\SETUP\S30_USR.OUT
\NPUBLIC\GRANT R FOR F:\TNDIR\USR\U_EVERYR TO GROUP EVERYONE > F:\NDCMP\SETUP\S31_EVR.OUT
\NPUBLIC\GRANT R W C E M F A FOR F:\TNDIR\USR\U_EVERYF TO GROUP EVERYONE > F:\NDCMP\SETUP\S32_EVF.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\USR\U_MARIO TO USER MARIO > F:\NDCMP\SETUP\S33_MAR.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\USR\U_GUEST TO USER GUEST > F:\NDCMP\SETUP\S34_GST.OUT
\NPUBLIC\GRANT W C M FOR F:\TNDIR\USR\U_NOPWCM TO USER NOPASSUSER > F:\NDCMP\SETUP\S35_WCM.OUT
\NPUBLIC\GRANT R E M A FOR F:\TNDIR\USR\U_NOPREM TO USER NOPASSUSER > F:\NDCMP\SETUP\S36_REM.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\USR\U_NOPRF TO USER NOPASSUSER > F:\NDCMP\SETUP\S37_RF.OUT
\NPUBLIC\GRANT R F FOR F:\TNDIR\USR\U_CHILD TO GROUP EVERYONE > F:\NDCMP\SETUP\S38_CHLD.OUT
\NPUBLIC\GRANT S FOR F:\TNDIR\USR\U_CHILD\DEEP TO USER NOPASSUSER > F:\NDCMP\SETUP\S39_DEEP.OUT
REM --- Prepare local delayed helper. ---
MD C:\NDIRTMP
MD C:\NDIRTMP\UNOV
MD C:\NDIRTMP\UPUB
IF EXIST C:\NDIRTMP\HELPER.TXT DEL C:\NDIRTMP\HELPER.TXT
COPY F:\NDIRC.BAT C:\NDIRTMP\NDIRC.BAT > NUL
COPY F:\PUBLIC\DLYSTRT.EXE C:\NDIRTMP\DLYSTRT.EXE > NUL
C:
CD \NDIRTMP
DLYSTRT /T:2 NDIRC.BAT
GOTO END
:PART2
F:
CD \
IF NOT EXIST NDCMP\NUL MD NDCMP
IF NOT EXIST NDCMP\UNOV\NUL MD NDCMP\UNOV
IF NOT EXIST NDCMP\UPUB\NUL MD NDCMP\UPUB
IF NOT EXIST NDCMP\USHORT\NUL MD NDCMP\USHORT
IF NOT EXIST NDCMP\USETUP\NUL MD NDCMP\USETUP
COPY C:\NDIRTMP\UNOV\*.OUT F:\NDCMP\UNOV > NUL
COPY C:\NDIRTMP\UPUB\*.OUT F:\NDCMP\UPUB > NUL
IF EXIST C:\NDIRTMP\USHORT\*.OUT COPY C:\NDIRTMP\USHORT\*.OUT F:\NDCMP\USHORT > NUL
IF EXIST C:\NDIRTMP\HELPER.TXT COPY C:\NDIRTMP\HELPER.TXT F:\NDCMP\HELPER.TXT > NUL
IF EXIST C:\NDIRTMP\UCOMP.LOG COPY C:\NDIRTMP\UCOMP.LOG F:\NDCMP\UCOMP.LOG > NUL
ECHO === SUMMARY === > F:\NDCMP\SUMMARY.TXT
ECHO NDIRTSTA automated Novell NDIR baseline finished. >> F:\NDCMP\SUMMARY.TXT
ECHO NDIRTSTA compare test finished. >> F:\NDCMP\SUMMARY.TXT
ECHO. >> F:\NDCMP\SUMMARY.TXT
ECHO Outputs are in F:\NDCMP\OUT. >> F:\NDCMP\SUMMARY.TXT
ECHO Expected highlights: >> F:\NDCMP\SUMMARY.TXT
ECHO - N01_ROOT lists ALPHA.TXT, BETA.TXT, GAMMA.DAT and SUBDIR. >> F:\NDCMP\SUMMARY.TXT
ECHO - N03_DATES shows date fields. >> F:\NDCMP\SUMMARY.TXT
ECHO - N04_RGT shows rights. >> F:\NDCMP\SUMMARY.TXT
ECHO - N05_FLG* shows H, RO, SY/A attribute setup. >> F:\NDCMP\SUMMARY.TXT
ECHO - N07_* filters isolate attributes. >> F:\NDCMP\SUMMARY.TXT
ECHO - N09_* sort modes run without error. >> F:\NDCMP\SUMMARY.TXT
ECHO - N10_TXT lists TXT files; N10_DAT lists GAMMA.DAT. >> F:\NDCMP\SUMMARY.TXT
ECHO - N11_FO/N11_DO separate files/directories where supported. >> F:\NDCMP\SUMMARY.TXT
ECHO - N12_SUB includes SUBDIR\SUB.TXT. >> F:\NDCMP\SUMMARY.TXT
ECHO Optional pack results with NDIRZIP.BAT. >> F:\NDCMP\SUMMARY.TXT
ECHO Direct output: OUT vs PUBOUT, see COMPARE.LOG. >> F:\NDCMP\SUMMARY.TXT
ECHO User-context output: UNOV vs UPUB, see UCOMP.LOG. >> F:\NDCMP\SUMMARY.TXT
ECHO Public-only /SHORT output: SHORTOUT and USHORT, not compared. >> F:\NDCMP\SUMMARY.TXT
ECHO Matrix coverage: D17-D34 and U17-U30 cover mixed file, directory and user trustee matrices. >> F:\NDCMP\SUMMARY.TXT
ECHO. >> F:\NDCMP\SUMMARY.TXT
ECHO Optional: NDIRZIP ausfuehren. >> F:\NDCMP\SUMMARY.TXT
ECHO.
ECHO NDIRTSTA fertig.
ECHO NDIRTSTA PART2 fertig.
ECHO Ergebnisse liegen in F:\NDCMP
ECHO Optional: NDIRZIP ausfuehren.
ECHO.
GOTO END
:NEEDPWD
ECHO.
ECHO ERROR: LGNTPWD ist nicht gesetzt.
ECHO.
ECHO Fuer den vollautomatischen NDIR-User-Kontext-Test zuerst setzen, z.B.:
ECHO SET LGNTPWD=dein-supervisor-passwort
ECHO Danach starten:
ECHO F:\NDIRTSTA
ECHO.
ECHO Es wurde kein DLYSTRT installiert und kein Login-Test gestartet.
GOTO END
:END

View File

@@ -1,27 +1,26 @@
@ECHO OFF
REM NDIRZIP.BAT
REM Optional packer for NDIRTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \NDCMP
IF EXIST NDIRTSTA.ZIP DEL NDIRTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating NDIRTSTA.ZIP > ZIP.LOG
ZIP -r NDIRTSTA.ZIP RUN.LOG SUMMARY.TXT OUT >> ZIP.LOG
REM Cleanup generated test directories after ZIP.
REM Keep the CMP/result directory because it contains the ZIP and ZIP.LOG.
ECHO Cleaning generated test directories... >> ZIP.LOG
IF EXIST \TNDIR\NUL DELTREE /Y \TNDIR >> ZIP.LOG
IF EXIST \NDIRTEST\NUL DELTREE /Y \NDIRTEST >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\NDCMP\NDIRTSTA.ZIP
ECHO F:\NDCMP\ZIP.LOG
ECHO.
@ECHO OFF
REM NDIRZIP.BAT
REM Optional packer for NDIRTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \NDCMP
IF EXIST NDIRTSTA.ZIP DEL NDIRTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating NDIRTSTA.ZIP > ZIP.LOG
ZIP -r NDIRTSTA.ZIP RUN.LOG SUMMARY.TXT COMPARE.LOG UCOMP.LOG HELPER.TXT OUT PUBOUT SHORTOUT SETUP UNOV UPUB USHORT USETUP >> ZIP.LOG
REM Cleanup generated test directories after ZIP.
REM Keep the CMP/result directory because it contains the ZIP and ZIP.LOG.
ECHO Cleaning generated test directories... >> ZIP.LOG
IF EXIST \TNDIR\NUL DELTREE /Y \TNDIR >> ZIP.LOG
IF EXIST C:\NDIRTMP\NUL DELTREE /Y C:\NDIRTMP >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\NDCMP\NDIRTSTA.ZIP
ECHO F:\NDCMP\ZIP.LOG
ECHO.

View File

@@ -1,19 +1,30 @@
# NDIR automated test
# NDIR automated compare test
Automated Novell-only baseline for `NPUBLIC\NDIR`.
Automated compare test for `NDIR`.
## Run
```text
SET LGNTPWD=dein-supervisor-passwort
F:
CD \
NDIRTSTA
```
Results:
`LGNTPWD` is required because the test switches to `NOPASSUSER` and then logs back in as `SUPERVISOR` through the maintainer-only `LOGIN /PWD:` path.
## Result layout
```text
F:\NDCMP\RUN.LOG
F:\NDCMP\SUMMARY.TXT
F:\NDCMP\OUT\*.OUT
F:\NDCMP\OUT\*.OUT Novell baseline via \NPUBLIC\NDIR
F:\NDCMP\PUBOUT\*.OUT PUBLIC implementation via \PUBLIC\NDIR
F:\NDCMP\COMPARE.LOG direct compare log
F:\NDCMP\SHORTOUT\*.OUT PUBLIC-only /SHORT helper output; not compared
F:\NDCMP\UNOV\*.OUT Novell NDIR as NOPASSUSER
F:\NDCMP\UPUB\*.OUT PUBLIC NDIR as NOPASSUSER
F:\NDCMP\UCOMP.LOG user-context compare log
F:\NDCMP\USHORT\*.OUT PUBLIC-only /SHORT helper output as NOPASSUSER
```
Optional pack:
@@ -48,9 +59,38 @@ F:\TNDIR
- `/DATES`
- `/RIGHTS`
- attributes via `NPUBLIC\FLAG`
- filters `/H`, `/RO`, `/SY`, `/A`, `/NOT H`, `/NOT RO`
- sorts `/SORT UN`, `/SORT SI`, `/SORT UP`
- filters `/H`, `/RO`, `/SY`, `/A`, `/NOT H`
- wildcards `*.TXT`, `*.DAT`
- `/FO`, `/DO`
- `/SUB`
- cleanup
- `/SUB` and `/SUB /RIGHTS` in the Novell-compatible compare set
- extended file/directory matrix under `F:\TNDIR\MAT`:
- files with Normal, Hidden, Read-only, System, Archive, DI/RI and mixed attributes
- directories with Normal, Hidden, System, Purge, DI/RI and mixed directory flags
- matrix checks for normal listing, `/DATES`, `/RIGHTS`, `/FO`, `/DO`, `/SUB`, filters and wildcards
- Public-only `/SHORT` output in `SHORTOUT` / `USHORT` is kept for diagnostics and is not compared against Novell
- missing-pattern and help output
- NOPASSUSER readback after GRANT matrix setup, including the extended `MAT` file/directory matrix
`NDIRZIP` cleans the generated `TNDIR` tree and `C:\NDIRTMP` helper directory after packaging.
## Notes on /SHORT
`/SHORT` is a MARS DOS tools helper option. Novell NDIR does not know this option,
so the test keeps `/SHORT` output in `SHORTOUT` and `USHORT` only. These files are
packaged for manual inspection but are not part of the byte-for-byte Novell compare.
Additional user/trustee matrix
------------------------------
The extended matrix also creates F:\TNDIR\USR with trustees for multiple
objects that exist in the default test environment:
- USER NOPASSUSER
- USER MARIO
- USER GUEST
- GROUP EVERYONE
The delayed NOPASSUSER phase reads the same tree through NPUBLIC and PUBLIC
NDIR. This gives more coverage for effective-rights output: direct user
trustees, group/EVERYONE trustees, unrelated user trustees, inherited rights,
and Supervisor-on-child cases.