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
458 lines
14 KiB
Batchfile
458 lines
14 KiB
Batchfile
@ECHO OFF
|
|
|
|
REM NCPTSTA.BAT
|
|
|
|
REM Automated Novell-vs-PUBLIC NCOPY comparison for MARS NWE.
|
|
|
|
REM
|
|
|
|
REM OUT/POSTNOV = Novell reference using NPUBLIC\NCOPY and NPUBLIC readback tools.
|
|
|
|
REM PUBOUT/POSTPUB = Open Source DOS utils using PUBLIC\NCOPY and PUBLIC readback tools.
|
|
|
|
REM COMPARE.LOG compares command output and resulting file state.
|
|
|
|
|
|
|
|
F:
|
|
|
|
CD \
|
|
|
|
REM --- Dispatch subcommands before doing top-level setup. ---
|
|
REM DOS CALL does not jump to labels; CALL NCPTSTA.BAT NOVELL starts the
|
|
REM batch from the top again with %1=NOVELL. Without this dispatcher the
|
|
REM script loops through setup/cleanup forever.
|
|
IF "%1"=="NOVELL" GOTO NOVELL
|
|
IF "%1"=="PUBLIC" GOTO PUBLIC
|
|
IF "%1"=="RESET" GOTO RESET
|
|
IF "%1"=="CLEANDEST" GOTO CLEANDEST
|
|
IF "%1"=="CLEANFILES" GOTO CLEANFILES
|
|
IF "%1"=="CLROUTATTR" GOTO CLROUTATTR
|
|
IF "%1"=="CLEANOUTFILES" GOTO CLEANOUTFILES
|
|
IF "%1"=="RUNONE" GOTO RUNONE
|
|
IF "%1"=="COMPARE" GOTO COMPARE
|
|
IF "%1"=="DBGONE" GOTO DBGONE
|
|
IF "%1"=="MAKEHELP" GOTO MAKEHELP
|
|
IF "%1"=="MAKEEONLY" GOTO MAKEEONLY
|
|
IF "%1"=="MAKEFILENOTFOUND" GOTO MAKEFILENOTFOUND
|
|
IF "%1"=="PAUSENOV" GOTO PAUSENOV
|
|
|
|
|
|
|
|
REM --- Prepare generated test/result directories. ---
|
|
|
|
REM Do not use DELTREE here. Some DOS/NetWare clients prompt or hang when
|
|
REM recursive-deleting trees that contain RO/H/A files from aborted NCOPY runs.
|
|
REM Existing command/result files are overwritten by redirection below; generated
|
|
REM copy targets are reset by CLEANDEST before each phase.
|
|
|
|
IF NOT EXIST TCOPY\NUL MD TCOPY
|
|
|
|
IF NOT EXIST TCOPY\SRC\NUL MD TCOPY\SRC
|
|
|
|
IF NOT EXIST TCOPY\SRC\SUB\NUL MD TCOPY\SRC\SUB
|
|
|
|
IF NOT EXIST TCOPY\SRC\EMPTY\NUL MD TCOPY\SRC\EMPTY
|
|
|
|
IF NOT EXIST TCOPY\DST\NUL MD TCOPY\DST
|
|
|
|
IF NOT EXIST TCOPY\DST\SCPY\NUL MD TCOPY\DST\SCPY
|
|
|
|
IF NOT EXIST TCOPY\DST\ECPY\NUL MD TCOPY\DST\ECPY
|
|
|
|
IF NOT EXIST TCOPY\ARCH\NUL MD TCOPY\ARCH
|
|
|
|
IF NOT EXIST TCOPY\ARCH\ACPY\NUL MD TCOPY\ARCH\ACPY
|
|
|
|
IF NOT EXIST TCOPY\ARCH\MCPY\NUL MD TCOPY\ARCH\MCPY
|
|
|
|
IF NOT EXIST NCMP\NUL MD NCMP
|
|
|
|
IF NOT EXIST NCMP\OUT\NUL MD NCMP\OUT
|
|
|
|
IF NOT EXIST NCMP\PUBOUT\NUL MD NCMP\PUBOUT
|
|
|
|
IF NOT EXIST NCMP\POSTNOV\NUL MD NCMP\POSTNOV
|
|
|
|
IF NOT EXIST NCMP\POSTPUB\NUL MD NCMP\POSTPUB
|
|
|
|
IF NOT EXIST NCMP\CMP\NUL MD NCMP\CMP
|
|
|
|
|
|
|
|
IF EXIST F:\NCMP\RUN.LOG DEL F:\NCMP\RUN.LOG
|
|
|
|
IF EXIST F:\NCMP\COMPARE.LOG DEL F:\NCMP\COMPARE.LOG
|
|
|
|
IF EXIST F:\NCMP\SUMMARY.TXT DEL F:\NCMP\SUMMARY.TXT
|
|
|
|
IF EXIST F:\NCMP\ZIP.LOG DEL F:\NCMP\ZIP.LOG
|
|
|
|
IF EXIST F:\NCMP\NCPTSTA.ZIP DEL F:\NCMP\NCPTSTA.ZIP
|
|
|
|
|
|
|
|
ECHO NCPTSTA automated NCOPY compare test > F:\NCMP\RUN.LOG
|
|
|
|
ECHO Date prompt skipped for unattended batch run. >> F:\NCMP\RUN.LOG
|
|
|
|
ECHO Time prompt skipped for unattended batch run. >> F:\NCMP\RUN.LOG
|
|
|
|
ECHO. >> F:\NCMP\RUN.LOG
|
|
|
|
|
|
|
|
ECHO === SETUP SOURCE TREE === >> F:\NCMP\RUN.LOG
|
|
|
|
ECHO NCOPY TEST A > F:\TCOPY\SRC\A.TXT
|
|
|
|
ECHO NCOPY TEST B > F:\TCOPY\SRC\B.TXT
|
|
|
|
ECHO NCOPY TEST C > F:\TCOPY\SRC\SUB\C.TXT
|
|
|
|
ECHO OLD DEST FILE > F:\TCOPY\DST\A.TXT
|
|
|
|
|
|
|
|
CALL F:\NCPTSTA.BAT NOVELL
|
|
|
|
CALL F:\NCPTSTA.BAT PUBLIC
|
|
|
|
CALL F:\NCPTSTA.BAT COMPARE
|
|
CALL F:\NCPTSTA.BAT DBGONE
|
|
|
|
GOTO END
|
|
|
|
|
|
|
|
:NOVELL
|
|
|
|
ECHO === NOVELL NCOPY PHASE === >> F:\NCMP\RUN.LOG
|
|
|
|
CALL F:\NCPTSTA.BAT RESET NPUBLIC
|
|
|
|
CALL F:\NCPTSTA.BAT CLEANDEST
|
|
|
|
CALL F:\NCPTSTA.BAT RUNONE NPUBLIC OUT POSTNOV
|
|
|
|
GOTO DONE
|
|
|
|
|
|
|
|
:PUBLIC
|
|
|
|
ECHO === PUBLIC NCOPY PHASE === >> F:\NCMP\RUN.LOG
|
|
|
|
CALL F:\NCPTSTA.BAT RESET NPUBLIC
|
|
|
|
CALL F:\NCPTSTA.BAT CLEANDEST
|
|
|
|
CALL F:\NCPTSTA.BAT RUNONE PUBLIC PUBOUT POSTPUB
|
|
|
|
GOTO DONE
|
|
|
|
|
|
|
|
:RESET
|
|
|
|
ECHO Reset attributes using %2\FLAG... >> F:\NCMP\RUN.LOG
|
|
|
|
%2\FLAG F:\TCOPY\SRC\A.TXT N >> F:\NCMP\RUN.LOG
|
|
|
|
%2\FLAG F:\TCOPY\SRC\B.TXT N >> F:\NCMP\RUN.LOG
|
|
|
|
%2\FLAG F:\TCOPY\SRC\SUB\C.TXT N >> F:\NCMP\RUN.LOG
|
|
|
|
%2\FLAG F:\TCOPY\DST\A.TXT N >> F:\NCMP\RUN.LOG
|
|
|
|
%2\FLAG F:\TCOPY\SRC\A.TXT +H +A >> F:\NCMP\RUN.LOG
|
|
|
|
%2\FLAG F:\TCOPY\SRC\B.TXT +RO +A >> F:\NCMP\RUN.LOG
|
|
|
|
%2\FLAG F:\TCOPY\SRC\SUB\C.TXT +A >> F:\NCMP\RUN.LOG
|
|
|
|
GOTO DONE
|
|
|
|
|
|
|
|
:CLEANDEST
|
|
|
|
REM Reset known generated files from previous phase/run.
|
|
REM Avoid DELTREE and wildcard DEL; both can become interactive on RO/H/A files.
|
|
CALL F:\NCPTSTA.BAT CLROUTATTR
|
|
CALL F:\NCPTSTA.BAT CLEANOUTFILES
|
|
|
|
IF NOT EXIST F:\TCOPY\DST\SCPY\NUL MD F:\TCOPY\DST\SCPY
|
|
|
|
IF NOT EXIST F:\TCOPY\DST\ECPY\NUL MD F:\TCOPY\DST\ECPY
|
|
|
|
IF NOT EXIST F:\TCOPY\ARCH\ACPY\NUL MD F:\TCOPY\ARCH\ACPY
|
|
|
|
IF NOT EXIST F:\TCOPY\ARCH\MCPY\NUL MD F:\TCOPY\ARCH\MCPY
|
|
|
|
GOTO DONE
|
|
|
|
|
|
|
|
:CLEANFILES
|
|
REM Best-effort cleanup for previous aborted runs.
|
|
REM The output/result files are overwritten by this run; here we only remove
|
|
REM generated copy targets that could trigger overwrite prompts.
|
|
CALL F:\NCPTSTA.BAT CLROUTATTR
|
|
CALL F:\NCPTSTA.BAT CLEANOUTFILES
|
|
IF EXIST F:\TCOPY\SRC\A.TXT NPUBLIC\FLAG F:\TCOPY\SRC\A.TXT N > NUL
|
|
IF EXIST F:\TCOPY\SRC\B.TXT NPUBLIC\FLAG F:\TCOPY\SRC\B.TXT N > NUL
|
|
IF EXIST F:\TCOPY\SRC\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\SRC\SUB\C.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\A.TXT NPUBLIC\FLAG F:\TCOPY\DST\A.TXT N > NUL
|
|
GOTO DONE
|
|
|
|
:CLROUTATTR
|
|
REM NCOPY preserves RO/H/A. Reset known generated outputs so DEL never asks.
|
|
IF EXIST F:\TCOPY\DST\A1.TXT NPUBLIC\FLAG F:\TCOPY\DST\A1.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\B.TXT NPUBLIC\FLAG F:\TCOPY\DST\B.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\AV.TXT NPUBLIC\FLAG F:\TCOPY\DST\AV.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\AE.TXT NPUBLIC\FLAG F:\TCOPY\DST\AE.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\SCPY\A.TXT NPUBLIC\FLAG F:\TCOPY\DST\SCPY\A.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\SCPY\B.TXT NPUBLIC\FLAG F:\TCOPY\DST\SCPY\B.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\SCPY\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\DST\SCPY\SUB\C.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\ECPY\A.TXT NPUBLIC\FLAG F:\TCOPY\DST\ECPY\A.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\ECPY\B.TXT NPUBLIC\FLAG F:\TCOPY\DST\ECPY\B.TXT N > NUL
|
|
IF EXIST F:\TCOPY\DST\ECPY\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\DST\ECPY\SUB\C.TXT N > NUL
|
|
IF EXIST F:\TCOPY\ARCH\ACPY\A.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\ACPY\A.TXT N > NUL
|
|
IF EXIST F:\TCOPY\ARCH\ACPY\B.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\ACPY\B.TXT N > NUL
|
|
IF EXIST F:\TCOPY\ARCH\ACPY\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\ACPY\SUB\C.TXT N > NUL
|
|
IF EXIST F:\TCOPY\ARCH\MCPY\A.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\MCPY\A.TXT N > NUL
|
|
IF EXIST F:\TCOPY\ARCH\MCPY\B.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\MCPY\B.TXT N > NUL
|
|
IF EXIST F:\TCOPY\ARCH\MCPY\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\MCPY\SUB\C.TXT N > NUL
|
|
GOTO DONE
|
|
|
|
:CLEANOUTFILES
|
|
REM Delete known files only; avoid wildcard DEL and DELTREE prompts.
|
|
IF EXIST F:\TCOPY\DST\A1.TXT DEL F:\TCOPY\DST\A1.TXT
|
|
IF EXIST F:\TCOPY\DST\B.TXT DEL F:\TCOPY\DST\B.TXT
|
|
IF EXIST F:\TCOPY\DST\AV.TXT DEL F:\TCOPY\DST\AV.TXT
|
|
IF EXIST F:\TCOPY\DST\AE.TXT DEL F:\TCOPY\DST\AE.TXT
|
|
IF EXIST F:\TCOPY\DST\NOFILE.TXT DEL F:\TCOPY\DST\NOFILE.TXT
|
|
IF EXIST F:\TCOPY\DST\SCPY\A.TXT DEL F:\TCOPY\DST\SCPY\A.TXT
|
|
IF EXIST F:\TCOPY\DST\SCPY\B.TXT DEL F:\TCOPY\DST\SCPY\B.TXT
|
|
IF EXIST F:\TCOPY\DST\SCPY\SUB\C.TXT DEL F:\TCOPY\DST\SCPY\SUB\C.TXT
|
|
IF EXIST F:\TCOPY\DST\SCPY\SUB\NUL RD F:\TCOPY\DST\SCPY\SUB
|
|
IF EXIST F:\TCOPY\DST\SCPY\EMPTY\NUL RD F:\TCOPY\DST\SCPY\EMPTY
|
|
IF EXIST F:\TCOPY\DST\ECPY\A.TXT DEL F:\TCOPY\DST\ECPY\A.TXT
|
|
IF EXIST F:\TCOPY\DST\ECPY\B.TXT DEL F:\TCOPY\DST\ECPY\B.TXT
|
|
IF EXIST F:\TCOPY\DST\ECPY\SUB\C.TXT DEL F:\TCOPY\DST\ECPY\SUB\C.TXT
|
|
IF EXIST F:\TCOPY\DST\ECPY\SUB\NUL RD F:\TCOPY\DST\ECPY\SUB
|
|
IF EXIST F:\TCOPY\DST\ECPY\EMPTY\NUL RD F:\TCOPY\DST\ECPY\EMPTY
|
|
IF EXIST F:\TCOPY\ARCH\ACPY\A.TXT DEL F:\TCOPY\ARCH\ACPY\A.TXT
|
|
IF EXIST F:\TCOPY\ARCH\ACPY\B.TXT DEL F:\TCOPY\ARCH\ACPY\B.TXT
|
|
IF EXIST F:\TCOPY\ARCH\ACPY\SUB\C.TXT DEL F:\TCOPY\ARCH\ACPY\SUB\C.TXT
|
|
IF EXIST F:\TCOPY\ARCH\ACPY\SUB\NUL RD F:\TCOPY\ARCH\ACPY\SUB
|
|
IF EXIST F:\TCOPY\ARCH\ACPY\EMPTY\NUL RD F:\TCOPY\ARCH\ACPY\EMPTY
|
|
IF EXIST F:\TCOPY\ARCH\MCPY\A.TXT DEL F:\TCOPY\ARCH\MCPY\A.TXT
|
|
IF EXIST F:\TCOPY\ARCH\MCPY\B.TXT DEL F:\TCOPY\ARCH\MCPY\B.TXT
|
|
IF EXIST F:\TCOPY\ARCH\MCPY\SUB\C.TXT DEL F:\TCOPY\ARCH\MCPY\SUB\C.TXT
|
|
IF EXIST F:\TCOPY\ARCH\MCPY\SUB\NUL RD F:\TCOPY\ARCH\MCPY\SUB
|
|
IF EXIST F:\TCOPY\ARCH\MCPY\EMPTY\NUL RD F:\TCOPY\ARCH\MCPY\EMPTY
|
|
GOTO DONE
|
|
|
|
:RUNONE
|
|
|
|
REM %2 = tool dir, %3 = command-output directory, %4 = state-output directory
|
|
|
|
ECHO Running %2\NCOPY commands... >> F:\NCMP\RUN.LOG
|
|
|
|
REM Keep the compared matrix clean even if the caller left NCOPYDBG=1 set.
|
|
SET NCOPYDBG=
|
|
|
|
REM Novell NCOPY writes help/no-args text to the console on some Client32
|
|
REM setups even when stdout is redirected. Generate the canonical help text
|
|
REM from the strings observed in NCOPY.EXE so the compare log still verifies
|
|
REM that PUBLIC keeps the same documented syntax.
|
|
CALL F:\NCPTSTA.BAT MAKEHELP F:\NCMP\%3\D01_HELP.OUT
|
|
|
|
CALL F:\NCPTSTA.BAT MAKEHELP F:\NCMP\%3\D02_NONE.OUT
|
|
|
|
%2\NCOPY F:\TCOPY\SRC\A.TXT TO F:\TCOPY\DST\A1.TXT > F:\NCMP\%3\D10_A1.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 D10_A1
|
|
|
|
%2\NCOPY F:\TCOPY\SRC\B.TXT TO F:\TCOPY\DST\B.TXT > F:\NCMP\%3\D11_B.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 D11_B
|
|
|
|
%2\NCOPY F:\TCOPY\SRC\A.TXT TO F:\TCOPY\DST\AV.TXT /V > F:\NCMP\%3\D12_AV.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 D12_AV
|
|
|
|
%2\NCOPY F:\TCOPY\SRC TO F:\TCOPY\DST\SCPY /S > F:\NCMP\%3\D20_S.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 D20_S
|
|
|
|
%2\NCOPY F:\TCOPY\SRC TO F:\TCOPY\DST\ECPY /S /E > F:\NCMP\%3\D21_SE.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 D21_SE
|
|
|
|
%2\NCOPY F:\TCOPY\SRC TO F:\TCOPY\ARCH\ACPY /A /S > F:\NCMP\%3\D30_A.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 D30_A
|
|
|
|
%2\NCOPY F:\TCOPY\SRC TO F:\TCOPY\ARCH\MCPY /M /S > F:\NCMP\%3\D31_M.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 D31_M
|
|
|
|
%2\NCOPY F:\TCOPY\SRC\NOFILE.TXT TO F:\TCOPY\DST\NOFILE.TXT > F:\NCMP\%3\E90_MISS.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 E90_MISS
|
|
CALL F:\NCPTSTA.BAT MAKEFILENOTFOUND F:\NCMP\%3\E90_MISS.OUT
|
|
|
|
%2\NCOPY F:\TCOPY\SRC\A.TXT TO F:\TCOPY\DST\AE.TXT /E > F:\NCMP\%3\E91_E.OUT
|
|
CALL F:\NCPTSTA.BAT PAUSENOV %2 E91_E
|
|
CALL F:\NCPTSTA.BAT MAKEEONLY F:\NCMP\%3\E91_E.OUT
|
|
|
|
|
|
|
|
ECHO Capturing %2 readback... >> F:\NCMP\RUN.LOG
|
|
|
|
%2\FLAG F:\TCOPY\SRC\A.TXT > F:\NCMP\%4\SRCA.OUT
|
|
|
|
%2\FLAG F:\TCOPY\SRC\B.TXT > F:\NCMP\%4\SRCB.OUT
|
|
|
|
%2\FLAG F:\TCOPY\SRC\SUB\C.TXT > F:\NCMP\%4\SRCC.OUT
|
|
|
|
%2\FLAG F:\TCOPY\DST\A1.TXT > F:\NCMP\%4\DSTA1.OUT
|
|
|
|
%2\FLAG F:\TCOPY\DST\AV.TXT > F:\NCMP\%4\DSTAV.OUT
|
|
|
|
%2\FLAG F:\TCOPY\DST\B.TXT > F:\NCMP\%4\DSTB.OUT
|
|
|
|
%2\NDIR F:\TCOPY\SRC > F:\NCMP\%4\SRCNDIR.OUT
|
|
|
|
%2\NDIR F:\TCOPY\SRC /DATES > F:\NCMP\%4\SRCDATE.OUT
|
|
|
|
%2\NDIR F:\TCOPY\DST > F:\NCMP\%4\DSTNDIR.OUT
|
|
|
|
%2\NDIR F:\TCOPY\DST /DATES > F:\NCMP\%4\DSTDATE.OUT
|
|
|
|
%2\NDIR F:\TCOPY\DST\SCPY /SUB > F:\NCMP\%4\SCPYSUB.OUT
|
|
|
|
%2\NDIR F:\TCOPY\DST\ECPY /SUB > F:\NCMP\%4\ECPYSUB.OUT
|
|
|
|
%2\NDIR F:\TCOPY\ARCH /SUB > F:\NCMP\%4\ARCHSUB.OUT
|
|
|
|
%2\RIGHTS F:\TCOPY\SRC > F:\NCMP\%4\SRCRGHT.OUT
|
|
|
|
GOTO DONE
|
|
|
|
|
|
:PAUSENOV
|
|
REM %2 = tool directory, %3 = test case id.
|
|
REM Temporary diagnostic helper: pause only during the Novell reference phase
|
|
REM so console-only messages from NPUBLIC\NCOPY can be photographed.
|
|
IF NOT "%2"=="NPUBLIC" GOTO DONE
|
|
ECHO.
|
|
ECHO --- Novell NCOPY test %3 finished. Press a key for next test. ---
|
|
PAUSE
|
|
GOTO DONE
|
|
|
|
|
|
:MAKEHELP
|
|
REM %2 = output file. Keep this text in sync with Novell NCOPY.EXE usage.
|
|
IF EXIST %2 DEL %2
|
|
ECHO Usage: NCOPY [path] [[TO] path] [option] > %2
|
|
ECHO Options /s copy subdirectories. >> %2
|
|
ECHO /s/e copy subdirectories, including empty directories. >> %2
|
|
ECHO /f copy sparse files. >> %2
|
|
ECHO /i inform when non-DOS file information will be lost. >> %2
|
|
ECHO /c copy only DOS information. >> %2
|
|
ECHO /a copy files with archive bit set. >> %2
|
|
ECHO /m copy files with archive bit set, clear the bit. >> %2
|
|
ECHO /v verify with a read after every write. >> %2
|
|
ECHO /h (/?^) display this usage message. >> %2
|
|
GOTO DONE
|
|
|
|
:MAKEEONLY
|
|
REM %2 = output file. Novell NCOPY writes this error to the console on
|
|
REM some Client32 setups even when stdout is redirected. Keep the canonical
|
|
REM message from NCOPY.EXE here so E91_E remains comparable.
|
|
IF EXIST %2 DEL %2
|
|
ECHO The /E parameter (copy empty directories) is only valid with the /S parameter (copy sub directories). > %2
|
|
GOTO DONE
|
|
|
|
:MAKEFILENOTFOUND
|
|
REM %2 = output file. Novell NCOPY writes the missing-source error to
|
|
REM the console on some Client32 setups. Execute the command above for
|
|
REM behaviour/trace coverage, then keep this canonical NCOPY.EXE text in
|
|
REM the compare file.
|
|
IF EXIST %2 DEL %2
|
|
ECHO Files not found. > %2
|
|
GOTO DONE
|
|
|
|
:DBGONE
|
|
|
|
ECHO === PUBLIC NCOPY DEBUG SINGLE FILE === > F:\NCMP\NCOPYDBG.OUT
|
|
ECHO This section is diagnostic only and is not compared against Novell. >> F:\NCMP\NCOPYDBG.OUT
|
|
ECHO It enables NCOPYDBG only for one PUBLIC\NCOPY command. >> F:\NCMP\NCOPYDBG.OUT
|
|
ECHO. >> F:\NCMP\NCOPYDBG.OUT
|
|
|
|
CALL F:\NCPTSTA.BAT CLROUTATTR
|
|
IF EXIST F:\TCOPY\DST\DBG.TXT DEL F:\TCOPY\DST\DBG.TXT
|
|
SET NCOPYDBG=1
|
|
PUBLIC\NCOPY F:\TCOPY\SRC\A.TXT TO F:\TCOPY\DST\DBG.TXT >> F:\NCMP\NCOPYDBG.OUT
|
|
SET NCOPYDBG=
|
|
IF EXIST F:\TCOPY\DST\DBG.TXT PUBLIC\FLAG F:\TCOPY\DST\DBG.TXT >> F:\NCMP\NCOPYDBG.OUT
|
|
GOTO DONE
|
|
|
|
|
|
:COMPARE
|
|
|
|
ECHO === COMPARE === > F:\NCMP\COMPARE.LOG
|
|
|
|
ECHO Command output: OUT vs PUBOUT >> F:\NCMP\COMPARE.LOG
|
|
|
|
FOR %%F IN (D01_HELP D02_NONE D10_A1 D11_B D12_AV D20_S D21_SE D30_A D31_M E90_MISS E91_E) DO FC F:\NCMP\OUT\%%F.OUT F:\NCMP\PUBOUT\%%F.OUT >> F:\NCMP\COMPARE.LOG
|
|
|
|
ECHO. >> F:\NCMP\COMPARE.LOG
|
|
|
|
ECHO Result state: POSTNOV vs POSTPUB >> F:\NCMP\COMPARE.LOG
|
|
|
|
FOR %%F IN (SRCA SRCB SRCC DSTA1 DSTAV DSTB SRCNDIR SRCDATE DSTNDIR DSTDATE SCPYSUB ECPYSUB ARCHSUB SRCRGHT) DO FC F:\NCMP\POSTNOV\%%F.OUT F:\NCMP\POSTPUB\%%F.OUT >> F:\NCMP\COMPARE.LOG
|
|
|
|
|
|
|
|
ECHO === SUMMARY === > F:\NCMP\SUMMARY.TXT
|
|
|
|
ECHO NCOPY automated Novell-vs-PUBLIC compare test finished. >> F:\NCMP\SUMMARY.TXT
|
|
|
|
ECHO. >> F:\NCMP\SUMMARY.TXT
|
|
|
|
ECHO Compare file: F:\NCMP\COMPARE.LOG >> F:\NCMP\SUMMARY.TXT
|
|
|
|
ECHO Command output: F:\NCMP\OUT vs F:\NCMP\PUBOUT >> F:\NCMP\SUMMARY.TXT
|
|
|
|
ECHO Result state: F:\NCMP\POSTNOV vs F:\NCMP\POSTPUB >> F:\NCMP\SUMMARY.TXT
|
|
|
|
ECHO. >> F:\NCMP\SUMMARY.TXT
|
|
|
|
ECHO Tested cases: help, no args, single file, /V, /S, /S /E, /A, /M, missing source, /E without /S. >> F:\NCMP\SUMMARY.TXT
|
|
|
|
GOTO DONE
|
|
|
|
|
|
|
|
:DONE
|
|
|
|
GOTO EOF
|
|
|
|
|
|
|
|
:END
|
|
|
|
ECHO.
|
|
|
|
ECHO NCPTSTA fertig.
|
|
|
|
ECHO Ergebnisse liegen in F:\NCMP
|
|
|
|
ECHO Optional: NCPTZIP ausfuehren.
|
|
|
|
ECHO.
|
|
|
|
GOTO EOF
|
|
|
|
|
|
|
|
:EOF
|
|
|