dosutils: match Novell paths for flags and trustees

Move FLAG, GRANT and REMOVE closer to the request paths used by the
Novell tools and extend the DOS comparison tests.

FLAG now reads attributes through the old NCP22 directory scan path and
writes them through NCP22/25 Set Directory/File Information. This keeps
extended attributes such as Delete Inhibit and Rename Inhibit intact and
matches the Novell behavior observed in the server logs.

GRANT now prefers NCP22/27 SetTrustee with an NCP87 fallback. Supervisor
rights are expanded like Novell does, so granting S sends and reports the
full SRWCEMFA mask. The visible output, path formatting and error text
are adjusted to match the Novell baseline.

REMOVE now prefers NCP22/2B DelTrustee with an NCP87 fallback. The
DelTrustee request layout is corrected, /SUBDIRS handling is aligned
with Novell, and the output/error text is matched to the baseline.

The FLAG, FLAGDIR, GRANT and REMOVE tests now compare NPUBLIC baselines
against the PUBLIC implementations and add delayed NOPASSUSER readback
checks using DLYSTRT and the maintainer LOGIN password option.
This commit is contained in:
Mario Fetka
2026-05-28 07:54:41 +02:00
parent 0fa4a6f700
commit 5da600c2a5
23 changed files with 2653 additions and 659 deletions

View File

@@ -10,6 +10,12 @@
option(MAINTAINER_BUILD "Enable maintainer-only DOS tool helpers and diagnostics" OFF)
if(DEFINED MARS_NWE_VERSION_BASE)
set(MARS_DOSUTILS_VERSION "${MARS_NWE_VERSION_BASE}")
else()
set(MARS_DOSUTILS_VERSION "0.99")
endif()
set(MARS_DOSUTILS_LEGACY_NET_EXE
"${CMAKE_CURRENT_SOURCE_DIR}/netold.exe"
CACHE FILEPATH "Legacy/pre-Client32 DOS net.exe used by default for legacy command names"
@@ -98,7 +104,7 @@ if(MARS_NWE_BUILD_DOSUTILS)
set(obj "${CMAKE_CURRENT_BINARY_DIR}/${obj_name}.obj")
list(APPEND DOSUTILS_OBJECTS "${obj}")
set(DOSUTILS_WCL_DEFS)
set(DOSUTILS_WCL_DEFS -dMARS_DOSUTILS_VERSION=\"${MARS_DOSUTILS_VERSION}\")
if(MAINTAINER_BUILD)
list(APPEND DOSUTILS_WCL_DEFS -dMAINTAINER_BUILD)
endif()

136
c32ncp.c
View File

@@ -549,6 +549,12 @@ int c32_ncp87_modify_dos_attributes(char *name,
memset(&info, 0, sizeof(info));
info.attributes = attrs;
/*
* NCP 87 modify DOS information uses DM_ATTRIBUTES (0x00000002).
* RIM_ATTRIBUTES (0x00000004) is the read/obtain mask; using it here
* leaves high attribute bits such as Delete/Rename Inhibit unchanged or
* cleared on some servers/clients.
*/
return(c32_ncp87_modify_dos_info(name, dir_handle, 0x00000002UL,
&info, actual_out,
handle_lo_out, handle_hi_out));
@@ -738,6 +744,136 @@ int c32_ncp87_get_effective_rights_by_dirent(uint8 vol_number,
static int c32_build_ncp22_trustee_path(char *out, const char *path_name, int max)
{
char header[300];
char *p;
char *colon;
if (!out || max < 2)
return(-1);
out[0] = '\0';
/* Build the same server/volume display path used by the DOS tools, then
* strip the server component. NCP22/27 accepts a volume-qualified path
* such as SYS:DIR\FILE with directory handle 0, matching Novell GRANT's
* old trustee call as seen in the server trace. */
tool_header_path(header, (char *)(path_name ? path_name : "."), sizeof(header));
colon = strchr(header, ':');
if (!colon)
return(-1);
p = header;
while (*p && p < colon) {
if (*p == '\\' || *p == '/') {
p++;
break;
}
p++;
}
if (!*p || p >= colon)
p = header;
strmaxcpy(out, p, max - 1);
return(0);
}
int c32_ncp22_set_trustee_rights(const char *path_name,
uint16 dir_handle,
uint32 object_id,
uint16 rights)
{
struct {
uint16 len;
uint8 func;
uint8 dirhandle;
uint8 trustee_id[4];
uint8 trustee_rights[2];
uint8 pathlen;
uint8 path[255];
} req;
struct { uint16 len; } repl;
char ncppath[260];
int pathlen;
(void)dir_handle;
if (c32_build_ncp22_trustee_path(ncppath, path_name, sizeof(ncppath)))
return(30);
pathlen = strlen(ncppath);
if (pathlen > 255)
return(31);
memset(&req, 0, sizeof(req));
memset(&repl, 0, sizeof(repl));
req.func = 0x27; /* NCP22/27 Add Ext Trustee */
req.dirhandle = 0; /* volume-qualified path follows */
c32_put_dword_hl(req.trustee_id, object_id);
c32_put_word_lh(req.trustee_rights, rights);
req.pathlen = (uint8)pathlen;
memcpy(req.path, ncppath, pathlen);
req.len = 9 + pathlen;
repl.len = 0;
neterrno = Net_Call(0xE200, &req, &repl);
if (neterrno)
return(-neterrno);
return(0);
}
int c32_ncp22_delete_trustee_rights(const char *path_name,
uint16 dir_handle,
uint32 object_id)
{
struct {
uint16 len;
uint8 func;
uint8 dirhandle;
uint8 trustee_id[4];
uint8 reserved;
uint8 pathlen;
uint8 path[255];
} req;
struct { uint16 len; } repl;
char ncppath[260];
int pathlen;
(void)dir_handle;
if (c32_build_ncp22_trustee_path(ncppath, path_name, sizeof(ncppath)))
return(30);
pathlen = strlen(ncppath);
if (pathlen > 255)
return(31);
memset(&req, 0, sizeof(req));
memset(&repl, 0, sizeof(repl));
req.func = 0x2b; /* NCP22/43 Delete Trustee */
req.dirhandle = 0; /* volume-qualified path follows */
c32_put_dword_hl(req.trustee_id, object_id);
req.reserved = 0; /* NCP22/2B has a reserved byte before pathlen */
req.pathlen = (uint8)pathlen;
memcpy(req.path, ncppath, pathlen);
req.len = 8 + pathlen;
repl.len = 0;
neterrno = Net_Call(0xE200, &req, &repl);
if (neterrno)
return(-neterrno);
return(0);
}
int c32_ncp87_add_trustee_rights(const char *path_name,
uint16 dir_handle,
uint32 object_id,

View File

@@ -104,6 +104,15 @@ int c32_ncp87_add_trustee_rights(const char *path_name,
uint16 *handle_lo_out,
uint16 *handle_hi_out);
int c32_ncp22_set_trustee_rights(const char *path_name,
uint16 dir_handle,
uint32 object_id,
uint16 rights);
int c32_ncp22_delete_trustee_rights(const char *path_name,
uint16 dir_handle,
uint32 object_id);
int c32_ncp87_find_trustee_rights(const char *path_name,
uint16 dir_handle,
uint32 object_id,

272
flag.c
View File

@@ -18,6 +18,7 @@
#define FLAG_NW_NS_DOS 0x00
#define FLAG_SA_ALL 0x0006
#define FLAG_RIM_ATTRIBUTES 0x00000004UL
#define FLAG_DM_ATTRIBUTES 0x00000002UL
#define NWFA_RO 0x00000001UL
#define NWFA_H 0x00000002UL
@@ -134,6 +135,142 @@ static int flag_ncp87_obtain_attrs(char *name, uint32 *attrs)
return(0);
}
static int flag_copy_ncp22_name(uint8 *dst, char *src, uint8 *len_out)
{
char tmp[260];
int len;
if (!dst || !len_out)
return(-1);
if (!src)
src = "";
tool_upcopy(tmp, src, sizeof(tmp));
if (strchr(tmp, '\\') || strchr(tmp, '/') || strchr(tmp, ':'))
return(-1);
len = strlen(tmp);
if (len < 1 || len > 12)
return(-1);
memcpy(dst, tmp, len);
*len_out = (uint8)len;
return(0);
}
static int flag_ncp22_1e_obtain_attrs(char *name, uint32 *attrs)
{
struct {
uint16 len;
uint8 func;
uint8 dirhandle;
uint8 search_attributes;
uint8 searchsequence[4];
uint8 namlen;
uint8 name[12];
} req;
struct {
uint16 len;
uint8 data[128];
} repl;
uint8 connid = 0;
uint8 dhandle = 0;
uint8 namlen = 0;
if (tool_current_dhandle(&connid, &dhandle))
return(-1);
memset(&req, 0, sizeof(req));
memset(&repl, 0, sizeof(repl));
if (flag_copy_ncp22_name(req.name, name, &namlen))
return(-1);
req.func = 0x1e; /* Scan directory */
req.dirhandle = dhandle;
req.search_attributes = 0x06; /* hidden/system */
U32_TO_BE32(0xffffffffUL, req.searchsequence);
req.namlen = namlen;
req.len = (uint16)(1 + 1 + 1 + 4 + 1 + namlen);
repl.len = sizeof(repl.data);
neterrno = Net_Call(0xE200, &req, &repl);
if (neterrno)
return(-1);
/*
* NCP22/30 Scan Directory returns:
* dword searchsequence
* dword subdir
* dword attributes
* ...
*/
if (attrs)
*attrs = flag_get_dword_lh(repl.data + 8);
return(0);
}
static int flag_ncp22_25_modify_attrs(char *name, uint32 attrs)
{
struct {
uint16 len;
uint8 func;
uint8 dirhandle;
uint8 search_attributes;
uint8 searchsequence[4];
uint8 change_bits[4];
uint8 subdir[4];
uint8 attributes[4];
uint8 uniqueid;
uint8 flags;
uint8 namespace;
uint8 namlen;
uint8 name[12];
uint8 rest[104];
} req;
struct {
uint16 len;
} repl;
uint8 connid = 0;
uint8 dhandle = 0;
if (tool_current_dhandle(&connid, &dhandle))
return(-1);
memset(&req, 0, sizeof(req));
memset(&repl, 0, sizeof(repl));
req.func = 0x25; /* Set directory/file information */
req.dirhandle = dhandle;
req.search_attributes = 0x06; /* hidden/system */
U32_TO_BE32(0xffffffffUL, req.searchsequence);
U32_TO_32(FLAG_DM_ATTRIBUTES, req.change_bits);
U32_TO_32(attrs, req.attributes);
if (flag_copy_ncp22_name(req.name, name, &req.namlen))
return(-1);
req.len = sizeof(req) - sizeof(req.len);
neterrno = Net_Call(0xE200, &req, &repl);
if (neterrno)
return(-1);
return(0);
}
static int flag_obtain_attrs(char *name, uint32 *attrs)
{
if (!flag_ncp22_1e_obtain_attrs(name, attrs))
return(0);
return(flag_ncp87_obtain_attrs(name, attrs));
}
static int flag_ncp87_modify_attrs(char *name, uint32 attrs)
{
struct {
@@ -174,7 +311,7 @@ static int flag_ncp87_modify_attrs(char *name, uint32 attrs)
*p++ = 0; /* reserved */
flag_put_word_lh(p, FLAG_SA_ALL); p += 2;
flag_put_dword_lh(p, FLAG_RIM_ATTRIBUTES); p += 4; /* modify mask */
flag_put_dword_lh(p, FLAG_DM_ATTRIBUTES); p += 4; /* modify mask: DM_ATTRIBUTES */
flag_put_dword_lh(p, attrs); p += 4; /* Attributes */
/*
@@ -342,7 +479,7 @@ static void flag_display_one(char *name, uint32 attr)
{
fprintf(stdout, " %-23s ", name);
flag_print_attrs(attr);
fprintf(stdout, "\n");
fprintf(stdout, " \n");
}
static void flag_display_one_paged(char *name, uint32 attr,
@@ -353,6 +490,93 @@ static void flag_display_one_paged(char *name, uint32 attr,
}
static char *flag_last_sep(char *s)
{
char *last = NULL;
char *p;
for (p = s; *p; p++) {
if (*p == '\\' || *p == '/' || *p == ':')
last = p;
}
return(last);
}
static void flag_split_pattern(char *pattern, char *parent, int parent_size,
char *leaf, int leaf_size)
{
char temp[260];
char *sep;
int plen;
parent[0] = '\0';
leaf[0] = '\0';
strmaxcpy(temp, pattern, sizeof(temp) - 1);
sep = flag_last_sep(temp);
if (!sep) {
strmaxcpy(leaf, temp, leaf_size - 1);
return;
}
if (*(sep + 1)) {
strmaxcpy(leaf, sep + 1, leaf_size - 1);
} else {
strmaxcpy(leaf, "*.*", leaf_size - 1);
}
plen = (int)(sep - temp);
/*
* Keep drive-root paths as "F:\" rather than "F:".
*/
if (*sep == ':' && (*(sep + 1) == '\\' || *(sep + 1) == '/'))
plen += 2;
else if (*sep == ':' || *sep == '\\' || *sep == '/')
plen += 1;
if (plen >= parent_size)
plen = parent_size - 1;
memcpy(parent, temp, plen);
parent[plen] = '\0';
}
static int flag_enter_parent(char *pattern, char *leaf, int leaf_size,
char *oldcwd, int oldcwd_size)
{
char parent[260];
oldcwd[0] = '\0';
flag_split_pattern(pattern, parent, sizeof(parent), leaf, leaf_size);
if (!leaf[0])
strmaxcpy(leaf, "*.*", leaf_size - 1);
if (!parent[0])
return(0);
if (!getcwd(oldcwd, oldcwd_size))
oldcwd[0] = '\0';
if (chdir(parent)) {
if (oldcwd[0])
chdir(oldcwd);
return(-1);
}
return(0);
}
static void flag_leave_parent(char *oldcwd)
{
if (oldcwd[0])
chdir(oldcwd);
}
static int flag_list(char *pattern)
{
struct find_t ff;
@@ -368,7 +592,7 @@ static int flag_list(char *pattern)
if (!(ff.attrib & _A_SUBDIR)) {
uint32 nwattrs;
if (flag_ncp87_obtain_attrs(ff.name, &nwattrs))
if (flag_obtain_attrs(ff.name, &nwattrs))
nwattrs = (uint32)ff.attrib;
flag_display_one_paged(ff.name, nwattrs, &line_count, &continuous);
@@ -397,22 +621,23 @@ static int flag_apply(char *pattern, uint32 setbits, uint32 clearbits)
strmaxcpy(fname, ff.name, sizeof(fname) - 1);
if (flag_ncp87_obtain_attrs(fname, &attrs))
if (flag_obtain_attrs(fname, &attrs))
attrs = (uint32)ff.attrib;
newattrs = (attrs | (uint32)setbits) & ~((uint32)clearbits);
if (newattrs != attrs) {
if (flag_ncp87_modify_attrs(fname, newattrs)) {
if (flag_ncp22_25_modify_attrs(fname, newattrs) &&
flag_ncp87_modify_attrs(fname, newattrs)) {
unsigned dosattr = (newattrs & (_A_RDONLY|_A_HIDDEN|_A_SYSTEM|_A_ARCH));
if (_dos_setfileattr(fname, dosattr)) {
fprintf(stderr, "You don't have rights to change : %s\n", fname);
fprintf(stdout, "You don't have rights to change : %s\n", fname);
continue;
}
}
}
if (flag_ncp87_obtain_attrs(fname, &attrs))
if (flag_obtain_attrs(fname, &attrs))
attrs = newattrs;
flag_display_one(fname, newattrs);
@@ -454,20 +679,33 @@ int func_flag(int argc, char *argv[], int mode)
have_change = 1;
}
if (have_change) {
rc = flag_apply(path, setbits, clearbits);
if (rc < 0) {
fprintf(stderr, "Files could not be found with pattern \"%s\"\n", path);
{
char leaf[260];
char oldcwd[260];
if (flag_enter_parent(path, leaf, sizeof(leaf), oldcwd, sizeof(oldcwd))) {
flag_split_pattern(path, oldcwd, sizeof(oldcwd), leaf, sizeof(leaf));
fprintf(stdout, "Files could not be found with pattern \"%s\"\a", leaf);
return(1);
}
return(0);
}
if (have_change) {
rc = flag_apply(leaf, setbits, clearbits);
flag_leave_parent(oldcwd);
if (rc < 0) {
fprintf(stdout, "Files could not be found with pattern \"%s\"\a", leaf);
return(1);
}
rc = flag_list(path);
if (rc < 0) {
fprintf(stderr, "Files could not be found with pattern \"%s\"\n", path);
return(1);
return(0);
}
rc = flag_list(leaf);
flag_leave_parent(oldcwd);
if (rc < 0) {
fprintf(stdout, "Files could not be found with pattern \"%s\"\a", leaf);
return(1);
}
}
return(0);

140
grant.c
View File

@@ -27,10 +27,24 @@ static void grant_usage_error(void)
fprintf(stdout, "Command line arguments violate grammar defined for GRANT.\n\n");
}
static void grant_usage(void)
static void grant_invalid_right_error(void)
{
fprintf(stdout, "Specified rights unreadable or invalid. Spaces required between each right.\n\n");
}
static void grant_usage_ex(int leading_blanks, int bell_after_options,
int trailing_blanks)
{
int i;
for (i = 0; i < leading_blanks; i++)
fprintf(stdout, "\n");
fprintf(stdout, "Usage: GRANT rightslist* [FOR path] TO [USER | GROUP] name [options]\n");
fprintf(stdout, "Options: /SubDirectories | /Files\n\n");
fprintf(stdout, "Options: /SubDirectories | /Files\n");
if (bell_after_options)
fprintf(stdout, "\a");
fprintf(stdout, "\n");
fprintf(stdout, "386 Rights:\n");
fprintf(stdout, "--------------------\n");
fprintf(stdout, "ALL = All\n");
@@ -43,10 +57,46 @@ static void grant_usage(void)
fprintf(stdout, "M = Modify\n");
fprintf(stdout, "F = File Scan\n");
fprintf(stdout, "A = Access Control\n");
for (i = 0; i < trailing_blanks; i++)
fprintf(stdout, "\n");
}
static void grant_usage(void)
{
grant_usage_ex(0, 0, 0);
}
static void grant_usage_help(void)
{
grant_usage_ex(2, 0, 1);
}
static void grant_usage_after_error(void)
{
grant_usage_ex(0, 1, 2);
}
static void grant_header_path(char *out, char *path, int max)
{
char *p;
tool_header_path(out, path, max);
/* Novell GRANT displays server and volume as SERVER/SYS: while
* RIGHTS uses SERVER\SYS:. Keep the rest of the path with DOS
* backslashes. */
p = strchr(out, '\\');
if (p && strchr(out, ':') && p < strchr(out, ':'))
*p = '/';
}
static void grant_rights_bracket(uint16 rights, char *out)
{
/* Novell displays Supervisor as the full effective right mask. */
if (rights & NCP_RIGHT_SUPER)
rights |= NCP_RIGHT_ALL_386;
out[0] = (rights & NCP_RIGHT_SUPER) ? 'S' : ' ';
out[1] = (rights & NCP_RIGHT_READ) ? 'R' : ' ';
out[2] = (rights & NCP_RIGHT_WRITE) ? 'W' : ' ';
@@ -59,6 +109,17 @@ static void grant_rights_bracket(uint16 rights, char *out)
}
static uint16 grant_expand_supervisor_rights(uint16 rights)
{
/* Novell GRANT expands Supervisor to the full trustee mask before
* storing it. This keeps the wire value and the printed result in
* sync with Novell: GRANT S reports and sends [SRWCEMFA], not just
* [S ]. */
if (rights & NCP_RIGHT_SUPER)
rights |= NCP_RIGHT_ALL_386;
return(rights);
}
static void grant_rights_string(uint16 rights, char *out)
{
char *p = out;
@@ -148,12 +209,19 @@ static int grant_set_one(char *path, uint16 dhandle,
{
int rc;
rc = c32_ncp87_add_trustee_rights(path,
dhandle,
object_id,
rights,
0xffff,
NULL, NULL, NULL);
/* Novell GRANT uses the old NCP22/27 SetTrustee path. Prefer that
* path and keep the NCP87 add-trustee call only as a compatibility
* fallback for clients/servers that do not accept the old call. */
rc = c32_ncp22_set_trustee_rights(path, dhandle, object_id, rights);
if (rc) {
rc = c32_ncp87_add_trustee_rights(path,
dhandle,
object_id,
rights,
0xffff,
NULL, NULL, NULL);
}
grant_last_rc = rc;
return(rc);
}
@@ -210,10 +278,14 @@ int func_grant(int argc, char *argv[], int mode)
(void)mode;
if (argc < 2 || tool_is_help_arg(argv[1])) {
if (argc < 2)
if (argc < 2) {
fprintf(stdout, "\n");
grant_usage_error();
grant_usage();
return(argc < 2 ? 1 : 0);
grant_usage_after_error();
return(1);
}
grant_usage_help();
return(0);
}
/*
@@ -227,8 +299,9 @@ int func_grant(int argc, char *argv[], int mode)
break;
if (grant_add_right_word(argv[i], &rights)) {
grant_usage_error();
grant_usage();
fprintf(stdout, "\n");
grant_invalid_right_error();
grant_usage_after_error();
return(1);
}
have_rights = 1;
@@ -236,24 +309,27 @@ int func_grant(int argc, char *argv[], int mode)
}
if (!have_rights || i >= argc) {
fprintf(stdout, "\n");
grant_usage_error();
grant_usage();
grant_usage_after_error();
return(1);
}
if (tool_strsame(argv[i], "FOR")) {
i++;
if (i >= argc) {
fprintf(stdout, "\n");
grant_usage_error();
grant_usage();
grant_usage_after_error();
return(1);
}
path = argv[i++];
}
if (i >= argc || !tool_strsame(argv[i], "TO")) {
fprintf(stdout, "\n");
grant_usage_error();
grant_usage();
grant_usage_after_error();
return(1);
}
i++;
@@ -267,8 +343,9 @@ int func_grant(int argc, char *argv[], int mode)
}
if (i >= argc) {
fprintf(stdout, "\n");
grant_usage_error();
grant_usage();
grant_usage_after_error();
return(1);
}
@@ -276,8 +353,9 @@ int func_grant(int argc, char *argv[], int mode)
while (i < argc) {
if (!tool_is_option(argv[i])) {
fprintf(stdout, "\n");
grant_usage_error();
grant_usage();
grant_usage_after_error();
return(1);
}
@@ -300,11 +378,14 @@ int func_grant(int argc, char *argv[], int mode)
continue;
}
fprintf(stdout, "\n");
grant_usage_error();
grant_usage();
grant_usage_after_error();
return(1);
}
rights = grant_expand_supervisor_rights(rights);
if (tool_current_dhandle(&connid, &dhandle)) {
fprintf(stdout, "Specified path not locatable.\n");
return(1);
@@ -314,7 +395,14 @@ int func_grant(int argc, char *argv[], int mode)
upstr(namebuf);
object_id = ncp_17_35(namebuf, objtype);
if (!object_id) {
fprintf(stdout, "Object not found.\n");
char header[300];
grant_header_path(header, path, sizeof(header));
fprintf(stdout, "\n%s\n", header);
if (objtype == GRANT_BINDERY_GROUP)
fprintf(stdout, "\aGroup \"%s\" not found.\n", objname);
else
fprintf(stdout, "\aUser \"%s\" not found.\n", objname);
return(1);
}
@@ -324,7 +412,11 @@ int func_grant(int argc, char *argv[], int mode)
rc = grant_set_one(path, (uint16)dhandle, object_id, rights);
if (rc) {
fprintf(stdout, "Could not add trustee rights. rc=%d\n", grant_last_rc);
char header[300];
grant_header_path(header, path, sizeof(header));
fprintf(stdout, "\n%s\n", header);
fprintf(stdout, "Invalid path or no match for pattern specified.\n\n");
return(grant_last_rc ? grant_last_rc : 1);
}
@@ -333,12 +425,12 @@ int func_grant(int argc, char *argv[], int mode)
char base[80];
char bracket[10];
tool_header_path(header, path, sizeof(header));
grant_header_path(header, path, sizeof(header));
tool_basename(base, path, sizeof(base));
grant_rights_bracket(rights, bracket);
fprintf(stdout, "%s\n", header);
fprintf(stdout, "%-29.29sRights set to [%s]\n", base, bracket);
fprintf(stdout, "\n%s\n", header);
fprintf(stdout, "%-33.33sRights set to [%s]\n\n", base, bracket);
}
return(0);

BIN
net.exe

Binary file not shown.

125
remove.c
View File

@@ -12,15 +12,33 @@
static int remove_last_rc = 0;
static void remove_usage_error(void)
{
fprintf(stdout, "Command line arguments violate grammar defined for REMOVE.\n\n");
}
static void remove_usage(void)
{
fprintf(stdout, "\n");
fprintf(stdout, "Usage: REMOVE [USER | GROUP] name [FROM path] [option]\n");
fprintf(stdout, "Options: /Subdirs | /Files\n");
fprintf(stdout, "Options: /Subdirs | /Files \n");
}
static void remove_usage_after_error(void)
{
fprintf(stdout, "\007\n");
fprintf(stdout, "Usage: REMOVE [USER | GROUP] name [FROM path] [option]\n");
fprintf(stdout, "Options: /Subdirs | /Files \n");
fprintf(stdout, "\n");
}
static void remove_header_path(char *out, char *path, int max)
{
char *p;
trustee_header_path(out, path, max);
/* Novell REMOVE displays server and volume as SERVER/SYS: while
* RIGHTS uses SERVER\SYS:. Keep the rest of the path with DOS
* backslashes. */
p = strchr(out, '\\');
if (p && strchr(out, ':') && p < strchr(out, ':'))
*p = '/';
}
static int remove_one(char *path, uint16 dhandle, uint32 object_id,
@@ -30,7 +48,9 @@ static int remove_one(char *path, uint16 dhandle, uint32 object_id,
int is_dir;
int rc;
is_dir = forced_is_file ? 0 : trustee_path_is_dir(path);
/* Without /FILES, Novell REMOVE reports directory-oriented messages even
* if the specified path cannot be located. */
is_dir = forced_is_file ? 0 : 1;
rc = c32_ncp87_find_trustee_rights(path, dhandle, object_id, &old_rights,
NULL, NULL, NULL);
@@ -43,8 +63,10 @@ static int remove_one(char *path, uint16 dhandle, uint32 object_id,
return(1);
}
rc = c32_ncp87_delete_trustee_rights(path, dhandle, object_id,
NULL, NULL, NULL);
rc = c32_ncp22_delete_trustee_rights(path, dhandle, object_id);
if (rc)
rc = c32_ncp87_delete_trustee_rights(path, dhandle, object_id,
NULL, NULL, NULL);
remove_last_rc = rc;
if (rc) {
fprintf(stdout, "Error deleting trustee.\n");
@@ -53,32 +75,35 @@ static int remove_one(char *path, uint16 dhandle, uint32 object_id,
{
char header[300];
trustee_header_path(header, path, sizeof(header));
fprintf(stdout, "%s\n\n", header);
remove_header_path(header, path, sizeof(header));
fprintf(stdout, "%s\n", header);
}
if (objtype == TRUSTEE_BINDERY_GROUP)
fprintf(stdout, "Group \"%s\" no longer a trustee to the specified %s.\n",
fprintf(stdout, "Group \"%s\" no longer a trustee to the specified %s.\n\n",
objname, is_dir ? "directory" : "file");
else
fprintf(stdout, "User \"%s\" no longer a trustee to the specified %s.\n",
fprintf(stdout, "User \"%s\" no longer a trustee to the specified %s.\n\n",
objname, is_dir ? "directory" : "file");
return(0);
}
static int remove_subdirs(char *path, uint16 dhandle, uint32 object_id,
uint16 objtype, char *objname, int *count)
static int remove_subdirs_inner(char *path, uint16 dhandle, uint32 object_id,
uint16 objtype, char *objname, int *count,
int include_this)
{
struct find_t ff;
char pattern[260];
char child[260];
int rc = 0;
if (remove_one(path, dhandle, object_id, objtype, objname, 0) == 0)
(*count)++;
else
rc = 1;
if (include_this) {
if (remove_one(path, dhandle, object_id, objtype, objname, 0) == 0)
(*count)++;
else
rc = 1;
}
trustee_join_path(pattern, path, "*.*", sizeof(pattern));
@@ -86,7 +111,8 @@ static int remove_subdirs(char *path, uint16 dhandle, uint32 object_id,
do {
if ((ff.attrib & _A_SUBDIR) && !trustee_is_dot_dir(ff.name)) {
trustee_join_path(child, path, ff.name, sizeof(child));
if (remove_subdirs(child, dhandle, object_id, objtype, objname, count))
if (remove_subdirs_inner(child, dhandle, object_id, objtype, objname,
count, 1))
rc = 1;
}
} while (_dos_findnext(&ff) == 0);
@@ -95,6 +121,15 @@ static int remove_subdirs(char *path, uint16 dhandle, uint32 object_id,
return(rc);
}
static int remove_subdirs(char *path, uint16 dhandle, uint32 object_id,
uint16 objtype, char *objname, int *count)
{
/* Novell REMOVE /SUBDIRS affects the subdirectories under the specified
* start directory, not the start directory itself. */
return(remove_subdirs_inner(path, dhandle, object_id, objtype, objname,
count, 0));
}
static int remove_files(char *path, uint16 dhandle, uint32 object_id,
uint16 objtype, char *objname, int *count)
{
@@ -153,25 +188,36 @@ int func_remove(int argc, char *argv[], int mode)
(void)mode;
if (argc < 2 || trustee_is_help(argv[1])) {
if (argc < 2)
remove_usage_error();
if (argc < 2) {
remove_usage_after_error();
return(1);
}
remove_usage();
return(argc < 2 ? 1 : 0);
}
if (i < argc && trustee_same(argv[i], "USER")) {
objtype = TRUSTEE_BINDERY_USER;
objtype_given = 1;
i++;
/* Novell treats "REMOVE USER FROM path" as an object lookup for
* USER, not as a grammar error. */
if ((i + 1) < argc && trustee_same(argv[i + 1], "FROM")) {
objtype_given = 0;
} else {
objtype = TRUSTEE_BINDERY_USER;
objtype_given = 1;
i++;
}
} else if (i < argc && trustee_same(argv[i], "GROUP")) {
objtype = TRUSTEE_BINDERY_GROUP;
objtype_given = 1;
i++;
if ((i + 1) < argc && trustee_same(argv[i + 1], "FROM")) {
objtype_given = 0;
} else {
objtype = TRUSTEE_BINDERY_GROUP;
objtype_given = 1;
i++;
}
}
if (i >= argc) {
remove_usage_error();
remove_usage();
remove_usage_after_error();
return(1);
}
@@ -180,8 +226,7 @@ int func_remove(int argc, char *argv[], int mode)
if (i < argc && trustee_same(argv[i], "FROM")) {
i++;
if (i >= argc) {
remove_usage_error();
remove_usage();
remove_usage_after_error();
return(1);
}
path = argv[i++];
@@ -189,8 +234,7 @@ int func_remove(int argc, char *argv[], int mode)
while (i < argc) {
if (!trustee_is_option(argv[i])) {
remove_usage_error();
remove_usage();
remove_usage_after_error();
return(1);
}
@@ -206,8 +250,7 @@ int func_remove(int argc, char *argv[], int mode)
continue;
}
remove_usage_error();
remove_usage();
remove_usage_after_error();
return(1);
}
@@ -224,11 +267,11 @@ int func_remove(int argc, char *argv[], int mode)
object_id = trustee_lookup_object(objname, &objtype, objtype_given);
if (!object_id) {
if (objtype_given && objtype == TRUSTEE_BINDERY_GROUP)
fprintf(stdout, "Group \"%s\" not found.\n", objname);
fprintf(stdout, "\007Group \"%s\" not found.\n", objname);
else if (objtype_given)
fprintf(stdout, "User \"%s\" not found.\n", objname);
fprintf(stdout, "\007User \"%s\" not found.\n", objname);
else
fprintf(stdout, "User or group \"%s\" not found.\n", objname);
fprintf(stdout, "\007User or group \"%s\" not found.\n", objname);
return(1);
}
@@ -245,9 +288,9 @@ int func_remove(int argc, char *argv[], int mode)
}
if (use_subdirs || (!use_files && !rc))
fprintf(stdout, "Trustee \"%s\" removed from %d directories.\n", objprint, count);
fprintf(stdout, "Trustee \"%s\" removed from %d directories.\n\n", objprint, count);
else if (use_files)
fprintf(stdout, "Trustee \"%s\" removed from %d files.\n", objprint, count);
fprintf(stdout, "Trustee \"%s\" removed from %d files.\n\n", objprint, count);
return(rc ? (remove_last_rc ? remove_last_rc : 1) : 0);
}

101
test/flag/FLGC.BAT Normal file
View File

@@ -0,0 +1,101 @@
@ECHO OFF
REM FLGC.BAT - helper for FLGTSTA user-context FLAG tests.
C:
CD \FLGTMP
ECHO FLGC helper started. > C:\FLGTMP\HELPER.TXT
ECHO Running FLAG as NOPASSUSER, then relogging SUPERVISOR. >> C:\FLGTMP\HELPER.TXT
LOGOUT > C:\FLGTMP\D00_LOG.OUT
LOGIN NOPASSUSER > C:\FLGTMP\D01_LGIN.OUT
F:
CD \
ECHO Starting U10 read...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT > C:\FLGTMP\UNOV\U10_READ.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT > C:\FLGTMP\UPUB\U10_READ.OUT
ECHO Starting U11 N...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > C:\FLGTMP\UNOV\U11_N.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > C:\FLGTMP\UPUB\U11_N.OUT
ECHO Starting U12 H...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > C:\FLGTMP\UNOV\U12_H.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UNOV\U12_H.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > C:\FLGTMP\UPUB\U12_H.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UPUB\U12_H.OUT
ECHO Starting U13 RO...
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO > C:\FLGTMP\UNOV\U13_RO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> C:\FLGTMP\UNOV\U13_RO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO > C:\FLGTMP\UPUB\U13_RO.OUT
PUBLIC\FLAG F:\FLGTEST\BETA.TXT >> C:\FLGTMP\UPUB\U13_RO.OUT
ECHO Starting U14 A...
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A > C:\FLGTMP\UNOV\U14_A.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> C:\FLGTMP\UNOV\U14_A.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
PUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A > C:\FLGTMP\UPUB\U14_A.OUT
PUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> C:\FLGTMP\UPUB\U14_A.OUT
ECHO Starting U15 SY...
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN +SY > C:\FLGTMP\UNOV\U15_SY.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> C:\FLGTMP\UNOV\U15_SY.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
PUBLIC\FLAG F:\FLGTEST\DELTA.BIN +SY > C:\FLGTMP\UPUB\U15_SY.OUT
PUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> C:\FLGTMP\UPUB\U15_SY.OUT
ECHO Starting U16 DI RI...
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI > C:\FLGTMP\UNOV\U16_DIRI.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> C:\FLGTMP\UNOV\U16_DIRI.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI > C:\FLGTMP\UPUB\U16_DIRI.OUT
PUBLIC\FLAG F:\FLGTEST\EPS.TXT >> C:\FLGTMP\UPUB\U16_DIRI.OUT
ECHO Starting U17 mixed...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > C:\FLGTMP\UNOV\U17_MIX.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UNOV\U17_MIX.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > C:\FLGTMP\UPUB\U17_MIX.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UPUB\U17_MIX.OUT
ECHO Starting U18 clear...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H -RO -A > C:\FLGTMP\UNOV\U18_CLR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UNOV\U18_CLR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H -RO -A > C:\FLGTMP\UPUB\U18_CLR.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> C:\FLGTMP\UPUB\U18_CLR.OUT
ECHO Starting U90 missing...
NPUBLIC\FLAG F:\FLGTEST\NOFILE.TXT > C:\FLGTMP\UNOV\U90_MISS.OUT
PUBLIC\FLAG F:\FLGTEST\NOFILE.TXT > C:\FLGTMP\UPUB\U90_MISS.OUT
LOGOUT > C:\FLGTMP\D02_LGOT.OUT
F:
CD \
IF EXIST \LOGIN\LOGIN.EXE GOTO HAVELOGIN
ECHO F:\LOGIN\LOGIN.EXE not found. >> C:\FLGTMP\HELPER.TXT
GOTO END
:HAVELOGIN
F:\LOGIN\LOGIN SUPERVISOR /PWD:%LGNTPWD% > C:\FLGTMP\D03_LGSU.OUT
F:
CD \
IF EXIST \FLGTSTA.BAT GOTO QUEUEP2
ECHO F: not restored or FLGTSTA missing. >> C:\FLGTMP\HELPER.TXT
GOTO END
:QUEUEP2
C:
CD \FLGTMP
DLYSTRT /T:2 F:\FLGTSTA.BAT PART2 > C:\FLGTMP\D04_P2.OUT
:END

View File

@@ -1,55 +1,55 @@
@ECHO OFF
REM FLGTSTA.BAT
REM Automated Novell FLAG baseline for MARS NWE.
REM FLAG compare test.
REM
REM Run while already logged in and with F: mapped to SYS.
REM Direct part:
REM OUT = Novell baseline using \NPUBLIC\FLAG
REM PUBOUT = our implementation using \PUBLIC\FLAG
REM
REM Test tree:
REM F:\FLGTEST
REM Result tree:
REM F:\FLGCMP
REM User-context part:
REM NOPASSUSER logs in via DLYSTRT helper and runs the same effective tests.
REM UNOV = Novell FLAG as NOPASSUSER
REM UPUB = Public FLAG as NOPASSUSER
REM
REM Scope:
REM FLAG on files only.
REM For the automatic NOPASSUSER block set:
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: FLGTSTA [PART2]
GOTO END
:PART1
F:
CD \
REM --- Clean generated test/result directories (contents only). ---
REM --- Clean generated test/result directories. ---
IF EXIST FLGTEST\NUL DELTREE /Y FLGTEST\*.*
IF EXIST FLGCMP\NUL DELTREE /Y FLGCMP\*.*
IF EXIST FLGTMP\NUL DELTREE /Y FLGTMP\*.*
IF NOT EXIST FLGTEST\NUL MD FLGTEST
IF NOT EXIST FLGTMP\NUL MD FLGTMP
IF NOT EXIST FLGCMP\NUL MD FLGCMP
IF NOT EXIST FLGCMP\OUT\NUL MD FLGCMP\OUT
IF NOT EXIST FLGCMP\PUBOUT\NUL MD FLGCMP\PUBOUT
IF NOT EXIST FLGCMP\SETUP\NUL MD FLGCMP\SETUP
IF NOT EXIST FLGCMP\UNOV\NUL MD FLGCMP\UNOV
IF NOT EXIST FLGCMP\UPUB\NUL MD FLGCMP\UPUB
IF NOT EXIST FLGCMP\USETUP\NUL MD FLGCMP\USETUP
IF EXIST F:\FLGCMP\RUN.LOG DEL F:\FLGCMP\RUN.LOG
IF EXIST F:\FLGCMP\SUMMARY.TXT DEL F:\FLGCMP\SUMMARY.TXT
IF EXIST F:\FLGCMP\COMPARE.LOG DEL F:\FLGCMP\COMPARE.LOG
IF EXIST F:\FLGCMP\UCOMP.LOG DEL F:\FLGCMP\UCOMP.LOG
IF EXIST F:\FLGCMP\FLGTSTA.ZIP DEL F:\FLGCMP\FLGTSTA.ZIP
IF EXIST F:\FLGCMP\ZIP.LOG DEL F:\FLGCMP\ZIP.LOG
IF EXIST F:\FLGCMP\OUT\F01_BASE.OUT DEL F:\FLGCMP\OUT\F01_BASE.OUT
IF EXIST F:\FLGCMP\OUT\F02_FLAGN.OUT DEL F:\FLGCMP\OUT\F02_FLAGN.OUT
IF EXIST F:\FLGCMP\OUT\F03_SET1.OUT DEL F:\FLGCMP\OUT\F03_SET1.OUT
IF EXIST F:\FLGCMP\OUT\F04_NDIR1.OUT DEL F:\FLGCMP\OUT\F04_NDIR1.OUT
IF EXIST F:\FLGCMP\OUT\F05_FILTER.OUT DEL F:\FLGCMP\OUT\F05_FILTER.OUT
IF EXIST F:\FLGCMP\OUT\F06_CLEAR.OUT DEL F:\FLGCMP\OUT\F06_CLEAR.OUT
IF EXIST F:\FLGCMP\OUT\F07_COMBO.OUT DEL F:\FLGCMP\OUT\F07_COMBO.OUT
IF EXIST F:\FLGCMP\OUT\F08_COPYREN.OUT DEL F:\FLGCMP\OUT\F08_COPYREN.OUT
IF EXIST F:\FLGCMP\OUT\F09_FINAL.OUT DEL F:\FLGCMP\OUT\F09_FINAL.OUT
REM Clean test files.
IF EXIST F:\FLGTEST\ALPHA.TXT DEL F:\FLGTEST\ALPHA.TXT
IF EXIST F:\FLGTEST\BETA.TXT DEL F:\FLGTEST\BETA.TXT
IF EXIST F:\FLGTEST\GAMMA.DAT DEL F:\FLGTEST\GAMMA.DAT
IF EXIST F:\FLGTEST\DELTA.BIN DEL F:\FLGTEST\DELTA.BIN
IF EXIST F:\FLGTEST\EPS.TXT DEL F:\FLGTEST\EPS.TXT
IF EXIST F:\FLGTEST\RENAMED.TXT DEL F:\FLGTEST\RENAMED.TXT
IF EXIST F:\FLGTEST\COPY.TXT DEL F:\FLGTEST\COPY.TXT
ECHO FLGTSTA FLAG baseline > F:\FLGCMP\RUN.LOG
ECHO Run while already logged in. >> F:\FLGCMP\RUN.LOG
ECHO Date/time stamp skipped to avoid DOS prompt. >> F:\FLGCMP\RUN.LOG
ECHO FLGTSTA FLAG compare > F:\FLGCMP\RUN.LOG
ECHO Direct compare: NPUBLIC\FLAG vs PUBLIC\FLAG. >> F:\FLGCMP\RUN.LOG
ECHO User context: NOPASSUSER via DLYSTRT if LGNTPWD is set. >> F:\FLGCMP\RUN.LOG
ECHO. >> F:\FLGCMP\RUN.LOG
ECHO ALPHA FILE > F:\FLGTEST\ALPHA.TXT
@@ -58,111 +58,134 @@ ECHO GAMMA FILE > F:\FLGTEST\GAMMA.DAT
ECHO DELTA FILE > F:\FLGTEST\DELTA.BIN
ECHO EPS FILE > F:\FLGTEST\EPS.TXT
ECHO === F01 base FLAG/NDIR readback === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\NDIR F:\FLGTEST > F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\OUT\F01_BASE.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\OUT\F01_BASE.OUT
ECHO Starting D10 read normal...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT > F:\FLGCMP\OUT\D10_READ.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT > F:\FLGCMP\PUBOUT\D10_READ.OUT
ECHO === F02 explicit FLAG N cleanup === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > F:\FLGCMP\OUT\F02_FLAGN.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N >> F:\FLGCMP\OUT\F02_FLAGN.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N >> F:\FLGCMP\OUT\F02_FLAGN.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N >> F:\FLGCMP\OUT\F02_FLAGN.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N >> F:\FLGCMP\OUT\F02_FLAGN.OUT
ECHO Starting D11 FLAG N...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > F:\FLGCMP\OUT\D11_N.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > F:\FLGCMP\PUBOUT\D11_N.OUT
ECHO === F03 set individual flags === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN +Sy >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\OUT\F03_SET1.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\OUT\F03_SET1.OUT
ECHO Starting D12 +H...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > F:\FLGCMP\OUT\D12_H.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\D12_H.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H > F:\FLGCMP\PUBOUT\D12_H.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\PUBOUT\D12_H.OUT
ECHO === F04 NDIR after flags === >> F:\FLGCMP\RUN.LOG
NPUBLIC\NDIR F:\FLGTEST > F:\FLGCMP\OUT\F04_NDIR1.OUT
NPUBLIC\NDIR F:\FLGTEST /DATES >> F:\FLGCMP\OUT\F04_NDIR1.OUT
NPUBLIC\NDIR F:\FLGTEST /RIGHTS >> F:\FLGCMP\OUT\F04_NDIR1.OUT
ECHO Starting D13 +RO...
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO > F:\FLGCMP\OUT\D13_RO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\D13_RO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO > F:\FLGCMP\PUBOUT\D13_RO.OUT
PUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\PUBOUT\D13_RO.OUT
ECHO === F05 NDIR filters for flags === >> F:\FLGCMP\RUN.LOG
ECHO --- /H --- > F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /H >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /RO --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /RO >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /A --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /A >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /SY --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /SY >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /NOT H --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /NOT H >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO --- /NOT RO --- >> F:\FLGCMP\OUT\F05_FILTER.OUT
NPUBLIC\NDIR F:\FLGTEST /NOT RO >> F:\FLGCMP\OUT\F05_FILTER.OUT
ECHO Starting D14 +A...
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A > F:\FLGCMP\OUT\D14_A.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\OUT\D14_A.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
PUBLIC\FLAG F:\FLGTEST\GAMMA.DAT +A > F:\FLGCMP\PUBOUT\D14_A.OUT
PUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\PUBOUT\D14_A.OUT
ECHO === F06 clear individual flags === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H > F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT -RO >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT -A >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN -Sy >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT -DI -RI >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\OUT\F06_CLEAR.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\OUT\F06_CLEAR.OUT
ECHO Starting D15 +SY...
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN +SY > F:\FLGCMP\OUT\D15_SY.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\OUT\D15_SY.OUT
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
PUBLIC\FLAG F:\FLGTEST\DELTA.BIN +SY > F:\FLGCMP\PUBOUT\D15_SY.OUT
PUBLIC\FLAG F:\FLGTEST\DELTA.BIN >> F:\FLGCMP\PUBOUT\D15_SY.OUT
ECHO === F07 combined flags and FLAG N reset === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +A +Sy > F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT +RO +DI +RI >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\NDIR F:\FLGTEST >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\F07_COMBO.OUT
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT >> F:\FLGCMP\OUT\F07_COMBO.OUT
ECHO Starting D16 +DI +RI...
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI > F:\FLGCMP\OUT\D16_DIRI.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\OUT\D16_DIRI.OUT
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\EPS.TXT +DI +RI > F:\FLGCMP\PUBOUT\D16_DIRI.OUT
PUBLIC\FLAG F:\FLGTEST\EPS.TXT >> F:\FLGCMP\PUBOUT\D16_DIRI.OUT
ECHO === F08 copy/rename smoke === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N >> F:\FLGCMP\RUN.LOG
COPY F:\FLGTEST\EPS.TXT F:\FLGTEST\COPY.TXT > F:\FLGCMP\OUT\F08_COPYREN.OUT
REN F:\FLGTEST\COPY.TXT RENAMED.TXT >> F:\FLGCMP\OUT\F08_COPYREN.OUT
IF EXIST F:\FLGTEST\RENAMED.TXT ECHO OK RENAMED.TXT exists >> F:\FLGCMP\OUT\F08_COPYREN.OUT
IF NOT EXIST F:\FLGTEST\RENAMED.TXT ECHO FAIL RENAMED.TXT missing >> F:\FLGCMP\OUT\F08_COPYREN.OUT
NPUBLIC\FLAG F:\FLGTEST\RENAMED.TXT >> F:\FLGCMP\OUT\F08_COPYREN.OUT
NPUBLIC\NDIR F:\FLGTEST >> F:\FLGCMP\OUT\F08_COPYREN.OUT
ECHO Starting D17 mixed flags...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > F:\FLGCMP\OUT\D17_MIX.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\D17_MIX.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > F:\FLGCMP\PUBOUT\D17_MIX.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\PUBOUT\D17_MIX.OUT
ECHO === F09 final file cleanup/readback === >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N >> F:\FLGCMP\RUN.LOG
IF EXIST F:\FLGTEST\RENAMED.TXT NPUBLIC\FLAG F:\FLGTEST\RENAMED.TXT N >> F:\FLGCMP\RUN.LOG
NPUBLIC\NDIR F:\FLGTEST > F:\FLGCMP\OUT\F09_FINAL.OUT
ECHO Starting D18 clear flags...
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > NUL
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H -RO -A > F:\FLGCMP\OUT\D18_CLR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\OUT\D18_CLR.OUT
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT +H +RO +A > NUL
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT -H -RO -A > F:\FLGCMP\PUBOUT\D18_CLR.OUT
PUBLIC\FLAG F:\FLGTEST\ALPHA.TXT >> F:\FLGCMP\PUBOUT\D18_CLR.OUT
ECHO === SUMMARY === > F:\FLGCMP\SUMMARY.TXT
ECHO FLGTSTA FLAG baseline finished. >> F:\FLGCMP\SUMMARY.TXT
ECHO. >> F:\FLGCMP\SUMMARY.TXT
ECHO Expected: >> F:\FLGCMP\SUMMARY.TXT
ECHO - F03 shows H on ALPHA, RO on BETA, A on GAMMA, Sy on DELTA. >> F:\FLGCMP\SUMMARY.TXT
ECHO - F05 filters isolate H, RO, A, Sy and NOT variants. >> F:\FLGCMP\SUMMARY.TXT
ECHO - F06 clears the individual flags. >> F:\FLGCMP\SUMMARY.TXT
ECHO - F07 combined flags set and reset with N. >> F:\FLGCMP\SUMMARY.TXT
ECHO - F09 final readback shows normal usable files. >> F:\FLGCMP\SUMMARY.TXT
ECHO Optional pack results with FLGTZIP.BAT. >> F:\FLGCMP\SUMMARY.TXT
ECHO Starting D90 missing file...
NPUBLIC\FLAG F:\FLGTEST\NOFILE.TXT > F:\FLGCMP\OUT\D90_MISS.OUT
PUBLIC\FLAG F:\FLGTEST\NOFILE.TXT > F:\FLGCMP\PUBOUT\D90_MISS.OUT
ECHO Comparing direct FLAG outputs... > F:\FLGCMP\COMPARE.LOG
FOR %%F IN (D10_READ.OUT D11_N.OUT D12_H.OUT D13_RO.OUT D14_A.OUT D15_SY.OUT D16_DIRI.OUT D17_MIX.OUT D18_CLR.OUT D90_MISS.OUT) DO FC F:\FLGCMP\OUT\%%F F:\FLGCMP\PUBOUT\%%F >> F:\FLGCMP\COMPARE.LOG
REM Prepare user-context test tree.
ECHO Preparing NOPASSUSER FLAG matrix... >> F:\FLGCMP\RUN.LOG
NPUBLIC\FLAG F:\FLGTEST\ALPHA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\BETA.TXT N > NUL
NPUBLIC\FLAG F:\FLGTEST\GAMMA.DAT N > NUL
NPUBLIC\FLAG F:\FLGTEST\DELTA.BIN N > NUL
NPUBLIC\FLAG F:\FLGTEST\EPS.TXT N > NUL
NPUBLIC\GRANT ALL FOR F:\FLGTEST TO USER NOPASSUSER > F:\FLGCMP\SETUP\S01_GRD.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\ALPHA.TXT TO USER NOPASSUSER /FILES > F:\FLGCMP\SETUP\S02_GRF.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\BETA.TXT TO USER NOPASSUSER /FILES >> F:\FLGCMP\SETUP\S02_GRF.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\GAMMA.DAT TO USER NOPASSUSER /FILES >> F:\FLGCMP\SETUP\S02_GRF.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\DELTA.BIN TO USER NOPASSUSER /FILES >> F:\FLGCMP\SETUP\S02_GRF.OUT
NPUBLIC\GRANT ALL FOR F:\FLGTEST\EPS.TXT TO USER NOPASSUSER /FILES >> F:\FLGCMP\SETUP\S02_GRF.OUT
IF "%LGNTPWD%"=="" GOTO NEEDPWD
IF EXIST C:\FLGTMP DELTREE /Y C:\FLGTMP > NUL
MD C:\FLGTMP
MD C:\FLGTMP\UNOV
MD C:\FLGTMP\UPUB
COPY F:\FLGC.BAT C:\FLGTMP\FLGC.BAT > NUL
COPY F:\PUBLIC\DLYSTRT.EXE C:\FLGTMP\DLYSTRT.EXE > NUL
C:
CD \FLGTMP
DLYSTRT /T:2 FLGC.BAT
GOTO END
:NEEDPWD
ECHO LGNTPWD is not set. User-context FLAG block skipped. >> F:\FLGCMP\RUN.LOG
ECHO.
ECHO FLGTSTA fertig.
ECHO Ergebnisse liegen in F:\FLGCMP
ECHO Optional: FLGTZIP ausfuehren.
ECHO LGNTPWD ist nicht gesetzt. User-Kontext wurde nicht gestartet.
ECHO Beispiel:
ECHO SET LGNTPWD=dein-supervisor-passwort
ECHO FLGTSTA
GOTO END
:PART2
F:
CD \
IF NOT EXIST FLGCMP\UNOV\NUL MD FLGCMP\UNOV
IF NOT EXIST FLGCMP\UPUB\NUL MD FLGCMP\UPUB
IF EXIST F:\FLGCMP\UCOMP.LOG DEL F:\FLGCMP\UCOMP.LOG
COPY C:\FLGTMP\UNOV\*.OUT F:\FLGCMP\UNOV > NUL
COPY C:\FLGTMP\UPUB\*.OUT F:\FLGCMP\UPUB > NUL
IF EXIST C:\FLGTMP\HELPER.TXT COPY C:\FLGTMP\HELPER.TXT F:\FLGCMP > NUL
ECHO Comparing NOPASSUSER FLAG outputs... > F:\FLGCMP\UCOMP.LOG
FOR %%F IN (U10_READ.OUT U11_N.OUT U12_H.OUT U13_RO.OUT U14_A.OUT U15_SY.OUT U16_DIRI.OUT U17_MIX.OUT U18_CLR.OUT U90_MISS.OUT) DO FC F:\FLGCMP\UNOV\%%F F:\FLGCMP\UPUB\%%F >> F:\FLGCMP\UCOMP.LOG
ECHO FLGTSTA summary > F:\FLGCMP\SUMMARY.TXT
ECHO Direct compare: F:\FLGCMP\COMPARE.LOG >> F:\FLGCMP\SUMMARY.TXT
ECHO User compare: F:\FLGCMP\UCOMP.LOG >> F:\FLGCMP\SUMMARY.TXT
ECHO Optional: FLGTZIP ausfuehren. >> F:\FLGCMP\SUMMARY.TXT
ECHO.
ECHO FLGTSTA PART2 fertig. Optional FLGTZIP ausfuehren.
GOTO END
:END

View File

@@ -1,26 +1,25 @@
@ECHO OFF
REM FLGTZIP.BAT
REM Optional packer for FLGTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \FLGCMP
IF EXIST FLGTSTA.ZIP DEL FLGTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating FLGTSTA.ZIP > ZIP.LOG
ZIP -r FLGTSTA.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 \FLGTEST\NUL DELTREE /Y \FLGTEST >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\FLGCMP\FLGTSTA.ZIP
ECHO F:\FLGCMP\ZIP.LOG
ECHO.
@ECHO OFF
REM FLGTZIP.BAT
REM Optional packer for FLGTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \FLGCMP
IF EXIST FLGTSTA.ZIP DEL FLGTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating FLGTSTA.ZIP > ZIP.LOG
ZIP -r FLGTSTA.ZIP RUN.LOG SUMMARY.TXT COMPARE.LOG UCOMP.LOG HELPER.TXT OUT PUBOUT SETUP UNOV UPUB USETUP >> ZIP.LOG
REM Cleanup generated test directories after ZIP.
ECHO Cleaning generated test directories... >> ZIP.LOG
IF EXIST \FLGTEST\NUL DELTREE /Y \FLGTEST >> ZIP.LOG
IF EXIST \FLGTMP\NUL DELTREE /Y \FLGTMP >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\FLGCMP\FLGTSTA.ZIP
ECHO F:\FLGCMP\ZIP.LOG
ECHO.

View File

@@ -1,35 +1,50 @@
# FLAG automated test
Novell FLAG baseline using `NPUBLIC\FLAG`.
## Run
Run while already logged in and with `F:` mapped to `SYS`.
```text
FLGTSTA
FLGTZIP
```
Result:
```text
F:\FLGCMP\FLGTSTA.ZIP
```
Linux package with server log:
```sh
sudo ./mars_packtest_v3.sh flgtsta 5 mario
```
## Coverage
- file flag display
- `FLAG ... N`
- set/clear `H`, `RO`, `A`, `Sy`, `DI`, `RI`
- combined flags
- NDIR readback
- NDIR filters `/H`, `/RO`, `/A`, `/SY`, `/NOT H`, `/NOT RO`
- copy/rename smoke check
- final cleanup
# FLAG automated compare test
Compares Novell `NPUBLIC\FLAG` against the current `PUBLIC\FLAG`.
## Run
For the direct compare only:
```text
FLGTSTA
```
For the full automatic NOPASSUSER context block, set the maintainer-login
password first:
```text
SET LGNTPWD=your-supervisor-password
FLGTSTA
```
`FLGTSTA` starts `C:\FLGTMP\FLGC.BAT` through `DLYSTRT`, logs in as
`NOPASSUSER`, runs `NPUBLIC\FLAG` and `PUBLIC\FLAG`, logs back in as
`SUPERVISOR` with `F:\LOGIN\LOGIN /PWD:`, and then queues
`FLGTSTA PART2`.
Package manually:
```text
FLGTZIP
```
## Result directories
```text
F:\FLGCMP\OUT Novell FLAG direct baseline
F:\FLGCMP\PUBOUT PUBLIC FLAG direct output
F:\FLGCMP\COMPARE.LOG direct FC compare
F:\FLGCMP\UNOV Novell FLAG as NOPASSUSER
F:\FLGCMP\UPUB PUBLIC FLAG as NOPASSUSER
F:\FLGCMP\UCOMP.LOG NOPASSUSER FC compare
```
## Coverage
- `FLAG` display
- `FLAG ... N`
- set/clear `H`, `RO`, `A`, `SY`, `DI`, `RI`
- mixed flag combinations
- missing-file behavior
- same cases as `NOPASSUSER`

79
test/flagdir/FDGC.BAT Normal file
View File

@@ -0,0 +1,79 @@
@ECHO OFF
REM FDGC.BAT - helper for FDGTSTA user-context FLAGDIR tests.
C:
CD \FDGTMP
ECHO FDGC helper started. > C:\FDGTMP\HELPER.TXT
ECHO Running FLAGDIR as NOPASSUSER, then relogging SUPERVISOR. >> C:\FDGTMP\HELPER.TXT
LOGOUT > C:\FDGTMP\D00_LOG.OUT
LOGIN NOPASSUSER > C:\FDGTMP\D01_LGIN.OUT
F:
CD \
ECHO Starting U10 read...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA > C:\FDGTMP\UNOV\U10_READ.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRA > C:\FDGTMP\UPUB\U10_READ.OUT
ECHO Starting U11 Hidden...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden > C:\FDGTMP\UNOV\U11_HID.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA >> C:\FDGTMP\UNOV\U11_HID.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden > C:\FDGTMP\UPUB\U11_HID.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRA >> C:\FDGTMP\UPUB\U11_HID.OUT
ECHO Starting U12 System...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB System > C:\FDGTMP\UNOV\U12_SYS.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB >> C:\FDGTMP\UNOV\U12_SYS.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB Normal > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRB System > C:\FDGTMP\UPUB\U12_SYS.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRB >> C:\FDGTMP\UPUB\U12_SYS.OUT
ECHO Starting U13 Purge...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Purge > C:\FDGTMP\UNOV\U13_PUR.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC >> C:\FDGTMP\UNOV\U13_PUR.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Normal > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRC Purge > C:\FDGTMP\UPUB\U13_PUR.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRC >> C:\FDGTMP\UPUB\U13_PUR.OUT
ECHO Starting U14 Delete/Rename inhibit...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Deleteinhibit Renameinhibit > C:\FDGTMP\UNOV\U14_DIRI.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB >> C:\FDGTMP\UNOV\U14_DIRI.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Normal > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Deleteinhibit Renameinhibit > C:\FDGTMP\UPUB\U14_DIRI.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB >> C:\FDGTMP\UPUB\U14_DIRI.OUT
ECHO Starting U15 Normal reset...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden System > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > C:\FDGTMP\UNOV\U15_NORM.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA >> C:\FDGTMP\UNOV\U15_NORM.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden System > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > C:\FDGTMP\UPUB\U15_NORM.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRA >> C:\FDGTMP\UPUB\U15_NORM.OUT
ECHO Starting U90 missing...
NPUBLIC\FLAGDIR F:\FDGTEST\MISSING > C:\FDGTMP\UNOV\U90_MISS.OUT
PUBLIC\FLAGDIR F:\FDGTEST\MISSING > C:\FDGTMP\UPUB\U90_MISS.OUT
LOGOUT > C:\FDGTMP\D02_LGOT.OUT
F:
CD \
IF EXIST \LOGIN\LOGIN.EXE GOTO HAVELOGIN
ECHO F:\LOGIN\LOGIN.EXE not found. >> C:\FDGTMP\HELPER.TXT
GOTO END
:HAVELOGIN
F:\LOGIN\LOGIN SUPERVISOR /PWD:%LGNTPWD% > C:\FDGTMP\D03_LGSU.OUT
F:
CD \
IF EXIST \FDGTSTA.BAT GOTO QUEUEP2
ECHO F: not restored or FDGTSTA missing. >> C:\FDGTMP\HELPER.TXT
GOTO END
:QUEUEP2
C:
CD \FDGTMP
DLYSTRT /T:2 F:\FDGTSTA.BAT PART2 > C:\FDGTMP\D04_P2.OUT
:END

View File

@@ -1,31 +1,28 @@
@ECHO OFF
REM FDGTSTA.BAT
REM Automated Novell FLAGDIR baseline for MARS NWE.
REM FLAGDIR compare test.
REM
REM Run while already logged in and with F: mapped to SYS.
REM Direct part:
REM OUT = Novell baseline using \NPUBLIC\FLAGDIR
REM PUBOUT = our implementation using \PUBLIC\FLAGDIR
REM
REM Test tree:
REM F:\FDGTEST
REM Result tree:
REM F:\FDGCMP
REM
REM Scope:
REM FLAGDIR on directories only.
REM
REM FLAGDIR uses long option names:
REM Normal
REM System
REM Hidden
REM Deleteinhibit
REM Purge
REM Renameinhibit
REM User-context part:
REM NOPASSUSER logs in via DLYSTRT helper and runs the same effective tests.
IF "%1"=="" GOTO PART1
IF "%1"=="PART2" GOTO PART2
IF "%1"=="part2" GOTO PART2
IF "%1"=="Part2" GOTO PART2
ECHO Usage: FDGTSTA [PART2]
GOTO END
:PART1
F:
CD \
REM --- Clean generated test/result directories (contents only). ---
IF EXIST FDGTEST\NUL DELTREE /Y FDGTEST\*.*
IF EXIST FDGCMP\NUL DELTREE /Y FDGCMP\*.*
IF EXIST FDGTMP\NUL DELTREE /Y FDGTMP\*.*
IF NOT EXIST FDGTEST\NUL MD FDGTEST
IF NOT EXIST FDGTEST\DIRA\NUL MD FDGTEST\DIRA
@@ -34,89 +31,117 @@ IF NOT EXIST FDGTEST\DIRC\NUL MD FDGTEST\DIRC
IF NOT EXIST FDGTEST\DIRB\SUB\NUL MD FDGTEST\DIRB\SUB
IF NOT EXIST FDGCMP\NUL MD FDGCMP
IF NOT EXIST FDGCMP\OUT\NUL MD FDGCMP\OUT
IF NOT EXIST FDGCMP\PUBOUT\NUL MD FDGCMP\PUBOUT
IF NOT EXIST FDGCMP\SETUP\NUL MD FDGCMP\SETUP
IF NOT EXIST FDGCMP\UNOV\NUL MD FDGCMP\UNOV
IF NOT EXIST FDGCMP\UPUB\NUL MD FDGCMP\UPUB
IF EXIST F:\FDGCMP\RUN.LOG DEL F:\FDGCMP\RUN.LOG
IF EXIST F:\FDGCMP\SUMMARY.TXT DEL F:\FDGCMP\SUMMARY.TXT
IF EXIST F:\FDGCMP\COMPARE.LOG DEL F:\FDGCMP\COMPARE.LOG
IF EXIST F:\FDGCMP\UCOMP.LOG DEL F:\FDGCMP\UCOMP.LOG
IF EXIST F:\FDGCMP\FDGTSTA.ZIP DEL F:\FDGCMP\FDGTSTA.ZIP
IF EXIST F:\FDGCMP\ZIP.LOG DEL F:\FDGCMP\ZIP.LOG
IF EXIST F:\FDGCMP\OUT\D01_BASE.OUT DEL F:\FDGCMP\OUT\D01_BASE.OUT
IF EXIST F:\FDGCMP\OUT\D02_SET.OUT DEL F:\FDGCMP\OUT\D02_SET.OUT
IF EXIST F:\FDGCMP\OUT\D03_NDIR.OUT DEL F:\FDGCMP\OUT\D03_NDIR.OUT
IF EXIST F:\FDGCMP\OUT\D04_FILTER.OUT DEL F:\FDGCMP\OUT\D04_FILTER.OUT
IF EXIST F:\FDGCMP\OUT\D05_NORMAL.OUT DEL F:\FDGCMP\OUT\D05_NORMAL.OUT
IF EXIST F:\FDGCMP\OUT\D06_FINAL.OUT DEL F:\FDGCMP\OUT\D06_FINAL.OUT
IF EXIST F:\FDGTEST\DIRB\SUB\SUB.TXT DEL F:\FDGTEST\DIRB\SUB\SUB.TXT
ECHO SUB FILE > F:\FDGTEST\DIRB\SUB\SUB.TXT
ECHO FDGTSTA FLAGDIR compare > F:\FDGCMP\RUN.LOG
ECHO FDGTSTA FLAGDIR baseline > F:\FDGCMP\RUN.LOG
ECHO Run while already logged in. >> F:\FDGCMP\RUN.LOG
ECHO Date/time stamp skipped to avoid DOS prompt. >> F:\FDGCMP\RUN.LOG
ECHO. >> F:\FDGCMP\RUN.LOG
ECHO Starting D10 read normal...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA > F:\FDGCMP\OUT\D10_READ.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRA > F:\FDGCMP\PUBOUT\D10_READ.OUT
ECHO === D01 FLAGDIR base / reset to Normal === >> F:\FDGCMP\RUN.LOG
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal >> F:\FDGCMP\RUN.LOG
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB Normal >> F:\FDGCMP\RUN.LOG
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Normal >> F:\FDGCMP\RUN.LOG
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Normal >> F:\FDGCMP\RUN.LOG
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA > F:\FDGCMP\OUT\D01_BASE.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB >> F:\FDGCMP\OUT\D01_BASE.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC >> F:\FDGCMP\OUT\D01_BASE.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB >> F:\FDGCMP\OUT\D01_BASE.OUT
ECHO Starting D11 Hidden...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden > F:\FDGCMP\OUT\D11_HID.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA >> F:\FDGCMP\OUT\D11_HID.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden > F:\FDGCMP\PUBOUT\D11_HID.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRA >> F:\FDGCMP\PUBOUT\D11_HID.OUT
ECHO === D02 FLAGDIR set directory flags === >> F:\FDGCMP\RUN.LOG
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden > F:\FDGCMP\OUT\D02_SET.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB System >> F:\FDGCMP\OUT\D02_SET.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Purge >> F:\FDGCMP\OUT\D02_SET.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Deleteinhibit Renameinhibit >> F:\FDGCMP\OUT\D02_SET.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA >> F:\FDGCMP\OUT\D02_SET.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB >> F:\FDGCMP\OUT\D02_SET.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC >> F:\FDGCMP\OUT\D02_SET.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB >> F:\FDGCMP\OUT\D02_SET.OUT
ECHO Starting D12 System...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB System > F:\FDGCMP\OUT\D12_SYS.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB >> F:\FDGCMP\OUT\D12_SYS.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB Normal > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRB System > F:\FDGCMP\PUBOUT\D12_SYS.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRB >> F:\FDGCMP\PUBOUT\D12_SYS.OUT
ECHO === D03 NDIR directory readback === >> F:\FDGCMP\RUN.LOG
NPUBLIC\NDIR F:\FDGTEST > F:\FDGCMP\OUT\D03_NDIR.OUT
NPUBLIC\NDIR F:\FDGTEST /DO >> F:\FDGCMP\OUT\D03_NDIR.OUT
NPUBLIC\NDIR F:\FDGTEST /RIGHTS >> F:\FDGCMP\OUT\D03_NDIR.OUT
ECHO Starting D13 Purge...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Purge > F:\FDGCMP\OUT\D13_PUR.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC >> F:\FDGCMP\OUT\D13_PUR.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Normal > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRC Purge > F:\FDGCMP\PUBOUT\D13_PUR.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRC >> F:\FDGCMP\PUBOUT\D13_PUR.OUT
ECHO === D04 NDIR filters for directory flags === >> F:\FDGCMP\RUN.LOG
ECHO --- /H --- > F:\FDGCMP\OUT\D04_FILTER.OUT
NPUBLIC\NDIR F:\FDGTEST /H >> F:\FDGCMP\OUT\D04_FILTER.OUT
ECHO --- /SY --- >> F:\FDGCMP\OUT\D04_FILTER.OUT
NPUBLIC\NDIR F:\FDGTEST /SY >> F:\FDGCMP\OUT\D04_FILTER.OUT
ECHO --- /NOT H --- >> F:\FDGCMP\OUT\D04_FILTER.OUT
NPUBLIC\NDIR F:\FDGTEST /NOT H >> F:\FDGCMP\OUT\D04_FILTER.OUT
ECHO Starting D14 Delete/Rename inhibit...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Normal > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Deleteinhibit Renameinhibit > F:\FDGCMP\OUT\D14_DIRI.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB >> F:\FDGCMP\OUT\D14_DIRI.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Normal > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Deleteinhibit Renameinhibit > F:\FDGCMP\PUBOUT\D14_DIRI.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB >> F:\FDGCMP\PUBOUT\D14_DIRI.OUT
ECHO === D05 FLAGDIR Normal reset === >> F:\FDGCMP\RUN.LOG
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > F:\FDGCMP\OUT\D05_NORMAL.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB Normal >> F:\FDGCMP\OUT\D05_NORMAL.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC Normal >> F:\FDGCMP\OUT\D05_NORMAL.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB Normal >> F:\FDGCMP\OUT\D05_NORMAL.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA >> F:\FDGCMP\OUT\D05_NORMAL.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB >> F:\FDGCMP\OUT\D05_NORMAL.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRC >> F:\FDGCMP\OUT\D05_NORMAL.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRB\SUB >> F:\FDGCMP\OUT\D05_NORMAL.OUT
ECHO Starting D15 mixed reset...
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden System > NUL
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > F:\FDGCMP\OUT\D15_NORM.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA >> F:\FDGCMP\OUT\D15_NORM.OUT
NPUBLIC\FLAGDIR F:\FDGTEST\DIRA Hidden System > NUL
PUBLIC\FLAGDIR F:\FDGTEST\DIRA Normal > F:\FDGCMP\PUBOUT\D15_NORM.OUT
PUBLIC\FLAGDIR F:\FDGTEST\DIRA >> F:\FDGCMP\PUBOUT\D15_NORM.OUT
ECHO === D06 final NDIR readback === >> F:\FDGCMP\RUN.LOG
NPUBLIC\NDIR F:\FDGTEST > F:\FDGCMP\OUT\D06_FINAL.OUT
NPUBLIC\NDIR F:\FDGTEST /DO >> F:\FDGCMP\OUT\D06_FINAL.OUT
NPUBLIC\NDIR F:\FDGTEST /RIGHTS >> F:\FDGCMP\OUT\D06_FINAL.OUT
ECHO Starting D90 missing dir...
NPUBLIC\FLAGDIR F:\FDGTEST\MISSING > F:\FDGCMP\OUT\D90_MISS.OUT
PUBLIC\FLAGDIR F:\FDGTEST\MISSING > F:\FDGCMP\PUBOUT\D90_MISS.OUT
ECHO === SUMMARY === > F:\FDGCMP\SUMMARY.TXT
ECHO FDGTSTA FLAGDIR baseline finished. >> F:\FDGCMP\SUMMARY.TXT
ECHO. >> F:\FDGCMP\SUMMARY.TXT
ECHO Expected: >> F:\FDGCMP\SUMMARY.TXT
ECHO - D01 displays base directory flags after Normal reset. >> F:\FDGCMP\SUMMARY.TXT
ECHO - D02 sets Hidden, System, Purge, Deleteinhibit, Renameinhibit. >> F:\FDGCMP\SUMMARY.TXT
ECHO - D03 shows NDIR directory readback. >> F:\FDGCMP\SUMMARY.TXT
ECHO - D04 checks NDIR filters for visible directory flags. >> F:\FDGCMP\SUMMARY.TXT
ECHO - D05 resets all directory flags to Normal. >> F:\FDGCMP\SUMMARY.TXT
ECHO - D06 final readback should show normal directories. >> F:\FDGCMP\SUMMARY.TXT
ECHO Optional pack results with FDGTZIP.BAT. >> F:\FDGCMP\SUMMARY.TXT
ECHO Comparing direct FLAGDIR outputs... > F:\FDGCMP\COMPARE.LOG
FOR %%F IN (D10_READ.OUT D11_HID.OUT D12_SYS.OUT D13_PUR.OUT D14_DIRI.OUT D15_NORM.OUT D90_MISS.OUT) DO FC F:\FDGCMP\OUT\%%F F:\FDGCMP\PUBOUT\%%F >> F:\FDGCMP\COMPARE.LOG
REM Grant NOPASSUSER enough rights for user-context directory flag tests.
NPUBLIC\GRANT ALL FOR F:\FDGTEST TO USER NOPASSUSER > F:\FDGCMP\SETUP\S01_GRD.OUT
NPUBLIC\GRANT ALL FOR F:\FDGTEST\DIRA TO USER NOPASSUSER >> F:\FDGCMP\SETUP\S01_GRD.OUT
NPUBLIC\GRANT ALL FOR F:\FDGTEST\DIRB TO USER NOPASSUSER >> F:\FDGCMP\SETUP\S01_GRD.OUT
NPUBLIC\GRANT ALL FOR F:\FDGTEST\DIRC TO USER NOPASSUSER >> F:\FDGCMP\SETUP\S01_GRD.OUT
NPUBLIC\GRANT ALL FOR F:\FDGTEST\DIRB\SUB TO USER NOPASSUSER >> F:\FDGCMP\SETUP\S01_GRD.OUT
IF "%LGNTPWD%"=="" GOTO NEEDPWD
IF EXIST C:\FDGTMP DELTREE /Y C:\FDGTMP > NUL
MD C:\FDGTMP
MD C:\FDGTMP\UNOV
MD C:\FDGTMP\UPUB
COPY F:\FDGC.BAT C:\FDGTMP\FDGC.BAT > NUL
COPY F:\PUBLIC\DLYSTRT.EXE C:\FDGTMP\DLYSTRT.EXE > NUL
C:
CD \FDGTMP
DLYSTRT /T:2 FDGC.BAT
GOTO END
:NEEDPWD
ECHO LGNTPWD is not set. User-context FLAGDIR block skipped. >> F:\FDGCMP\RUN.LOG
ECHO.
ECHO FDGTSTA fertig.
ECHO Ergebnisse liegen in F:\FDGCMP
ECHO Optional: FDGTZIP ausfuehren.
ECHO LGNTPWD ist nicht gesetzt. User-Kontext wurde nicht gestartet.
GOTO END
:PART2
F:
CD \
IF NOT EXIST FDGCMP\UNOV\NUL MD FDGCMP\UNOV
IF NOT EXIST FDGCMP\UPUB\NUL MD FDGCMP\UPUB
IF EXIST F:\FDGCMP\UCOMP.LOG DEL F:\FDGCMP\UCOMP.LOG
COPY C:\FDGTMP\UNOV\*.OUT F:\FDGCMP\UNOV > NUL
COPY C:\FDGTMP\UPUB\*.OUT F:\FDGCMP\UPUB > NUL
IF EXIST C:\FDGTMP\HELPER.TXT COPY C:\FDGTMP\HELPER.TXT F:\FDGCMP > NUL
ECHO Comparing NOPASSUSER FLAGDIR outputs... > F:\FDGCMP\UCOMP.LOG
FOR %%F IN (U10_READ.OUT U11_HID.OUT U12_SYS.OUT U13_PUR.OUT U14_DIRI.OUT U15_NORM.OUT U90_MISS.OUT) DO FC F:\FDGCMP\UNOV\%%F F:\FDGCMP\UPUB\%%F >> F:\FDGCMP\UCOMP.LOG
ECHO FDGTSTA summary > F:\FDGCMP\SUMMARY.TXT
ECHO Direct compare: F:\FDGCMP\COMPARE.LOG >> F:\FDGCMP\SUMMARY.TXT
ECHO User compare: F:\FDGCMP\UCOMP.LOG >> F:\FDGCMP\SUMMARY.TXT
ECHO Optional: FDGTZIP ausfuehren. >> F:\FDGCMP\SUMMARY.TXT
ECHO.
ECHO FDGTSTA PART2 fertig. Optional FDGTZIP ausfuehren.
GOTO END
:END

View File

@@ -1,26 +1,25 @@
@ECHO OFF
REM FDGTZIP.BAT
REM Optional packer for FDGTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \FDGCMP
IF EXIST FDGTSTA.ZIP DEL FDGTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating FDGTSTA.ZIP > ZIP.LOG
ZIP -r FDGTSTA.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 \FDGTEST\NUL DELTREE /Y \FDGTEST >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\FDGCMP\FDGTSTA.ZIP
ECHO F:\FDGCMP\ZIP.LOG
ECHO.
@ECHO OFF
REM FDGTZIP.BAT
REM Optional packer for FDGTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \FDGCMP
IF EXIST FDGTSTA.ZIP DEL FDGTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating FDGTSTA.ZIP > ZIP.LOG
ZIP -r FDGTSTA.ZIP RUN.LOG SUMMARY.TXT COMPARE.LOG UCOMP.LOG HELPER.TXT OUT PUBOUT SETUP UNOV UPUB >> ZIP.LOG
REM Cleanup generated test directories after ZIP.
ECHO Cleaning generated test directories... >> ZIP.LOG
IF EXIST \FDGTEST\NUL DELTREE /Y \FDGTEST >> ZIP.LOG
IF EXIST \FDGTMP\NUL DELTREE /Y \FDGTMP >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\FDGCMP\FDGTSTA.ZIP
ECHO F:\FDGCMP\ZIP.LOG
ECHO.

View File

@@ -1,47 +1,51 @@
# FLAGDIR automated test
Novell FLAGDIR baseline using `NPUBLIC\FLAGDIR`.
`FLAGDIR` uses long option names, not the short FLAG names.
Supported options shown by the tool:
```text
Normal
System
Hidden
Deleteinhibit
Purge
Renameinhibit
```
## Run
Run while already logged in and with `F:` mapped to `SYS`.
```text
FDGTSTA
FDGTZIP
```
Result:
```text
F:\FDGCMP\FDGTSTA.ZIP
```
Linux package with server log:
```sh
sudo ./mars_packtest_v3.sh fdgtsta 5 mario
```
## Coverage
- directory flag display
- `Normal` reset
- set `Hidden`, `System`, `Purge`
- set `Deleteinhibit` and `Renameinhibit`
- NDIR directory readback
- NDIR filters for visible flags
- final reset/readback
# FLAGDIR automated compare test
Compares Novell `NPUBLIC\FLAGDIR` against the current `PUBLIC\FLAGDIR`.
## Run
For the direct compare only:
```text
FDGTSTA
```
For the automatic NOPASSUSER context block, set the maintainer-login password:
```text
SET LGNTPWD=your-supervisor-password
FDGTSTA
```
`FDGTSTA` starts `C:\FDGTMP\FDGC.BAT` through `DLYSTRT`, logs in as
`NOPASSUSER`, runs `NPUBLIC\FLAGDIR` and `PUBLIC\FLAGDIR`, logs back in as
`SUPERVISOR` with `F:\LOGIN\LOGIN /PWD:`, and then queues
`FDGTSTA PART2`.
Package manually:
```text
FDGTZIP
```
## Result directories
```text
F:\FDGCMP\OUT Novell FLAGDIR direct baseline
F:\FDGCMP\PUBOUT PUBLIC FLAGDIR direct output
F:\FDGCMP\COMPARE.LOG direct FC compare
F:\FDGCMP\UNOV Novell FLAGDIR as NOPASSUSER
F:\FDGCMP\UPUB PUBLIC FLAGDIR as NOPASSUSER
F:\FDGCMP\UCOMP.LOG NOPASSUSER FC compare
```
## Coverage
- `FLAGDIR` display
- `Normal`
- `Hidden`
- `System`
- `Purge`
- `Deleteinhibit` / `Renameinhibit`
- missing-directory behavior
- same cases as `NOPASSUSER`

165
test/grant/GRNTC.BAT Normal file
View File

@@ -0,0 +1,165 @@
@ECHO OFF
REM GRNTC.BAT - delayed user-context GRANT readback helper.
REM Started by GRNTSTA via DLYSTRT. Runs from C:\GRNTTMP.
C:
CD \GRNTTMP
ECHO GRNTC user-context GRANT readback helper > HELPER.TXT
ECHO Current phase: logout supervisor, login NOPASSUSER. >> HELPER.TXT
LOGOUT > ULOG1.OUT
LOGIN NOPASSUSER > ULOGIN.OUT
F:
CD \
IF EXIST \NPUBLIC\RIGHTS.EXE GOTO HAVEF
ECHO F: not ready after NOPASSUSER login. >> C:\GRNTTMP\HELPER.TXT
GOTO RELSUP
:HAVEF
ECHO Starting G10_R as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G10 > C:\GRNTTMP\UNOV\G10_R.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G10 > C:\GRNTTMP\UPUB\G10_R.OUT
ECHO Starting G11_W as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G11 > C:\GRNTTMP\UNOV\G11_W.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G11 > C:\GRNTTMP\UPUB\G11_W.OUT
ECHO Starting G12_C as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G12 > C:\GRNTTMP\UNOV\G12_C.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G12 > C:\GRNTTMP\UPUB\G12_C.OUT
ECHO Starting G13_E as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G13 > C:\GRNTTMP\UNOV\G13_E.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G13 > C:\GRNTTMP\UPUB\G13_E.OUT
ECHO Starting G14_M as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G14 > C:\GRNTTMP\UNOV\G14_M.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G14 > C:\GRNTTMP\UPUB\G14_M.OUT
ECHO Starting G15_F as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G15 > C:\GRNTTMP\UNOV\G15_F.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G15 > C:\GRNTTMP\UPUB\G15_F.OUT
ECHO Starting G16_A as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G16 > C:\GRNTTMP\UNOV\G16_A.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G16 > C:\GRNTTMP\UPUB\G16_A.OUT
ECHO Starting G17_S as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G17 > C:\GRNTTMP\UNOV\G17_S.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G17 > C:\GRNTTMP\UPUB\G17_S.OUT
ECHO Starting G20_RF as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G20 > C:\GRNTTMP\UNOV\G20_RF.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G20 > C:\GRNTTMP\UPUB\G20_RF.OUT
ECHO Starting G21_RW as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G21 > C:\GRNTTMP\UNOV\G21_RW.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G21 > C:\GRNTTMP\UPUB\G21_RW.OUT
ECHO Starting G22_RWC as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G22 > C:\GRNTTMP\UNOV\G22_RWC.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G22 > C:\GRNTTMP\UPUB\G22_RWC.OUT
ECHO Starting G23_RWCE as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G23 > C:\GRNTTMP\UNOV\G23_RWCE.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G23 > C:\GRNTTMP\UPUB\G23_RWCE.OUT
ECHO Starting G24_RAL as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G24 > C:\GRNTTMP\UNOV\G24_RAL.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G24 > C:\GRNTTMP\UPUB\G24_RAL.OUT
ECHO Starting G25_SAL as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G25 > C:\GRNTTMP\UNOV\G25_SAL.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G25 > C:\GRNTTMP\UPUB\G25_SAL.OUT
ECHO Starting G26_ALL as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G26 > C:\GRNTTMP\UNOV\G26_ALL.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G26 > C:\GRNTTMP\UPUB\G26_ALL.OUT
ECHO Starting G27_N as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G27 > C:\GRNTTMP\UNOV\G27_N.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G27 > C:\GRNTTMP\UPUB\G27_N.OUT
ECHO Starting G30_RE as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G30 > C:\GRNTTMP\UNOV\G30_RE.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G30 > C:\GRNTTMP\UPUB\G30_RE.OUT
ECHO Starting G31_RWF as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G31 > C:\GRNTTMP\UNOV\G31_RWF.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G31 > C:\GRNTTMP\UPUB\G31_RWF.OUT
ECHO Starting G32_RCM as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G32 > C:\GRNTTMP\UNOV\G32_RCM.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G32 > C:\GRNTTMP\UPUB\G32_RCM.OUT
ECHO Starting G33_RFA as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G33 > C:\GRNTTMP\UNOV\G33_RFA.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G33 > C:\GRNTTMP\UPUB\G33_RFA.OUT
ECHO Starting G34_WCM as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G34 > C:\GRNTTMP\UNOV\G34_WCM.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G34 > C:\GRNTTMP\UPUB\G34_WCM.OUT
ECHO Starting G35_EMF as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G35 > C:\GRNTTMP\UNOV\G35_EMF.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G35 > C:\GRNTTMP\UPUB\G35_EMF.OUT
ECHO Starting G36_RMF as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G36 > C:\GRNTTMP\UNOV\G36_RMF.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G36 > C:\GRNTTMP\UPUB\G36_RMF.OUT
ECHO Starting G37_REMA as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G37 > C:\GRNTTMP\UNOV\G37_REMA.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G37 > C:\GRNTTMP\UPUB\G37_REMA.OUT
ECHO Starting G38_SR as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G38 > C:\GRNTTMP\UNOV\G38_SR.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G38 > C:\GRNTTMP\UPUB\G38_SR.OUT
ECHO Starting G39_SRF as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G39 > C:\GRNTTMP\UNOV\G39_SRF.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G39 > C:\GRNTTMP\UPUB\G39_SRF.OUT
ECHO Starting G40_SWCM as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\G40 > C:\GRNTTMP\UNOV\G40_SWCM.OUT
\PUBLIC\RIGHTS F:\GRNTEST\G40 > C:\GRNTTMP\UPUB\G40_SWCM.OUT
ECHO Starting F10_R as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\F10\T.TXT > C:\GRNTTMP\UNOV\F10_R.OUT
\PUBLIC\RIGHTS F:\GRNTEST\F10\T.TXT > C:\GRNTTMP\UPUB\F10_R.OUT
ECHO Starting F11_RF as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\F11\T.TXT > C:\GRNTTMP\UNOV\F11_RF.OUT
\PUBLIC\RIGHTS F:\GRNTEST\F11\T.TXT > C:\GRNTTMP\UPUB\F11_RF.OUT
ECHO Starting F12_RAL as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\F12\T.TXT > C:\GRNTTMP\UNOV\F12_RAL.OUT
\PUBLIC\RIGHTS F:\GRNTEST\F12\T.TXT > C:\GRNTTMP\UPUB\F12_RAL.OUT
ECHO Starting F13_ALL as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\F13\T.TXT > C:\GRNTTMP\UNOV\F13_ALL.OUT
\PUBLIC\RIGHTS F:\GRNTEST\F13\T.TXT > C:\GRNTTMP\UPUB\F13_ALL.OUT
ECHO Starting F14_N as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\F14\T.TXT > C:\GRNTTMP\UNOV\F14_N.OUT
\PUBLIC\RIGHTS F:\GRNTEST\F14\T.TXT > C:\GRNTTMP\UPUB\F14_N.OUT
ECHO Starting F15_S as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\F15\T.TXT > C:\GRNTTMP\UNOV\F15_S.OUT
\PUBLIC\RIGHTS F:\GRNTEST\F15\T.TXT > C:\GRNTTMP\UPUB\F15_S.OUT
ECHO Starting F16_SAL as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\F16\T.TXT > C:\GRNTTMP\UNOV\F16_SAL.OUT
\PUBLIC\RIGHTS F:\GRNTEST\F16\T.TXT > C:\GRNTTMP\UPUB\F16_SAL.OUT
ECHO Starting S10_R as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\S10\S1 > C:\GRNTTMP\UNOV\S10_R.OUT
\PUBLIC\RIGHTS F:\GRNTEST\S10\S1 > C:\GRNTTMP\UPUB\S10_R.OUT
ECHO Starting S11_RWC as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\S11\S1 > C:\GRNTTMP\UNOV\S11_RWC.OUT
\PUBLIC\RIGHTS F:\GRNTEST\S11\S1 > C:\GRNTTMP\UPUB\S11_RWC.OUT
ECHO Starting S12_ALL as NOPASSUSER... >> C:\GRNTTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\GRNTEST\S12\S1 > C:\GRNTTMP\UNOV\S12_ALL.OUT
\PUBLIC\RIGHTS F:\GRNTEST\S12\S1 > C:\GRNTTMP\UPUB\S12_ALL.OUT
:RELSUP
C:
CD \GRNTTMP
LOGOUT > ULOG2.OUT
F:
CD \
IF EXIST \LOGIN\LOGIN.EXE GOTO HAVELOG
ECHO F:\LOGIN\LOGIN.EXE not found. >> C:\GRNTTMP\HELPER.TXT
GOTO MANUAL
:HAVELOG
F:\LOGIN\LOGIN SUPERVISOR /PWD:%LGNTPWD% > C:\GRNTTMP\ULGSUP.OUT
F:
CD \
IF EXIST \GRNTSTA.BAT GOTO QUEUEP2
ECHO F: not restored or \GRNTSTA.BAT missing. >> C:\GRNTTMP\HELPER.TXT
GOTO MANUAL
:QUEUEP2
C:
CD \GRNTTMP
DLYSTRT /T:2 F:\GRNTSTA.BAT PART2
GOTO END
:MANUAL
ECHO Please run manually after SUPERVISOR login: >> C:\GRNTTMP\HELPER.TXT
ECHO F: >> C:\GRNTTMP\HELPER.TXT
ECHO CD \ >> C:\GRNTTMP\HELPER.TXT
ECHO GRNTSTA PART2 >> C:\GRNTTMP\HELPER.TXT
:END

View File

@@ -1,94 +1,491 @@
@ECHO OFF
REM GRNTSTA.BAT
REM Automated GRANT baseline test for MARS NWE.
REM Automated GRANT comparison test for MARS NWE.
REM
REM Run as SUPERVISOR or a user with Access Control on F:\GRNTEST.
REM Uses \NPUBLIC\GRANT as Novell baseline for currently implemented tool behavior.
REM Direct mode:
REM OUT = Novell baseline using \NPUBLIC\GRANT
REM PUBOUT = our implementation using \PUBLIC\GRANT
REM
REM Result tree:
REM F:\GRNTCMP
REM Test tree:
REM F:\GRNTEST
REM User-context mode:
REM GRANT is run as SUPERVISOR against NOPASSUSER.
REM DLYSTRT starts C:\GRNTTMP\GRNTC.BAT after this script exits.
REM GRNTC logs in as NOPASSUSER and captures effective RIGHTS output.
REM
REM Optional automatic user-context mode 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: GRNTSTA [PART2]
GOTO END
:PART1
F:
CD \
REM --- Clean generated test/result directories (contents only). ---
IF EXIST GRNTEST\NUL DELTREE /Y GRNTEST\*.*
IF EXIST GRNTCMP\NUL DELTREE /Y GRNTCMP\*.*
REM --- Clean generated test/result directories. ---
IF EXIST GRNTEST\*.* DELTREE /Y GRNTEST
IF EXIST GRNTCMP\*.* DELTREE /Y GRNTCMP
IF EXIST C:\GRNTTMP\*.* DELTREE /Y C:\GRNTTMP
IF NOT EXIST GRNTEST\NUL MD GRNTEST
IF NOT EXIST GRNTEST\ONE\NUL MD GRNTEST\ONE
IF NOT EXIST GRNTEST\TREE\NUL MD GRNTEST\TREE
IF NOT EXIST GRNTEST\TREE\SUB1\NUL MD GRNTEST\TREE\SUB1
IF NOT EXIST GRNTEST\TREE\SUB2\NUL MD GRNTEST\TREE\SUB2
IF NOT EXIST GRNTCMP\NUL MD GRNTCMP
IF NOT EXIST GRNTCMP\OUT\NUL MD GRNTCMP\OUT
IF NOT EXIST GRNTEST MD GRNTEST
IF NOT EXIST GRNTCMP MD GRNTCMP
IF NOT EXIST GRNTCMP\OUT MD GRNTCMP\OUT
IF NOT EXIST GRNTCMP\PUBOUT MD GRNTCMP\PUBOUT
IF NOT EXIST GRNTCMP\SETUP MD GRNTCMP\SETUP
IF NOT EXIST C:\GRNTTMP MD C:\GRNTTMP
IF NOT EXIST C:\GRNTTMP\UNOV MD C:\GRNTTMP\UNOV
IF NOT EXIST C:\GRNTTMP\UPUB MD C:\GRNTTMP\UPUB
IF NOT EXIST C:\GRNTTMP\USETUP MD C:\GRNTTMP\USETUP
ECHO GRANT ROOT FILE > F:\GRNTEST\ROOT.TXT
ECHO GRANT ONE FILE > F:\GRNTEST\ONE\ONE.TXT
ECHO GRANT TREE FILE > F:\GRNTEST\TREE\TROOT.TXT
ECHO GRANT SUB1 FILE > F:\GRNTEST\TREE\SUB1\SUB1.TXT
ECHO GRANT SUB2 FILE > F:\GRNTEST\TREE\SUB2\SUB2.TXT
ECHO GRNTSTA GRANT baseline test > F:\GRNTCMP\RUN.LOG
ECHO Run this as SUPERVISOR or equivalent. >> F:\GRNTCMP\RUN.LOG
ECHO Captures \NPUBLIC\GRANT output against user MARIO. >> F:\GRNTCMP\RUN.LOG
ECHO GRNTSTA GRANT comparison test > F:\GRNTCMP\RUN.LOG
ECHO OUT = Novell baseline with \NPUBLIC\GRANT >> F:\GRNTCMP\RUN.LOG
ECHO PUBOUT = our implementation with \PUBLIC\GRANT >> F:\GRNTCMP\RUN.LOG
ECHO User-context target: NOPASSUSER >> F:\GRNTCMP\RUN.LOG
ECHO. >> F:\GRNTCMP\RUN.LOG
ECHO === D01 usage/help === >> F:\GRNTCMP\RUN.LOG
ECHO Starting D01_HELP...
\NPUBLIC\GRANT /? > F:\GRNTCMP\OUT\D01_HELP.OUT
\PUBLIC\GRANT /? > F:\GRNTCMP\PUBOUT\D01_HELP.OUT
ECHO Starting D02_NOAR...
\NPUBLIC\GRANT > F:\GRNTCMP\OUT\D02_NOAR.OUT
\PUBLIC\GRANT > F:\GRNTCMP\PUBOUT\D02_NOAR.OUT
ECHO === D02 no arguments === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT > F:\GRNTCMP\OUT\D02_NOARGS.OUT
REM --- Setup matrix directories/files. ---
IF NOT EXIST GRNTEST\G10 MD GRNTEST\G10
ECHO G10_R > F:\GRNTEST\G10\TEST.TXT
IF NOT EXIST GRNTEST\G11 MD GRNTEST\G11
ECHO G11_W > F:\GRNTEST\G11\TEST.TXT
IF NOT EXIST GRNTEST\G12 MD GRNTEST\G12
ECHO G12_C > F:\GRNTEST\G12\TEST.TXT
IF NOT EXIST GRNTEST\G13 MD GRNTEST\G13
ECHO G13_E > F:\GRNTEST\G13\TEST.TXT
IF NOT EXIST GRNTEST\G14 MD GRNTEST\G14
ECHO G14_M > F:\GRNTEST\G14\TEST.TXT
IF NOT EXIST GRNTEST\G15 MD GRNTEST\G15
ECHO G15_F > F:\GRNTEST\G15\TEST.TXT
IF NOT EXIST GRNTEST\G16 MD GRNTEST\G16
ECHO G16_A > F:\GRNTEST\G16\TEST.TXT
IF NOT EXIST GRNTEST\G17 MD GRNTEST\G17
ECHO G17_S > F:\GRNTEST\G17\TEST.TXT
IF NOT EXIST GRNTEST\G20 MD GRNTEST\G20
ECHO G20_RF > F:\GRNTEST\G20\TEST.TXT
IF NOT EXIST GRNTEST\G21 MD GRNTEST\G21
ECHO G21_RW > F:\GRNTEST\G21\TEST.TXT
IF NOT EXIST GRNTEST\G22 MD GRNTEST\G22
ECHO G22_RWC > F:\GRNTEST\G22\TEST.TXT
IF NOT EXIST GRNTEST\G23 MD GRNTEST\G23
ECHO G23_RWCE > F:\GRNTEST\G23\TEST.TXT
IF NOT EXIST GRNTEST\G24 MD GRNTEST\G24
ECHO G24_RAL > F:\GRNTEST\G24\TEST.TXT
IF NOT EXIST GRNTEST\G25 MD GRNTEST\G25
ECHO G25_SAL > F:\GRNTEST\G25\TEST.TXT
IF NOT EXIST GRNTEST\G26 MD GRNTEST\G26
ECHO G26_ALL > F:\GRNTEST\G26\TEST.TXT
IF NOT EXIST GRNTEST\G27 MD GRNTEST\G27
ECHO G27_N > F:\GRNTEST\G27\TEST.TXT
IF NOT EXIST GRNTEST\G30 MD GRNTEST\G30
ECHO G30_RE > F:\GRNTEST\G30\TEST.TXT
IF NOT EXIST GRNTEST\G31 MD GRNTEST\G31
ECHO G31_RWF > F:\GRNTEST\G31\TEST.TXT
IF NOT EXIST GRNTEST\G32 MD GRNTEST\G32
ECHO G32_RCM > F:\GRNTEST\G32\TEST.TXT
IF NOT EXIST GRNTEST\G33 MD GRNTEST\G33
ECHO G33_RFA > F:\GRNTEST\G33\TEST.TXT
IF NOT EXIST GRNTEST\G34 MD GRNTEST\G34
ECHO G34_WCM > F:\GRNTEST\G34\TEST.TXT
IF NOT EXIST GRNTEST\G35 MD GRNTEST\G35
ECHO G35_EMF > F:\GRNTEST\G35\TEST.TXT
IF NOT EXIST GRNTEST\G36 MD GRNTEST\G36
ECHO G36_RMF > F:\GRNTEST\G36\TEST.TXT
IF NOT EXIST GRNTEST\G37 MD GRNTEST\G37
ECHO G37_REMA > F:\GRNTEST\G37\TEST.TXT
IF NOT EXIST GRNTEST\G38 MD GRNTEST\G38
ECHO G38_SR > F:\GRNTEST\G38\TEST.TXT
IF NOT EXIST GRNTEST\G39 MD GRNTEST\G39
ECHO G39_SRF > F:\GRNTEST\G39\TEST.TXT
IF NOT EXIST GRNTEST\G40 MD GRNTEST\G40
ECHO G40_SWCM > F:\GRNTEST\G40\TEST.TXT
IF NOT EXIST GRNTEST\F10 MD GRNTEST\F10
ECHO F10_R > F:\GRNTEST\F10\T.TXT
IF NOT EXIST GRNTEST\F11 MD GRNTEST\F11
ECHO F11_RF > F:\GRNTEST\F11\T.TXT
IF NOT EXIST GRNTEST\F12 MD GRNTEST\F12
ECHO F12_RAL > F:\GRNTEST\F12\T.TXT
IF NOT EXIST GRNTEST\F13 MD GRNTEST\F13
ECHO F13_ALL > F:\GRNTEST\F13\T.TXT
IF NOT EXIST GRNTEST\F14 MD GRNTEST\F14
ECHO F14_N > F:\GRNTEST\F14\T.TXT
IF NOT EXIST GRNTEST\F15 MD GRNTEST\F15
ECHO F15_S > F:\GRNTEST\F15\T.TXT
IF NOT EXIST GRNTEST\F16 MD GRNTEST\F16
ECHO F16_SAL > F:\GRNTEST\F16\T.TXT
IF NOT EXIST GRNTEST\S10 MD GRNTEST\S10
IF NOT EXIST GRNTEST\S10\S1 MD GRNTEST\S10\S1
IF NOT EXIST GRNTEST\S10\S2 MD GRNTEST\S10\S2
ECHO S10_R > F:\GRNTEST\S10\S1\T.TXT
IF NOT EXIST GRNTEST\S11 MD GRNTEST\S11
IF NOT EXIST GRNTEST\S11\S1 MD GRNTEST\S11\S1
IF NOT EXIST GRNTEST\S11\S2 MD GRNTEST\S11\S2
ECHO S11_RWC > F:\GRNTEST\S11\S1\T.TXT
IF NOT EXIST GRNTEST\S12 MD GRNTEST\S12
IF NOT EXIST GRNTEST\S12\S1 MD GRNTEST\S12\S1
IF NOT EXIST GRNTEST\S12\S2 MD GRNTEST\S12\S2
ECHO S12_ALL > F:\GRNTEST\S12\S1\T.TXT
ECHO === D10 grant R F on directory === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\GRNTEST\ONE TO USER MARIO > F:\GRNTCMP\OUT\D10_DIR_RF.OUT
REM --- Direct GRANT output compare and leave PUBLIC state for user-context readback. ---
ECHO Starting G10_R directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G10 > F:\GRNTCMP\SETUP\G10_RNREM.OUT
\NPUBLIC\GRANT R FOR F:\GRNTEST\G10 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G10_R.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G10 > F:\GRNTCMP\SETUP\G10_RPREM.OUT
\PUBLIC\GRANT R FOR F:\GRNTEST\G10 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G10_R.OUT
ECHO Starting G11_W directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G11 > F:\GRNTCMP\SETUP\G11_WNREM.OUT
\NPUBLIC\GRANT W FOR F:\GRNTEST\G11 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G11_W.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G11 > F:\GRNTCMP\SETUP\G11_WPREM.OUT
\PUBLIC\GRANT W FOR F:\GRNTEST\G11 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G11_W.OUT
ECHO Starting G12_C directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G12 > F:\GRNTCMP\SETUP\G12_CNREM.OUT
\NPUBLIC\GRANT C FOR F:\GRNTEST\G12 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G12_C.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G12 > F:\GRNTCMP\SETUP\G12_CPREM.OUT
\PUBLIC\GRANT C FOR F:\GRNTEST\G12 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G12_C.OUT
ECHO Starting G13_E directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G13 > F:\GRNTCMP\SETUP\G13_ENREM.OUT
\NPUBLIC\GRANT E FOR F:\GRNTEST\G13 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G13_E.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G13 > F:\GRNTCMP\SETUP\G13_EPREM.OUT
\PUBLIC\GRANT E FOR F:\GRNTEST\G13 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G13_E.OUT
ECHO Starting G14_M directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G14 > F:\GRNTCMP\SETUP\G14_MNREM.OUT
\NPUBLIC\GRANT M FOR F:\GRNTEST\G14 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G14_M.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G14 > F:\GRNTCMP\SETUP\G14_MPREM.OUT
\PUBLIC\GRANT M FOR F:\GRNTEST\G14 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G14_M.OUT
ECHO Starting G15_F directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G15 > F:\GRNTCMP\SETUP\G15_FNREM.OUT
\NPUBLIC\GRANT F FOR F:\GRNTEST\G15 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G15_F.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G15 > F:\GRNTCMP\SETUP\G15_FPREM.OUT
\PUBLIC\GRANT F FOR F:\GRNTEST\G15 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G15_F.OUT
ECHO Starting G16_A directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G16 > F:\GRNTCMP\SETUP\G16_ANREM.OUT
\NPUBLIC\GRANT A FOR F:\GRNTEST\G16 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G16_A.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G16 > F:\GRNTCMP\SETUP\G16_APREM.OUT
\PUBLIC\GRANT A FOR F:\GRNTEST\G16 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G16_A.OUT
ECHO Starting G17_S directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G17 > F:\GRNTCMP\SETUP\G17_SNREM.OUT
\NPUBLIC\GRANT S FOR F:\GRNTEST\G17 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G17_S.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G17 > F:\GRNTCMP\SETUP\G17_SPREM.OUT
\PUBLIC\GRANT S FOR F:\GRNTEST\G17 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G17_S.OUT
ECHO Starting G20_RF directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G20 > F:\GRNTCMP\SETUP\G20_RFNREM.OUT
\NPUBLIC\GRANT R F FOR F:\GRNTEST\G20 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G20_RF.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G20 > F:\GRNTCMP\SETUP\G20_RFPREM.OUT
\PUBLIC\GRANT R F FOR F:\GRNTEST\G20 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G20_RF.OUT
ECHO Starting G21_RW directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G21 > F:\GRNTCMP\SETUP\G21_RWNREM.OUT
\NPUBLIC\GRANT R W FOR F:\GRNTEST\G21 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G21_RW.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G21 > F:\GRNTCMP\SETUP\G21_RWPREM.OUT
\PUBLIC\GRANT R W FOR F:\GRNTEST\G21 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G21_RW.OUT
ECHO Starting G22_RWC directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G22 > F:\GRNTCMP\SETUP\G22_RWCNREM.OUT
\NPUBLIC\GRANT R W C FOR F:\GRNTEST\G22 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G22_RWC.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G22 > F:\GRNTCMP\SETUP\G22_RWCPREM.OUT
\PUBLIC\GRANT R W C FOR F:\GRNTEST\G22 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G22_RWC.OUT
ECHO Starting G23_RWCE directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G23 > F:\GRNTCMP\SETUP\G23_RWCENREM.OUT
\NPUBLIC\GRANT R W C E FOR F:\GRNTEST\G23 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G23_RWCE.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G23 > F:\GRNTCMP\SETUP\G23_RWCEPREM.OUT
\PUBLIC\GRANT R W C E FOR F:\GRNTEST\G23 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G23_RWCE.OUT
ECHO Starting G24_RAL directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G24 > F:\GRNTCMP\SETUP\G24_RALNREM.OUT
\NPUBLIC\GRANT R W C E M F A FOR F:\GRNTEST\G24 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G24_RAL.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G24 > F:\GRNTCMP\SETUP\G24_RALPREM.OUT
\PUBLIC\GRANT R W C E M F A FOR F:\GRNTEST\G24 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G24_RAL.OUT
ECHO Starting G25_SAL directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G25 > F:\GRNTCMP\SETUP\G25_SALNREM.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\GRNTEST\G25 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G25_SAL.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G25 > F:\GRNTCMP\SETUP\G25_SALPREM.OUT
\PUBLIC\GRANT S R W C E M F A FOR F:\GRNTEST\G25 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G25_SAL.OUT
ECHO Starting G26_ALL directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G26 > F:\GRNTCMP\SETUP\G26_ALLNREM.OUT
\NPUBLIC\GRANT ALL FOR F:\GRNTEST\G26 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G26_ALL.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G26 > F:\GRNTCMP\SETUP\G26_ALLPREM.OUT
\PUBLIC\GRANT ALL FOR F:\GRNTEST\G26 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G26_ALL.OUT
ECHO Starting G27_N directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G27 > F:\GRNTCMP\SETUP\G27_NNREM.OUT
\NPUBLIC\GRANT N FOR F:\GRNTEST\G27 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G27_N.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G27 > F:\GRNTCMP\SETUP\G27_NPREM.OUT
\PUBLIC\GRANT N FOR F:\GRNTEST\G27 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G27_N.OUT
ECHO Starting G30_RE directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G30 > F:\GRNTCMP\SETUP\G30_RENREM.OUT
\NPUBLIC\GRANT R E FOR F:\GRNTEST\G30 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G30_RE.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G30 > F:\GRNTCMP\SETUP\G30_REPREM.OUT
\PUBLIC\GRANT R E FOR F:\GRNTEST\G30 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G30_RE.OUT
ECHO Starting G31_RWF directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G31 > F:\GRNTCMP\SETUP\G31_RWFNREM.OUT
\NPUBLIC\GRANT R W F FOR F:\GRNTEST\G31 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G31_RWF.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G31 > F:\GRNTCMP\SETUP\G31_RWFPREM.OUT
\PUBLIC\GRANT R W F FOR F:\GRNTEST\G31 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G31_RWF.OUT
ECHO Starting G32_RCM directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G32 > F:\GRNTCMP\SETUP\G32_RCMNREM.OUT
\NPUBLIC\GRANT R C M FOR F:\GRNTEST\G32 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G32_RCM.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G32 > F:\GRNTCMP\SETUP\G32_RCMPREM.OUT
\PUBLIC\GRANT R C M FOR F:\GRNTEST\G32 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G32_RCM.OUT
ECHO Starting G33_RFA directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G33 > F:\GRNTCMP\SETUP\G33_RFANREM.OUT
\NPUBLIC\GRANT R F A FOR F:\GRNTEST\G33 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G33_RFA.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G33 > F:\GRNTCMP\SETUP\G33_RFAPREM.OUT
\PUBLIC\GRANT R F A FOR F:\GRNTEST\G33 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G33_RFA.OUT
ECHO Starting G34_WCM directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G34 > F:\GRNTCMP\SETUP\G34_WCMNREM.OUT
\NPUBLIC\GRANT W C M FOR F:\GRNTEST\G34 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G34_WCM.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G34 > F:\GRNTCMP\SETUP\G34_WCMPREM.OUT
\PUBLIC\GRANT W C M FOR F:\GRNTEST\G34 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G34_WCM.OUT
ECHO Starting G35_EMF directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G35 > F:\GRNTCMP\SETUP\G35_EMFNREM.OUT
\NPUBLIC\GRANT E M F FOR F:\GRNTEST\G35 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G35_EMF.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G35 > F:\GRNTCMP\SETUP\G35_EMFPREM.OUT
\PUBLIC\GRANT E M F FOR F:\GRNTEST\G35 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G35_EMF.OUT
ECHO Starting G36_RMF directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G36 > F:\GRNTCMP\SETUP\G36_RMFNREM.OUT
\NPUBLIC\GRANT R W C M F FOR F:\GRNTEST\G36 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G36_RMF.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G36 > F:\GRNTCMP\SETUP\G36_RMFPREM.OUT
\PUBLIC\GRANT R W C M F FOR F:\GRNTEST\G36 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G36_RMF.OUT
ECHO Starting G37_REMA directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G37 > F:\GRNTCMP\SETUP\G37_REMANREM.OUT
\NPUBLIC\GRANT R E M A FOR F:\GRNTEST\G37 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G37_REMA.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G37 > F:\GRNTCMP\SETUP\G37_REMAPREM.OUT
\PUBLIC\GRANT R E M A FOR F:\GRNTEST\G37 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G37_REMA.OUT
ECHO Starting G38_SR directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G38 > F:\GRNTCMP\SETUP\G38_SRNREM.OUT
\NPUBLIC\GRANT S R FOR F:\GRNTEST\G38 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G38_SR.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G38 > F:\GRNTCMP\SETUP\G38_SRPREM.OUT
\PUBLIC\GRANT S R FOR F:\GRNTEST\G38 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G38_SR.OUT
ECHO Starting G39_SRF directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G39 > F:\GRNTCMP\SETUP\G39_SRFNREM.OUT
\NPUBLIC\GRANT S R F FOR F:\GRNTEST\G39 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G39_SRF.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G39 > F:\GRNTCMP\SETUP\G39_SRFPREM.OUT
\PUBLIC\GRANT S R F FOR F:\GRNTEST\G39 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G39_SRF.OUT
ECHO Starting G40_SWCM directory grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G40 > F:\GRNTCMP\SETUP\G40_SWCMNREM.OUT
\NPUBLIC\GRANT S W C M FOR F:\GRNTEST\G40 TO USER NOPASSUSER > F:\GRNTCMP\OUT\G40_SWCM.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\G40 > F:\GRNTCMP\SETUP\G40_SWCMPREM.OUT
\PUBLIC\GRANT S W C M FOR F:\GRNTEST\G40 TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\G40_SWCM.OUT
ECHO Starting F10_R file grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F10\T.TXT /FILES > F:\GRNTCMP\SETUP\F10_RNREM.OUT
\NPUBLIC\GRANT R FOR F:\GRNTEST\F10\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\OUT\F10_R.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F10\T.TXT /FILES > F:\GRNTCMP\SETUP\F10_RPREM.OUT
\PUBLIC\GRANT R FOR F:\GRNTEST\F10\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\PUBOUT\F10_R.OUT
ECHO Starting F11_RF file grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F11\T.TXT /FILES > F:\GRNTCMP\SETUP\F11_RFNREM.OUT
\NPUBLIC\GRANT R F FOR F:\GRNTEST\F11\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\OUT\F11_RF.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F11\T.TXT /FILES > F:\GRNTCMP\SETUP\F11_RFPREM.OUT
\PUBLIC\GRANT R F FOR F:\GRNTEST\F11\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\PUBOUT\F11_RF.OUT
ECHO Starting F12_RAL file grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F12\T.TXT /FILES > F:\GRNTCMP\SETUP\F12_RALNREM.OUT
\NPUBLIC\GRANT R W C E M F A FOR F:\GRNTEST\F12\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\OUT\F12_RAL.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F12\T.TXT /FILES > F:\GRNTCMP\SETUP\F12_RALPREM.OUT
\PUBLIC\GRANT R W C E M F A FOR F:\GRNTEST\F12\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\PUBOUT\F12_RAL.OUT
ECHO Starting F13_ALL file grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F13\T.TXT /FILES > F:\GRNTCMP\SETUP\F13_ALLNREM.OUT
\NPUBLIC\GRANT ALL FOR F:\GRNTEST\F13\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\OUT\F13_ALL.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F13\T.TXT /FILES > F:\GRNTCMP\SETUP\F13_ALLPREM.OUT
\PUBLIC\GRANT ALL FOR F:\GRNTEST\F13\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\PUBOUT\F13_ALL.OUT
ECHO Starting F14_N file grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F14\T.TXT /FILES > F:\GRNTCMP\SETUP\F14_NNREM.OUT
\NPUBLIC\GRANT N FOR F:\GRNTEST\F14\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\OUT\F14_N.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F14\T.TXT /FILES > F:\GRNTCMP\SETUP\F14_NPREM.OUT
\PUBLIC\GRANT N FOR F:\GRNTEST\F14\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\PUBOUT\F14_N.OUT
ECHO Starting F15_S file grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F15\T.TXT /FILES > F:\GRNTCMP\SETUP\F15_SNREM.OUT
\NPUBLIC\GRANT S FOR F:\GRNTEST\F15\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\OUT\F15_S.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F15\T.TXT /FILES > F:\GRNTCMP\SETUP\F15_SPREM.OUT
\PUBLIC\GRANT S FOR F:\GRNTEST\F15\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\PUBOUT\F15_S.OUT
ECHO Starting F16_SAL file grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F16\T.TXT /FILES > F:\GRNTCMP\SETUP\F16_SALNREM.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\GRNTEST\F16\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\OUT\F16_SAL.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\F16\T.TXT /FILES > F:\GRNTCMP\SETUP\F16_SALPREM.OUT
\PUBLIC\GRANT S R W C E M F A FOR F:\GRNTEST\F16\T.TXT TO USER NOPASSUSER /FILES > F:\GRNTCMP\PUBOUT\F16_SAL.OUT
ECHO Starting S10_R subdir grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\S10 /SUBDIRS > F:\GRNTCMP\SETUP\S10_RNREM.OUT
\NPUBLIC\GRANT R FOR F:\GRNTEST\S10 TO USER NOPASSUSER /SUBDIRECTORIES > F:\GRNTCMP\OUT\S10_R.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\S10 /SUBDIRS > F:\GRNTCMP\SETUP\S10_RPREM.OUT
\PUBLIC\GRANT R FOR F:\GRNTEST\S10 TO USER NOPASSUSER /SUBDIRECTORIES > F:\GRNTCMP\PUBOUT\S10_R.OUT
ECHO Starting S11_RWC subdir grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\S11 /SUBDIRS > F:\GRNTCMP\SETUP\S11_RWCNREM.OUT
\NPUBLIC\GRANT R W C FOR F:\GRNTEST\S11 TO USER NOPASSUSER /SUBDIRECTORIES > F:\GRNTCMP\OUT\S11_RWC.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\S11 /SUBDIRS > F:\GRNTCMP\SETUP\S11_RWCPREM.OUT
\PUBLIC\GRANT R W C FOR F:\GRNTEST\S11 TO USER NOPASSUSER /SUBDIRECTORIES > F:\GRNTCMP\PUBOUT\S11_RWC.OUT
ECHO Starting S12_ALL subdir grant...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\S12 /SUBDIRS > F:\GRNTCMP\SETUP\S12_ALLNREM.OUT
\NPUBLIC\GRANT ALL FOR F:\GRNTEST\S12 TO USER NOPASSUSER /SUBDIRECTORIES > F:\GRNTCMP\OUT\S12_ALL.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\GRNTEST\S12 /SUBDIRS > F:\GRNTCMP\SETUP\S12_ALLPREM.OUT
\PUBLIC\GRANT ALL FOR F:\GRNTEST\S12 TO USER NOPASSUSER /SUBDIRECTORIES > F:\GRNTCMP\PUBOUT\S12_ALL.OUT
ECHO === D11 grant R W C E M F A on directory === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT R W C E M F A FOR F:\GRNTEST\ONE TO USER MARIO > F:\GRNTCMP\OUT\D11_DIR_ALL_LETTERS.OUT
ECHO Starting D90_BADR...
\NPUBLIC\GRANT BADRIGHT FOR F:\GRNTEST TO USER NOPASSUSER > F:\GRNTCMP\OUT\D90_BADR.OUT
\PUBLIC\GRANT BADRIGHT FOR F:\GRNTEST TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\D90_BADR.OUT
ECHO Starting D91_MISU...
\NPUBLIC\GRANT R F FOR F:\GRNTEST TO USER NO_SUCH_USER > F:\GRNTCMP\OUT\D91_MISU.OUT
\PUBLIC\GRANT R F FOR F:\GRNTEST TO USER NO_SUCH_USER > F:\GRNTCMP\PUBOUT\D91_MISU.OUT
ECHO Starting D92_MISP...
\NPUBLIC\GRANT R F FOR F:\GRNTEST\MISSING TO USER NOPASSUSER > F:\GRNTCMP\OUT\D92_MISP.OUT
\PUBLIC\GRANT R F FOR F:\GRNTEST\MISSING TO USER NOPASSUSER > F:\GRNTCMP\PUBOUT\D92_MISP.OUT
ECHO Starting D93_GRAM...
\NPUBLIC\GRANT R F FOR F:\GRNTEST NOPASSUSER > F:\GRNTCMP\OUT\D93_GRAM.OUT
\PUBLIC\GRANT R F FOR F:\GRNTEST NOPASSUSER > F:\GRNTCMP\PUBOUT\D93_GRAM.OUT
ECHO === D12 grant ALL alias on root directory === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT ALL FOR F:\GRNTEST TO USER MARIO > F:\GRNTCMP\OUT\D12_DIR_ALL_ALIAS.OUT
ECHO === COMPARE NOVELL OUT AGAINST PUBLIC OUT === > F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\D01_HELP.OUT F:\GRNTCMP\PUBOUT\D01_HELP.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\D02_NOAR.OUT F:\GRNTCMP\PUBOUT\D02_NOAR.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G10_R.OUT F:\GRNTCMP\PUBOUT\G10_R.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G11_W.OUT F:\GRNTCMP\PUBOUT\G11_W.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G12_C.OUT F:\GRNTCMP\PUBOUT\G12_C.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G13_E.OUT F:\GRNTCMP\PUBOUT\G13_E.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G14_M.OUT F:\GRNTCMP\PUBOUT\G14_M.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G15_F.OUT F:\GRNTCMP\PUBOUT\G15_F.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G16_A.OUT F:\GRNTCMP\PUBOUT\G16_A.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G17_S.OUT F:\GRNTCMP\PUBOUT\G17_S.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G20_RF.OUT F:\GRNTCMP\PUBOUT\G20_RF.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G21_RW.OUT F:\GRNTCMP\PUBOUT\G21_RW.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G22_RWC.OUT F:\GRNTCMP\PUBOUT\G22_RWC.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G23_RWCE.OUT F:\GRNTCMP\PUBOUT\G23_RWCE.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G24_RAL.OUT F:\GRNTCMP\PUBOUT\G24_RAL.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G25_SAL.OUT F:\GRNTCMP\PUBOUT\G25_SAL.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G26_ALL.OUT F:\GRNTCMP\PUBOUT\G26_ALL.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G27_N.OUT F:\GRNTCMP\PUBOUT\G27_N.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G30_RE.OUT F:\GRNTCMP\PUBOUT\G30_RE.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G31_RWF.OUT F:\GRNTCMP\PUBOUT\G31_RWF.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G32_RCM.OUT F:\GRNTCMP\PUBOUT\G32_RCM.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G33_RFA.OUT F:\GRNTCMP\PUBOUT\G33_RFA.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G34_WCM.OUT F:\GRNTCMP\PUBOUT\G34_WCM.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G35_EMF.OUT F:\GRNTCMP\PUBOUT\G35_EMF.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G36_RMF.OUT F:\GRNTCMP\PUBOUT\G36_RMF.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G37_REMA.OUT F:\GRNTCMP\PUBOUT\G37_REMA.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G38_SR.OUT F:\GRNTCMP\PUBOUT\G38_SR.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G39_SRF.OUT F:\GRNTCMP\PUBOUT\G39_SRF.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\G40_SWCM.OUT F:\GRNTCMP\PUBOUT\G40_SWCM.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\F10_R.OUT F:\GRNTCMP\PUBOUT\F10_R.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\F11_RF.OUT F:\GRNTCMP\PUBOUT\F11_RF.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\F12_RAL.OUT F:\GRNTCMP\PUBOUT\F12_RAL.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\F13_ALL.OUT F:\GRNTCMP\PUBOUT\F13_ALL.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\F14_N.OUT F:\GRNTCMP\PUBOUT\F14_N.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\F15_S.OUT F:\GRNTCMP\PUBOUT\F15_S.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\F16_SAL.OUT F:\GRNTCMP\PUBOUT\F16_SAL.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\S10_R.OUT F:\GRNTCMP\PUBOUT\S10_R.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\S11_RWC.OUT F:\GRNTCMP\PUBOUT\S11_RWC.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\S12_ALL.OUT F:\GRNTCMP\PUBOUT\S12_ALL.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\D90_BADR.OUT F:\GRNTCMP\PUBOUT\D90_BADR.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\D91_MISU.OUT F:\GRNTCMP\PUBOUT\D91_MISU.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\D92_MISP.OUT F:\GRNTCMP\PUBOUT\D92_MISP.OUT >> F:\GRNTCMP\COMPARE.LOG
FC F:\GRNTCMP\OUT\D93_GRAM.OUT F:\GRNTCMP\PUBOUT\D93_GRAM.OUT >> F:\GRNTCMP\COMPARE.LOG
ECHO === D13 grant N / no rights on directory === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT N FOR F:\GRNTEST\ONE TO USER MARIO > F:\GRNTCMP\OUT\D13_DIR_N.OUT
IF "%LGNTPWD%"=="" GOTO NOUSER
IF NOT EXIST \PUBLIC\DLYSTRT.EXE GOTO NODLY
ECHO === D20 grant R F recursively to subdirectories === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\GRNTEST\TREE TO USER MARIO /SUBDIRECTORIES > F:\GRNTCMP\OUT\D20_SUBDIRS_RF.OUT
COPY \PUBLIC\DLYSTRT.EXE C:\GRNTTMP > NUL
COPY F:\GRNTC.BAT C:\GRNTTMP\GRNTC.BAT > NUL
C:
CD \GRNTTMP
DLYSTRT /T:2 GRNTC.BAT
GOTO STARTED
ECHO === D21 grant R F on one file using /FILES === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\GRNTEST\ONE\ONE.TXT TO USER MARIO /FILES > F:\GRNTCMP\OUT\D21_FILE_RF.OUT
:NOUSER
ECHO LGNTPWD is not set. User-context part skipped. >> F:\GRNTCMP\RUN.LOG
ECHO.
ECHO LGNTPWD ist nicht gesetzt. User-context part skipped.
ECHO Fuer User-Kontext zuerst setzen:
ECHO SET LGNTPWD=dein-supervisor-passwort
GOTO SUMMARY
ECHO === D30 relative path from F:\GRNTEST === >> F:\GRNTCMP\RUN.LOG
CD \GRNTEST
\NPUBLIC\GRANT R F FOR ONE TO USER MARIO > F:\GRNTCMP\OUT\D30_REL_DIR_RF.OUT
:NODLY
ECHO \PUBLIC\DLYSTRT.EXE not found. User-context part skipped. >> F:\GRNTCMP\RUN.LOG
ECHO.
ECHO \PUBLIC\DLYSTRT.EXE nicht gefunden. User-context part skipped.
GOTO SUMMARY
:STARTED
ECHO GRNTC queued via DLYSTRT. >> F:\GRNTCMP\RUN.LOG
ECHO.
ECHO GRNTC wurde via DLYSTRT gestartet.
ECHO Nach automatischem Re-Login wird GRNTSTA PART2 gestartet.
GOTO END
:SUMMARY
ECHO === SUMMARY === > F:\GRNTCMP\SUMMARY.TXT
ECHO GRNTSTA GRANT direct comparison finished. >> F:\GRNTCMP\SUMMARY.TXT
ECHO User-context part was skipped. >> F:\GRNTCMP\SUMMARY.TXT
ECHO Optional: GRNTZIP ausfuehren. >> F:\GRNTCMP\SUMMARY.TXT
ECHO GRNTSTA direct part finished.
ECHO Optional: GRNTZIP ausfuehren.
GOTO END
:PART2
F:
CD \
IF NOT EXIST GRNTCMP MD GRNTCMP
IF NOT EXIST GRNTCMP\UNOV MD GRNTCMP\UNOV
IF NOT EXIST GRNTCMP\UPUB MD GRNTCMP\UPUB
IF NOT EXIST GRNTCMP\USETUP MD GRNTCMP\USETUP
ECHO === D90 invalid right === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT BADRIGHT FOR F:\GRNTEST TO USER MARIO > F:\GRNTCMP\OUT\D90_BAD_RIGHT.OUT
COPY C:\GRNTTMP\UNOV\*.OUT F:\GRNTCMP\UNOV > NUL
COPY C:\GRNTTMP\UPUB\*.OUT F:\GRNTCMP\UPUB > NUL
COPY C:\GRNTTMP\USETUP\*.OUT F:\GRNTCMP\USETUP > NUL
IF EXIST C:\GRNTTMP\HELPER.TXT COPY C:\GRNTTMP\HELPER.TXT F:\GRNTCMP\HELPER.TXT > NUL
IF EXIST C:\GRNTTMP\ULOG1.OUT COPY C:\GRNTTMP\ULOG1.OUT F:\GRNTCMP\ULOG1.OUT > NUL
IF EXIST C:\GRNTTMP\ULOGIN.OUT COPY C:\GRNTTMP\ULOGIN.OUT F:\GRNTCMP\ULOGIN.OUT > NUL
IF EXIST C:\GRNTTMP\ULOG2.OUT COPY C:\GRNTTMP\ULOG2.OUT F:\GRNTCMP\ULOG2.OUT > NUL
IF EXIST C:\GRNTTMP\ULGSUP.OUT COPY C:\GRNTTMP\ULGSUP.OUT F:\GRNTCMP\ULGSUP.OUT > NUL
ECHO === D91 missing user === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\GRNTEST TO USER NO_SUCH_USER > F:\GRNTCMP\OUT\D91_MISSING_USER.OUT
ECHO === D92 missing path === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\GRNTEST\MISSING TO USER MARIO > F:\GRNTCMP\OUT\D92_MISSING_PATH.OUT
ECHO === D93 bad grammar / missing TO === >> F:\GRNTCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\GRNTEST MARIO > F:\GRNTCMP\OUT\D93_BAD_GRAMMAR.OUT
ECHO === COMPARE NOPASSUSER NOVELL RIGHTS AGAINST PUBLIC RIGHTS === > F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G10_R.OUT F:\GRNTCMP\UPUB\G10_R.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G11_W.OUT F:\GRNTCMP\UPUB\G11_W.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G12_C.OUT F:\GRNTCMP\UPUB\G12_C.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G13_E.OUT F:\GRNTCMP\UPUB\G13_E.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G14_M.OUT F:\GRNTCMP\UPUB\G14_M.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G15_F.OUT F:\GRNTCMP\UPUB\G15_F.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G16_A.OUT F:\GRNTCMP\UPUB\G16_A.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G17_S.OUT F:\GRNTCMP\UPUB\G17_S.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G20_RF.OUT F:\GRNTCMP\UPUB\G20_RF.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G21_RW.OUT F:\GRNTCMP\UPUB\G21_RW.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G22_RWC.OUT F:\GRNTCMP\UPUB\G22_RWC.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G23_RWCE.OUT F:\GRNTCMP\UPUB\G23_RWCE.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G24_RAL.OUT F:\GRNTCMP\UPUB\G24_RAL.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G25_SAL.OUT F:\GRNTCMP\UPUB\G25_SAL.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G26_ALL.OUT F:\GRNTCMP\UPUB\G26_ALL.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G27_N.OUT F:\GRNTCMP\UPUB\G27_N.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G30_RE.OUT F:\GRNTCMP\UPUB\G30_RE.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G31_RWF.OUT F:\GRNTCMP\UPUB\G31_RWF.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G32_RCM.OUT F:\GRNTCMP\UPUB\G32_RCM.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G33_RFA.OUT F:\GRNTCMP\UPUB\G33_RFA.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G34_WCM.OUT F:\GRNTCMP\UPUB\G34_WCM.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G35_EMF.OUT F:\GRNTCMP\UPUB\G35_EMF.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G36_RMF.OUT F:\GRNTCMP\UPUB\G36_RMF.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G37_REMA.OUT F:\GRNTCMP\UPUB\G37_REMA.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G38_SR.OUT F:\GRNTCMP\UPUB\G38_SR.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G39_SRF.OUT F:\GRNTCMP\UPUB\G39_SRF.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\G40_SWCM.OUT F:\GRNTCMP\UPUB\G40_SWCM.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\F10_R.OUT F:\GRNTCMP\UPUB\F10_R.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\F11_RF.OUT F:\GRNTCMP\UPUB\F11_RF.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\F12_RAL.OUT F:\GRNTCMP\UPUB\F12_RAL.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\F13_ALL.OUT F:\GRNTCMP\UPUB\F13_ALL.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\F14_N.OUT F:\GRNTCMP\UPUB\F14_N.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\F15_S.OUT F:\GRNTCMP\UPUB\F15_S.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\F16_SAL.OUT F:\GRNTCMP\UPUB\F16_SAL.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\S10_R.OUT F:\GRNTCMP\UPUB\S10_R.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\S11_RWC.OUT F:\GRNTCMP\UPUB\S11_RWC.OUT >> F:\GRNTCMP\UCOMP.LOG
FC F:\GRNTCMP\UNOV\S12_ALL.OUT F:\GRNTCMP\UPUB\S12_ALL.OUT >> F:\GRNTCMP\UCOMP.LOG
ECHO === SUMMARY === > F:\GRNTCMP\SUMMARY.TXT
ECHO GRNTSTA GRANT baseline finished. >> F:\GRNTCMP\SUMMARY.TXT
ECHO GRNTSTA GRANT comparison finished. >> F:\GRNTCMP\SUMMARY.TXT
ECHO. >> F:\GRNTCMP\SUMMARY.TXT
ECHO Expected: >> F:\GRNTCMP\SUMMARY.TXT
ECHO - D10-D13 capture directory grant formatting and right aliases. >> F:\GRNTCMP\SUMMARY.TXT
ECHO - D20 captures /SUBDIRECTORIES behavior. >> F:\GRNTCMP\SUMMARY.TXT
ECHO - D21 captures /FILES behavior for a file path. >> F:\GRNTCMP\SUMMARY.TXT
ECHO - D30 captures relative path behavior with absolute \NPUBLIC\GRANT invocation. >> F:\GRNTCMP\SUMMARY.TXT
ECHO - D90-D93 capture error/grammar cases. >> F:\GRNTCMP\SUMMARY.TXT
ECHO Direct mode: OUT vs PUBOUT compares GRANT output. >> F:\GRNTCMP\SUMMARY.TXT
ECHO User mode: UNOV vs UPUB compares effective RIGHTS as NOPASSUSER. >> F:\GRNTCMP\SUMMARY.TXT
ECHO. >> F:\GRNTCMP\SUMMARY.TXT
ECHO Optional: GRNTZIP ausfuehren. >> F:\GRNTCMP\SUMMARY.TXT
ECHO GRNTSTA fertig.
ECHO Ergebnisse liegen in F:\GRNTCMP
ECHO GRNTSTA PART2 fertig.
ECHO Optional: GRNTZIP ausfuehren.
GOTO END
:END

View File

@@ -1,26 +1,26 @@
@ECHO OFF
REM GRNTZIP.BAT
REM Optional packer for GRNTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \GRNTCMP
IF EXIST GRNTSTA.ZIP DEL GRNTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating GRNTSTA.ZIP > ZIP.LOG
ZIP -r GRNTSTA.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 \GRNTEST\NUL DELTREE /Y \GRNTEST >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\GRNTCMP\GRNTSTA.ZIP
ECHO F:\GRNTCMP\ZIP.LOG
ECHO.
@ECHO OFF
REM GRNTZIP.BAT
REM Optional packer for GRNTSTA result files.
REM Requires ZIP.EXE in PATH or current directory.
F:
CD \GRNTCMP
IF EXIST GRNTSTA.ZIP DEL GRNTSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating GRNTSTA.ZIP > ZIP.LOG
ZIP -r GRNTSTA.ZIP RUN.LOG SUMMARY.TXT COMPARE.LOG UCOMP.LOG HELPER.TXT ULOG1.OUT ULOGIN.OUT ULOG2.OUT ULGSUP.OUT OUT PUBOUT SETUP UNOV UPUB 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 \GRNTEST\NUL DELTREE /Y \GRNTEST >> ZIP.LOG
IF EXIST C:\GRNTTMP\NUL DELTREE /Y C:\GRNTTMP >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.
ECHO Check:
ECHO F:\GRNTCMP\GRNTSTA.ZIP
ECHO F:\GRNTCMP\ZIP.LOG
ECHO.

View File

@@ -1,19 +1,42 @@
# GRANT baseline test
Scripts:
- `GRNTSTA.BAT` creates `F:\GRNTEST`, captures Novell `\NPUBLIC\GRANT` output into `F:\GRNTCMP\OUT`, and uses user `MARIO` as trustee target.
- `GRNTZIP.BAT` packages `RUN.LOG`, `SUMMARY.TXT`, and `OUT` as `F:\GRNTCMP\GRNTSTA.ZIP`.
Run as `SUPERVISOR` or an equivalent user with Access Control rights on `F:\GRNTEST`.
Covered cases:
- help and no-argument grammar
- directory grants with explicit rights, `ALL`, and `N`
- `/SUBDIRECTORIES`
- `/FILES` on an explicit file
- relative path invocation from inside the test directory while invoking `\NPUBLIC\GRANT` absolutely
- invalid right, missing user, missing path, and bad grammar
This test is still Novell-baseline-only. Later comparison scripts should run the same command set through `NPUBLIC` and `PUBLIC` with normalized output.
# GRANT comparison test
Scripts:
- `GRNTSTA.BAT` creates `F:\GRNTEST`, compares Novell `\NPUBLIC\GRANT`
output against `\PUBLIC\GRANT`, and uses `NOPASSUSER` as trustee target.
- `GRNTC.BAT` is the delayed user-context helper started through `DLYSTRT`.
It logs in as `NOPASSUSER` and captures effective `RIGHTS` output for the
grants prepared by `GRNTSTA`.
- `GRNTZIP.BAT` packages the result tree as `F:\GRNTCMP\GRNTSTA.ZIP`.
Run as `SUPERVISOR` or an equivalent user.
For the automatic user-context part, set the Supervisor password first:
```bat
SET LGNTPWD=your-supervisor-password
GRNTSTA
```
Result directories:
- `OUT` contains Novell `GRANT` output.
- `PUBOUT` contains public implementation `GRANT` output.
- `COMPARE.LOG` compares `OUT` against `PUBOUT`.
- `UNOV` contains Novell `RIGHTS` output captured as `NOPASSUSER`.
- `UPUB` contains public implementation `RIGHTS` output captured as `NOPASSUSER`.
- `UCOMP.LOG` compares `UNOV` against `UPUB`.
- `SETUP` and `USETUP` contain setup/cleanup command output.
Covered grant cases:
- single rights: `R`, `W`, `C`, `E`, `M`, `F`, `A`, `S`
- combinations: `R F`, `R W`, `R W C`, `R W C E`,
`R W C E M F A`, `S R W C E M F A`, `ALL`, `N`
- mixed combinations: `R E`, `R W F`, `R C M`, `R F A`,
`W C M`, `E M F`, `R W C M F`, `R E M A`, `S R`, `S R F`, `S W C M`
- file trustee cases with `/FILES`
- recursive directory cases with `/SUBDIRECTORIES`
- help, no-argument and error/grammar cases
`GRNTZIP` remains manual so the result tree can be inspected before packaging.

View File

@@ -1,46 +1,38 @@
# REMOVE baseline test
# REMOVE comparison test
`RMVSTA.BAT` captures Novell `\NPUBLIC\REMOVE` behavior for trustee removal.
`RMVSTA.BAT` compares Novell `\NPUBLIC\REMOVE` against the public implementation `\PUBLIC\REMOVE`.
Run as `SUPERVISOR` or a user with Access Control rights:
Run as `SUPERVISOR` or equivalent. The automatic NOPASSUSER readback needs the maintainer `LOGIN /PWD:` support and `DLYSTRT`:
```bat
SET LGNTPWD=your-supervisor-password
F:
CD \
RMVSTA
```
`RMVSTA` performs a direct comparison first:
```text
F:\RMVCMP\OUT Novell baseline with \NPUBLIC\REMOVE
F:\RMVCMP\PUBOUT public implementation with \PUBLIC\REMOVE
F:\RMVCMP\COMPARE.LOG
```
Then it starts `C:\RMVTMP\RMVC.BAT` through `DLYSTRT`. The helper logs in as `NOPASSUSER` and captures effective-rights readback after the public REMOVE operations:
```text
F:\RMVCMP\UNOV \NPUBLIC\RIGHTS as NOPASSUSER
F:\RMVCMP\UPUB \PUBLIC\RIGHTS as NOPASSUSER
F:\RMVCMP\UCOMP.LOG
```
The matrix covers single trustee rights, mixed rights, `S`, `ALL`, `N`, file trustees with `/FILES`, and recursive removal with `/SUBDIRS`.
`RMVZIP.BAT` is intentionally manual. Run it after inspecting the results:
```bat
RMVZIP
```
Result directory:
```text
F:\RMVCMP
```
Test directory:
```text
F:\RMVTEST
```
The setup uses `\NPUBLIC\GRANT` to create trustees for user `MARIO`, then runs `\NPUBLIC\REMOVE` for the baseline.
Note: Novell `REMOVE` help names the recursive option `/Subdirs`; this test uses `/SUBDIRS`, not `/SUBDIRECTORIES`.
Captured cases:
- `D01` help / usage
- `D02` no arguments
- `D10` remove `USER MARIO` from a directory
- `D11` remove `MARIO` without the explicit `USER` keyword
- `D20` `/SUBDIRS`
- `D21` `/FILES` on an explicit file
- `D22` `/FILES` on all files in a directory
- `D30` relative path from `F:\RMVTEST`
- `D90` no trustee
- `D91` missing user
- `D92` missing path
- `D93` `/FILES` and `/SUBDIRS` together
- `D94` bad grammar
`RMVZIP.BAT` packages `RUN.LOG`, `SUMMARY.TXT`, `OUT`, and `SETUP`, then removes the generated `F:\RMVTEST` tree so the SYS root does not accumulate test directories.
The ZIP step packages `OUT`, `PUBOUT`, `UNOV`, `UPUB`, setup logs, comparison logs, and then removes the generated `F:\RMVTEST` and `C:\RMVTMP` trees.

168
test/remove/RMVC.BAT Normal file
View File

@@ -0,0 +1,168 @@
@ECHO OFF
REM RMVC.BAT - delayed user-context REMOVE readback helper.
REM Started by RMVSTA via DLYSTRT. Runs from C:\RMVTMP.
C:
CD \RMVTMP
ECHO RMVC user-context REMOVE readback helper > HELPER.TXT
ECHO Current phase: logout supervisor, login NOPASSUSER. >> HELPER.TXT
LOGOUT > ULOG1.OUT
LOGIN NOPASSUSER > ULOGIN.OUT
F:
CD \
IF EXIST \NPUBLIC\RIGHTS.EXE GOTO HAVEF
ECHO F: not ready after NOPASSUSER login. >> C:\RMVTMP\HELPER.TXT
GOTO RELSUP
:HAVEF
ECHO Starting G10_R as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G10 > C:\RMVTMP\UNOV\G10_R.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G10 > C:\RMVTMP\UPUB\G10_R.OUT
ECHO Starting G11_W as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G11 > C:\RMVTMP\UNOV\G11_W.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G11 > C:\RMVTMP\UPUB\G11_W.OUT
ECHO Starting G12_C as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G12 > C:\RMVTMP\UNOV\G12_C.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G12 > C:\RMVTMP\UPUB\G12_C.OUT
ECHO Starting G13_E as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G13 > C:\RMVTMP\UNOV\G13_E.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G13 > C:\RMVTMP\UPUB\G13_E.OUT
ECHO Starting G14_M as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G14 > C:\RMVTMP\UNOV\G14_M.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G14 > C:\RMVTMP\UPUB\G14_M.OUT
ECHO Starting G15_F as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G15 > C:\RMVTMP\UNOV\G15_F.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G15 > C:\RMVTMP\UPUB\G15_F.OUT
ECHO Starting G16_A as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G16 > C:\RMVTMP\UNOV\G16_A.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G16 > C:\RMVTMP\UPUB\G16_A.OUT
ECHO Starting G17_S as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G17 > C:\RMVTMP\UNOV\G17_S.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G17 > C:\RMVTMP\UPUB\G17_S.OUT
ECHO Starting G20_RF as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G20 > C:\RMVTMP\UNOV\G20_RF.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G20 > C:\RMVTMP\UPUB\G20_RF.OUT
ECHO Starting G21_RW as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G21 > C:\RMVTMP\UNOV\G21_RW.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G21 > C:\RMVTMP\UPUB\G21_RW.OUT
ECHO Starting G22_RWC as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G22 > C:\RMVTMP\UNOV\G22_RWC.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G22 > C:\RMVTMP\UPUB\G22_RWC.OUT
ECHO Starting G23_RWCE as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G23 > C:\RMVTMP\UNOV\G23_RWCE.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G23 > C:\RMVTMP\UPUB\G23_RWCE.OUT
ECHO Starting G24_RAL as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G24 > C:\RMVTMP\UNOV\G24_RAL.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G24 > C:\RMVTMP\UPUB\G24_RAL.OUT
ECHO Starting G25_SAL as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G25 > C:\RMVTMP\UNOV\G25_SAL.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G25 > C:\RMVTMP\UPUB\G25_SAL.OUT
ECHO Starting G26_ALL as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G26 > C:\RMVTMP\UNOV\G26_ALL.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G26 > C:\RMVTMP\UPUB\G26_ALL.OUT
ECHO Starting G27_N as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G27 > C:\RMVTMP\UNOV\G27_N.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G27 > C:\RMVTMP\UPUB\G27_N.OUT
ECHO Starting G30_RE as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G30 > C:\RMVTMP\UNOV\G30_RE.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G30 > C:\RMVTMP\UPUB\G30_RE.OUT
ECHO Starting G31_RWF as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G31 > C:\RMVTMP\UNOV\G31_RWF.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G31 > C:\RMVTMP\UPUB\G31_RWF.OUT
ECHO Starting G32_RCM as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G32 > C:\RMVTMP\UNOV\G32_RCM.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G32 > C:\RMVTMP\UPUB\G32_RCM.OUT
ECHO Starting G33_RFA as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G33 > C:\RMVTMP\UNOV\G33_RFA.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G33 > C:\RMVTMP\UPUB\G33_RFA.OUT
ECHO Starting G34_WCM as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G34 > C:\RMVTMP\UNOV\G34_WCM.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G34 > C:\RMVTMP\UPUB\G34_WCM.OUT
ECHO Starting G35_EMF as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G35 > C:\RMVTMP\UNOV\G35_EMF.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G35 > C:\RMVTMP\UPUB\G35_EMF.OUT
ECHO Starting G36_RMF as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G36 > C:\RMVTMP\UNOV\G36_RMF.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G36 > C:\RMVTMP\UPUB\G36_RMF.OUT
ECHO Starting G37_REMA as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G37 > C:\RMVTMP\UNOV\G37_REMA.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G37 > C:\RMVTMP\UPUB\G37_REMA.OUT
ECHO Starting G38_SR as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G38 > C:\RMVTMP\UNOV\G38_SR.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G38 > C:\RMVTMP\UPUB\G38_SR.OUT
ECHO Starting G39_SRF as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G39 > C:\RMVTMP\UNOV\G39_SRF.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G39 > C:\RMVTMP\UPUB\G39_SRF.OUT
ECHO Starting G40_SWCM as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\G40 > C:\RMVTMP\UNOV\G40_SWCM.OUT
\PUBLIC\RIGHTS F:\RMVTEST\G40 > C:\RMVTMP\UPUB\G40_SWCM.OUT
ECHO Starting F10_R as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\F10\T.TXT > C:\RMVTMP\UNOV\F10_R.OUT
\PUBLIC\RIGHTS F:\RMVTEST\F10\T.TXT > C:\RMVTMP\UPUB\F10_R.OUT
ECHO Starting F11_RF as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\F11\T.TXT > C:\RMVTMP\UNOV\F11_RF.OUT
\PUBLIC\RIGHTS F:\RMVTEST\F11\T.TXT > C:\RMVTMP\UPUB\F11_RF.OUT
ECHO Starting F12_RAL as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\F12\T.TXT > C:\RMVTMP\UNOV\F12_RAL.OUT
\PUBLIC\RIGHTS F:\RMVTEST\F12\T.TXT > C:\RMVTMP\UPUB\F12_RAL.OUT
ECHO Starting F13_ALL as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\F13\T.TXT > C:\RMVTMP\UNOV\F13_ALL.OUT
\PUBLIC\RIGHTS F:\RMVTEST\F13\T.TXT > C:\RMVTMP\UPUB\F13_ALL.OUT
ECHO Starting F14_N as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\F14\T.TXT > C:\RMVTMP\UNOV\F14_N.OUT
\PUBLIC\RIGHTS F:\RMVTEST\F14\T.TXT > C:\RMVTMP\UPUB\F14_N.OUT
ECHO Starting F15_S as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\F15\T.TXT > C:\RMVTMP\UNOV\F15_S.OUT
\PUBLIC\RIGHTS F:\RMVTEST\F15\T.TXT > C:\RMVTMP\UPUB\F15_S.OUT
ECHO Starting F16_SAL as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\F16\T.TXT > C:\RMVTMP\UNOV\F16_SAL.OUT
\PUBLIC\RIGHTS F:\RMVTEST\F16\T.TXT > C:\RMVTMP\UPUB\F16_SAL.OUT
ECHO Starting S10_R as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\S10\S1 > C:\RMVTMP\UNOV\S10_R.OUT
\PUBLIC\RIGHTS F:\RMVTEST\S10\S1 > C:\RMVTMP\UPUB\S10_R.OUT
ECHO Starting S11_RWC as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\S11\S1 > C:\RMVTMP\UNOV\S11_RWC.OUT
\PUBLIC\RIGHTS F:\RMVTEST\S11\S1 > C:\RMVTMP\UPUB\S11_RWC.OUT
ECHO Starting S12_ALL as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\S12\S1 > C:\RMVTMP\UNOV\S12_ALL.OUT
\PUBLIC\RIGHTS F:\RMVTEST\S12\S1 > C:\RMVTMP\UPUB\S12_ALL.OUT
ECHO Starting S13_SAL as NOPASSUSER... >> C:\RMVTMP\HELPER.TXT
\NPUBLIC\RIGHTS F:\RMVTEST\S13\S1 > C:\RMVTMP\UNOV\S13_SAL.OUT
\PUBLIC\RIGHTS F:\RMVTEST\S13\S1 > C:\RMVTMP\UPUB\S13_SAL.OUT
:RELSUP
C:
CD \RMVTMP
LOGOUT > ULOG2.OUT
F:
CD \
IF EXIST \LOGIN\LOGIN.EXE GOTO HAVELOG
ECHO F:\LOGIN\LOGIN.EXE not found. >> C:\RMVTMP\HELPER.TXT
GOTO MANUAL
:HAVELOG
F:\LOGIN\LOGIN SUPERVISOR /PWD:%LGNTPWD% > C:\RMVTMP\ULGSUP.OUT
F:
CD \
IF EXIST \RMVSTA.BAT GOTO QUEUEP2
ECHO F: not restored or \RMVSTA.BAT missing. >> C:\RMVTMP\HELPER.TXT
GOTO MANUAL
:QUEUEP2
C:
CD \RMVTMP
DLYSTRT /T:2 F:\RMVSTA.BAT PART2
GOTO END
:MANUAL
ECHO Please run manually after SUPERVISOR login: >> C:\RMVTMP\HELPER.TXT
ECHO F: >> C:\RMVTMP\HELPER.TXT
ECHO CD \ >> C:\RMVTMP\HELPER.TXT
ECHO RMVSTA PART2 >> C:\RMVTMP\HELPER.TXT
:END

View File

@@ -1,116 +1,595 @@
@ECHO OFF
REM RMVSTA.BAT
REM Automated REMOVE baseline test for MARS NWE.
REM Automated REMOVE comparison test for MARS NWE.
REM
REM Run as SUPERVISOR or a user with Access Control on F:\RMVTEST.
REM Uses \NPUBLIC\REMOVE as Novell baseline.
REM Setup uses \NPUBLIC\GRANT to create trustee assignments.
REM Direct mode:
REM OUT = Novell baseline using \NPUBLIC\REMOVE
REM PUBOUT = our implementation using \PUBLIC\REMOVE
REM
REM Result tree:
REM F:\RMVCMP
REM Test tree:
REM F:\RMVTEST
REM User-context mode:
REM REMOVE is run as SUPERVISOR against NOPASSUSER.
REM DLYSTRT starts C:\RMVTMP\RMVC.BAT after this script exits.
REM RMVC logs in as NOPASSUSER and captures effective RIGHTS output.
REM
REM Optional automatic user-context mode 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: RMVSTA [PART2]
GOTO END
:PART1
F:
CD \
REM --- Clean generated test/result directories (contents only). ---
IF EXIST RMVTEST\NUL DELTREE /Y RMVTEST\*.*
IF EXIST RMVCMP\NUL DELTREE /Y RMVCMP\*.*
IF "%LGNTPWD%"=="" GOTO NEEDPWD
IF NOT EXIST RMVTEST\NUL MD RMVTEST
IF NOT EXIST RMVTEST\ONE\NUL MD RMVTEST\ONE
IF NOT EXIST RMVTEST\TREE\NUL MD RMVTEST\TREE
IF NOT EXIST RMVTEST\TREE\SUB1\NUL MD RMVTEST\TREE\SUB1
IF NOT EXIST RMVTEST\TREE\SUB2\NUL MD RMVTEST\TREE\SUB2
IF NOT EXIST RMVTEST\FILES\NUL MD RMVTEST\FILES
IF NOT EXIST RMVTEST\OPTBOTH\NUL MD RMVTEST\OPTBOTH
IF NOT EXIST RMVTEST\OPTBOTH\SUB\NUL MD RMVTEST\OPTBOTH\SUB
IF NOT EXIST RMVCMP\NUL MD RMVCMP
IF NOT EXIST RMVCMP\OUT\NUL MD RMVCMP\OUT
IF NOT EXIST RMVCMP\SETUP\NUL MD RMVCMP\SETUP
REM --- Clean generated test/result directories. ---
IF EXIST RMVTEST\*.* DELTREE /Y RMVTEST
IF EXIST RMVCMP\*.* DELTREE /Y RMVCMP
IF EXIST C:\RMVTMP\*.* DELTREE /Y C:\RMVTMP
ECHO REMOVE ROOT FILE > F:\RMVTEST\ROOT.TXT
ECHO REMOVE ONE FILE > F:\RMVTEST\ONE\ONE.TXT
ECHO REMOVE TREE ROOT FILE > F:\RMVTEST\TREE\TROOT.TXT
ECHO REMOVE SUB1 FILE > F:\RMVTEST\TREE\SUB1\SUB1.TXT
ECHO REMOVE SUB2 FILE > F:\RMVTEST\TREE\SUB2\SUB2.TXT
ECHO REMOVE FILE A > F:\RMVTEST\FILES\A.TXT
ECHO REMOVE FILE B > F:\RMVTEST\FILES\B.TXT
ECHO REMOVE OPT ROOT > F:\RMVTEST\OPTBOTH\O.TXT
ECHO REMOVE OPT SUB > F:\RMVTEST\OPTBOTH\SUB\S.TXT
IF NOT EXIST RMVTEST MD RMVTEST
IF NOT EXIST RMVCMP MD RMVCMP
IF NOT EXIST RMVCMP\OUT MD RMVCMP\OUT
IF NOT EXIST RMVCMP\PUBOUT MD RMVCMP\PUBOUT
IF NOT EXIST RMVCMP\SETUP MD RMVCMP\SETUP
IF NOT EXIST C:\RMVTMP MD C:\RMVTMP
IF NOT EXIST C:\RMVTMP\UNOV MD C:\RMVTMP\UNOV
IF NOT EXIST C:\RMVTMP\UPUB MD C:\RMVTMP\UPUB
IF NOT EXIST C:\RMVTMP\USETUP MD C:\RMVTMP\USETUP
ECHO RMVSTA REMOVE baseline test > F:\RMVCMP\RUN.LOG
ECHO Run this as SUPERVISOR or equivalent. >> F:\RMVCMP\RUN.LOG
ECHO Captures \NPUBLIC\REMOVE output against user MARIO. >> F:\RMVCMP\RUN.LOG
ECHO Setup uses \NPUBLIC\GRANT. >> F:\RMVCMP\RUN.LOG
ECHO RMVSTA REMOVE comparison test > F:\RMVCMP\RUN.LOG
ECHO OUT = Novell baseline with \NPUBLIC\REMOVE >> F:\RMVCMP\RUN.LOG
ECHO PUBOUT = our implementation with \PUBLIC\REMOVE >> F:\RMVCMP\RUN.LOG
ECHO User-context target: NOPASSUSER >> F:\RMVCMP\RUN.LOG
ECHO. >> F:\RMVCMP\RUN.LOG
ECHO === D01 usage/help === >> F:\RMVCMP\RUN.LOG
ECHO Starting D01_HELP...
\NPUBLIC\REMOVE /? > F:\RMVCMP\OUT\D01_HELP.OUT
\PUBLIC\REMOVE /? > F:\RMVCMP\PUBOUT\D01_HELP.OUT
ECHO Starting D02_NOAR...
\NPUBLIC\REMOVE > F:\RMVCMP\OUT\D02_NOAR.OUT
\PUBLIC\REMOVE > F:\RMVCMP\PUBOUT\D02_NOAR.OUT
ECHO === D02 no arguments === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE > F:\RMVCMP\OUT\D02_NOARGS.OUT
REM --- Setup matrix directories/files. ---
IF NOT EXIST RMVTEST\G10 MD RMVTEST\G10
ECHO G10_R > F:\RMVTEST\G10\T.TXT
IF NOT EXIST RMVTEST\G11 MD RMVTEST\G11
ECHO G11_W > F:\RMVTEST\G11\T.TXT
IF NOT EXIST RMVTEST\G12 MD RMVTEST\G12
ECHO G12_C > F:\RMVTEST\G12\T.TXT
IF NOT EXIST RMVTEST\G13 MD RMVTEST\G13
ECHO G13_E > F:\RMVTEST\G13\T.TXT
IF NOT EXIST RMVTEST\G14 MD RMVTEST\G14
ECHO G14_M > F:\RMVTEST\G14\T.TXT
IF NOT EXIST RMVTEST\G15 MD RMVTEST\G15
ECHO G15_F > F:\RMVTEST\G15\T.TXT
IF NOT EXIST RMVTEST\G16 MD RMVTEST\G16
ECHO G16_A > F:\RMVTEST\G16\T.TXT
IF NOT EXIST RMVTEST\G17 MD RMVTEST\G17
ECHO G17_S > F:\RMVTEST\G17\T.TXT
IF NOT EXIST RMVTEST\G20 MD RMVTEST\G20
ECHO G20_RF > F:\RMVTEST\G20\T.TXT
IF NOT EXIST RMVTEST\G21 MD RMVTEST\G21
ECHO G21_RW > F:\RMVTEST\G21\T.TXT
IF NOT EXIST RMVTEST\G22 MD RMVTEST\G22
ECHO G22_RWC > F:\RMVTEST\G22\T.TXT
IF NOT EXIST RMVTEST\G23 MD RMVTEST\G23
ECHO G23_RWCE > F:\RMVTEST\G23\T.TXT
IF NOT EXIST RMVTEST\G24 MD RMVTEST\G24
ECHO G24_RAL > F:\RMVTEST\G24\T.TXT
IF NOT EXIST RMVTEST\G25 MD RMVTEST\G25
ECHO G25_SAL > F:\RMVTEST\G25\T.TXT
IF NOT EXIST RMVTEST\G26 MD RMVTEST\G26
ECHO G26_ALL > F:\RMVTEST\G26\T.TXT
IF NOT EXIST RMVTEST\G27 MD RMVTEST\G27
ECHO G27_N > F:\RMVTEST\G27\T.TXT
IF NOT EXIST RMVTEST\G30 MD RMVTEST\G30
ECHO G30_RE > F:\RMVTEST\G30\T.TXT
IF NOT EXIST RMVTEST\G31 MD RMVTEST\G31
ECHO G31_RWF > F:\RMVTEST\G31\T.TXT
IF NOT EXIST RMVTEST\G32 MD RMVTEST\G32
ECHO G32_RCM > F:\RMVTEST\G32\T.TXT
IF NOT EXIST RMVTEST\G33 MD RMVTEST\G33
ECHO G33_RFA > F:\RMVTEST\G33\T.TXT
IF NOT EXIST RMVTEST\G34 MD RMVTEST\G34
ECHO G34_WCM > F:\RMVTEST\G34\T.TXT
IF NOT EXIST RMVTEST\G35 MD RMVTEST\G35
ECHO G35_EMF > F:\RMVTEST\G35\T.TXT
IF NOT EXIST RMVTEST\G36 MD RMVTEST\G36
ECHO G36_RMF > F:\RMVTEST\G36\T.TXT
IF NOT EXIST RMVTEST\G37 MD RMVTEST\G37
ECHO G37_REMA > F:\RMVTEST\G37\T.TXT
IF NOT EXIST RMVTEST\G38 MD RMVTEST\G38
ECHO G38_SR > F:\RMVTEST\G38\T.TXT
IF NOT EXIST RMVTEST\G39 MD RMVTEST\G39
ECHO G39_SRF > F:\RMVTEST\G39\T.TXT
IF NOT EXIST RMVTEST\G40 MD RMVTEST\G40
ECHO G40_SWCM > F:\RMVTEST\G40\T.TXT
IF NOT EXIST RMVTEST\F10 MD RMVTEST\F10
ECHO F10_R > F:\RMVTEST\F10\T.TXT
IF NOT EXIST RMVTEST\F11 MD RMVTEST\F11
ECHO F11_RF > F:\RMVTEST\F11\T.TXT
IF NOT EXIST RMVTEST\F12 MD RMVTEST\F12
ECHO F12_RAL > F:\RMVTEST\F12\T.TXT
IF NOT EXIST RMVTEST\F13 MD RMVTEST\F13
ECHO F13_ALL > F:\RMVTEST\F13\T.TXT
IF NOT EXIST RMVTEST\F14 MD RMVTEST\F14
ECHO F14_N > F:\RMVTEST\F14\T.TXT
IF NOT EXIST RMVTEST\F15 MD RMVTEST\F15
ECHO F15_S > F:\RMVTEST\F15\T.TXT
IF NOT EXIST RMVTEST\F16 MD RMVTEST\F16
ECHO F16_SAL > F:\RMVTEST\F16\T.TXT
IF NOT EXIST RMVTEST\S10 MD RMVTEST\S10
IF NOT EXIST RMVTEST\S10\S1 MD RMVTEST\S10\S1
IF NOT EXIST RMVTEST\S10\S2 MD RMVTEST\S10\S2
ECHO S10_R > F:\RMVTEST\S10\S1\T.TXT
ECHO S10_R > F:\RMVTEST\S10\S2\T.TXT
IF NOT EXIST RMVTEST\S11 MD RMVTEST\S11
IF NOT EXIST RMVTEST\S11\S1 MD RMVTEST\S11\S1
IF NOT EXIST RMVTEST\S11\S2 MD RMVTEST\S11\S2
ECHO S11_RWC > F:\RMVTEST\S11\S1\T.TXT
ECHO S11_RWC > F:\RMVTEST\S11\S2\T.TXT
IF NOT EXIST RMVTEST\S12 MD RMVTEST\S12
IF NOT EXIST RMVTEST\S12\S1 MD RMVTEST\S12\S1
IF NOT EXIST RMVTEST\S12\S2 MD RMVTEST\S12\S2
ECHO S12_ALL > F:\RMVTEST\S12\S1\T.TXT
ECHO S12_ALL > F:\RMVTEST\S12\S2\T.TXT
IF NOT EXIST RMVTEST\S13 MD RMVTEST\S13
IF NOT EXIST RMVTEST\S13\S1 MD RMVTEST\S13\S1
IF NOT EXIST RMVTEST\S13\S2 MD RMVTEST\S13\S2
ECHO S13_SAL > F:\RMVTEST\S13\S1\T.TXT
ECHO S13_SAL > F:\RMVTEST\S13\S2\T.TXT
ECHO === D10 remove USER MARIO from directory === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\ONE TO USER MARIO > F:\RMVCMP\SETUP\S10_GRANT.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\ONE > F:\RMVCMP\OUT\D10_DIR_USER.OUT
IF NOT EXIST RMVTEST\ERR MD RMVTEST\ERR
ECHO ERR > F:\RMVTEST\ERR\T.TXT
ECHO === D11 remove MARIO without USER keyword === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\ONE TO USER MARIO > F:\RMVCMP\SETUP\S11_GRANT.OUT
\NPUBLIC\REMOVE MARIO FROM F:\RMVTEST\ONE > F:\RMVCMP\OUT\D11_DIR_IMPLICIT.OUT
REM --- Direct REMOVE output compare. Setup uses Novell GRANT for both sides. ---
ECHO Starting G10_R directory remove...
\NPUBLIC\GRANT R FOR F:\RMVTEST\G10 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G10_RNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G10 > F:\RMVCMP\OUT\G10_R.OUT
\NPUBLIC\GRANT R FOR F:\RMVTEST\G10 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G10_RPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G10 > F:\RMVCMP\PUBOUT\G10_R.OUT
ECHO Starting G11_W directory remove...
\NPUBLIC\GRANT W FOR F:\RMVTEST\G11 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G11_WNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G11 > F:\RMVCMP\OUT\G11_W.OUT
\NPUBLIC\GRANT W FOR F:\RMVTEST\G11 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G11_WPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G11 > F:\RMVCMP\PUBOUT\G11_W.OUT
ECHO Starting G12_C directory remove...
\NPUBLIC\GRANT C FOR F:\RMVTEST\G12 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G12_CNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G12 > F:\RMVCMP\OUT\G12_C.OUT
\NPUBLIC\GRANT C FOR F:\RMVTEST\G12 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G12_CPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G12 > F:\RMVCMP\PUBOUT\G12_C.OUT
ECHO Starting G13_E directory remove...
\NPUBLIC\GRANT E FOR F:\RMVTEST\G13 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G13_ENG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G13 > F:\RMVCMP\OUT\G13_E.OUT
\NPUBLIC\GRANT E FOR F:\RMVTEST\G13 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G13_EPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G13 > F:\RMVCMP\PUBOUT\G13_E.OUT
ECHO Starting G14_M directory remove...
\NPUBLIC\GRANT M FOR F:\RMVTEST\G14 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G14_MNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G14 > F:\RMVCMP\OUT\G14_M.OUT
\NPUBLIC\GRANT M FOR F:\RMVTEST\G14 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G14_MPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G14 > F:\RMVCMP\PUBOUT\G14_M.OUT
ECHO Starting G15_F directory remove...
\NPUBLIC\GRANT F FOR F:\RMVTEST\G15 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G15_FNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G15 > F:\RMVCMP\OUT\G15_F.OUT
\NPUBLIC\GRANT F FOR F:\RMVTEST\G15 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G15_FPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G15 > F:\RMVCMP\PUBOUT\G15_F.OUT
ECHO Starting G16_A directory remove...
\NPUBLIC\GRANT A FOR F:\RMVTEST\G16 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G16_ANG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G16 > F:\RMVCMP\OUT\G16_A.OUT
\NPUBLIC\GRANT A FOR F:\RMVTEST\G16 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G16_APG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G16 > F:\RMVCMP\PUBOUT\G16_A.OUT
ECHO Starting G17_S directory remove...
\NPUBLIC\GRANT S FOR F:\RMVTEST\G17 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G17_SNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G17 > F:\RMVCMP\OUT\G17_S.OUT
\NPUBLIC\GRANT S FOR F:\RMVTEST\G17 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G17_SPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G17 > F:\RMVCMP\PUBOUT\G17_S.OUT
ECHO Starting G20_RF directory remove...
\NPUBLIC\GRANT R F FOR F:\RMVTEST\G20 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G20_RFNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G20 > F:\RMVCMP\OUT\G20_RF.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\G20 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G20_RFPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G20 > F:\RMVCMP\PUBOUT\G20_RF.OUT
ECHO Starting G21_RW directory remove...
\NPUBLIC\GRANT R W FOR F:\RMVTEST\G21 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G21_RWNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G21 > F:\RMVCMP\OUT\G21_RW.OUT
\NPUBLIC\GRANT R W FOR F:\RMVTEST\G21 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G21_RWPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G21 > F:\RMVCMP\PUBOUT\G21_RW.OUT
ECHO Starting G22_RWC directory remove...
\NPUBLIC\GRANT R W C FOR F:\RMVTEST\G22 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G22_RWCNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G22 > F:\RMVCMP\OUT\G22_RWC.OUT
\NPUBLIC\GRANT R W C FOR F:\RMVTEST\G22 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G22_RWCPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G22 > F:\RMVCMP\PUBOUT\G22_RWC.OUT
ECHO Starting G23_RWCE directory remove...
\NPUBLIC\GRANT R W C E FOR F:\RMVTEST\G23 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G23_RWCENG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G23 > F:\RMVCMP\OUT\G23_RWCE.OUT
\NPUBLIC\GRANT R W C E FOR F:\RMVTEST\G23 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G23_RWCEPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G23 > F:\RMVCMP\PUBOUT\G23_RWCE.OUT
ECHO Starting G24_RAL directory remove...
\NPUBLIC\GRANT R W C E M F A FOR F:\RMVTEST\G24 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G24_RALNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G24 > F:\RMVCMP\OUT\G24_RAL.OUT
\NPUBLIC\GRANT R W C E M F A FOR F:\RMVTEST\G24 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G24_RALPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G24 > F:\RMVCMP\PUBOUT\G24_RAL.OUT
ECHO Starting G25_SAL directory remove...
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\G25 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G25_SALNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G25 > F:\RMVCMP\OUT\G25_SAL.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\G25 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G25_SALPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G25 > F:\RMVCMP\PUBOUT\G25_SAL.OUT
ECHO Starting G26_ALL directory remove...
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\G26 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G26_ALLNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G26 > F:\RMVCMP\OUT\G26_ALL.OUT
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\G26 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G26_ALLPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G26 > F:\RMVCMP\PUBOUT\G26_ALL.OUT
ECHO Starting G27_N directory remove...
\NPUBLIC\GRANT N FOR F:\RMVTEST\G27 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G27_NNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G27 > F:\RMVCMP\OUT\G27_N.OUT
\NPUBLIC\GRANT N FOR F:\RMVTEST\G27 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G27_NPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G27 > F:\RMVCMP\PUBOUT\G27_N.OUT
ECHO Starting G30_RE directory remove...
\NPUBLIC\GRANT R E FOR F:\RMVTEST\G30 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G30_RENG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G30 > F:\RMVCMP\OUT\G30_RE.OUT
\NPUBLIC\GRANT R E FOR F:\RMVTEST\G30 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G30_REPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G30 > F:\RMVCMP\PUBOUT\G30_RE.OUT
ECHO Starting G31_RWF directory remove...
\NPUBLIC\GRANT R W F FOR F:\RMVTEST\G31 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G31_RWFNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G31 > F:\RMVCMP\OUT\G31_RWF.OUT
\NPUBLIC\GRANT R W F FOR F:\RMVTEST\G31 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G31_RWFPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G31 > F:\RMVCMP\PUBOUT\G31_RWF.OUT
ECHO Starting G32_RCM directory remove...
\NPUBLIC\GRANT R C M FOR F:\RMVTEST\G32 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G32_RCMNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G32 > F:\RMVCMP\OUT\G32_RCM.OUT
\NPUBLIC\GRANT R C M FOR F:\RMVTEST\G32 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G32_RCMPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G32 > F:\RMVCMP\PUBOUT\G32_RCM.OUT
ECHO Starting G33_RFA directory remove...
\NPUBLIC\GRANT R F A FOR F:\RMVTEST\G33 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G33_RFANG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G33 > F:\RMVCMP\OUT\G33_RFA.OUT
\NPUBLIC\GRANT R F A FOR F:\RMVTEST\G33 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G33_RFAPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G33 > F:\RMVCMP\PUBOUT\G33_RFA.OUT
ECHO Starting G34_WCM directory remove...
\NPUBLIC\GRANT W C M FOR F:\RMVTEST\G34 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G34_WCMNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G34 > F:\RMVCMP\OUT\G34_WCM.OUT
\NPUBLIC\GRANT W C M FOR F:\RMVTEST\G34 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G34_WCMPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G34 > F:\RMVCMP\PUBOUT\G34_WCM.OUT
ECHO Starting G35_EMF directory remove...
\NPUBLIC\GRANT E M F FOR F:\RMVTEST\G35 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G35_EMFNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G35 > F:\RMVCMP\OUT\G35_EMF.OUT
\NPUBLIC\GRANT E M F FOR F:\RMVTEST\G35 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G35_EMFPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G35 > F:\RMVCMP\PUBOUT\G35_EMF.OUT
ECHO Starting G36_RMF directory remove...
\NPUBLIC\GRANT R W C M F FOR F:\RMVTEST\G36 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G36_RMFNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G36 > F:\RMVCMP\OUT\G36_RMF.OUT
\NPUBLIC\GRANT R W C M F FOR F:\RMVTEST\G36 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G36_RMFPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G36 > F:\RMVCMP\PUBOUT\G36_RMF.OUT
ECHO Starting G37_REMA directory remove...
\NPUBLIC\GRANT R E M A FOR F:\RMVTEST\G37 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G37_REMANG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G37 > F:\RMVCMP\OUT\G37_REMA.OUT
\NPUBLIC\GRANT R E M A FOR F:\RMVTEST\G37 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G37_REMAPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G37 > F:\RMVCMP\PUBOUT\G37_REMA.OUT
ECHO Starting G38_SR directory remove...
\NPUBLIC\GRANT S R FOR F:\RMVTEST\G38 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G38_SRNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G38 > F:\RMVCMP\OUT\G38_SR.OUT
\NPUBLIC\GRANT S R FOR F:\RMVTEST\G38 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G38_SRPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G38 > F:\RMVCMP\PUBOUT\G38_SR.OUT
ECHO Starting G39_SRF directory remove...
\NPUBLIC\GRANT S R F FOR F:\RMVTEST\G39 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G39_SRFNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G39 > F:\RMVCMP\OUT\G39_SRF.OUT
\NPUBLIC\GRANT S R F FOR F:\RMVTEST\G39 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G39_SRFPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G39 > F:\RMVCMP\PUBOUT\G39_SRF.OUT
ECHO Starting G40_SWCM directory remove...
\NPUBLIC\GRANT S W C M FOR F:\RMVTEST\G40 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G40_SWCMNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G40 > F:\RMVCMP\OUT\G40_SWCM.OUT
\NPUBLIC\GRANT S W C M FOR F:\RMVTEST\G40 TO USER NOPASSUSER > F:\RMVCMP\SETUP\G40_SWCMPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\G40 > F:\RMVCMP\PUBOUT\G40_SWCM.OUT
ECHO Starting F10_R file remove...
\NPUBLIC\GRANT R FOR F:\RMVTEST\F10\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F10_RNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F10\T.TXT /FILES > F:\RMVCMP\OUT\F10_R.OUT
\NPUBLIC\GRANT R FOR F:\RMVTEST\F10\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F10_RPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F10\T.TXT /FILES > F:\RMVCMP\PUBOUT\F10_R.OUT
ECHO Starting F11_RF file remove...
\NPUBLIC\GRANT R F FOR F:\RMVTEST\F11\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F11_RFNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F11\T.TXT /FILES > F:\RMVCMP\OUT\F11_RF.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\F11\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F11_RFPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F11\T.TXT /FILES > F:\RMVCMP\PUBOUT\F11_RF.OUT
ECHO Starting F12_RAL file remove...
\NPUBLIC\GRANT R W C E M F A FOR F:\RMVTEST\F12\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F12_RALNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F12\T.TXT /FILES > F:\RMVCMP\OUT\F12_RAL.OUT
\NPUBLIC\GRANT R W C E M F A FOR F:\RMVTEST\F12\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F12_RALPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F12\T.TXT /FILES > F:\RMVCMP\PUBOUT\F12_RAL.OUT
ECHO Starting F13_ALL file remove...
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\F13\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F13_ALLNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F13\T.TXT /FILES > F:\RMVCMP\OUT\F13_ALL.OUT
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\F13\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F13_ALLPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F13\T.TXT /FILES > F:\RMVCMP\PUBOUT\F13_ALL.OUT
ECHO Starting F14_N file remove...
\NPUBLIC\GRANT N FOR F:\RMVTEST\F14\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F14_NNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F14\T.TXT /FILES > F:\RMVCMP\OUT\F14_N.OUT
\NPUBLIC\GRANT N FOR F:\RMVTEST\F14\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F14_NPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F14\T.TXT /FILES > F:\RMVCMP\PUBOUT\F14_N.OUT
ECHO Starting F15_S file remove...
\NPUBLIC\GRANT S FOR F:\RMVTEST\F15\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F15_SNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F15\T.TXT /FILES > F:\RMVCMP\OUT\F15_S.OUT
\NPUBLIC\GRANT S FOR F:\RMVTEST\F15\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F15_SPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F15\T.TXT /FILES > F:\RMVCMP\PUBOUT\F15_S.OUT
ECHO Starting F16_SAL file remove...
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\F16\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F16_SALNG.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F16\T.TXT /FILES > F:\RMVCMP\OUT\F16_SAL.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\F16\T.TXT TO USER NOPASSUSER /FILES > F:\RMVCMP\SETUP\F16_SALPG.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\F16\T.TXT /FILES > F:\RMVCMP\PUBOUT\F16_SAL.OUT
ECHO Starting S10_R subdirs remove...
\NPUBLIC\GRANT R FOR F:\RMVTEST\S10 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S10_RNR.OUT
\NPUBLIC\GRANT R FOR F:\RMVTEST\S10\S1 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S10_RN1.OUT
\NPUBLIC\GRANT R FOR F:\RMVTEST\S10\S2 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S10_RN2.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\S10 /SUBDIRS > F:\RMVCMP\OUT\S10_R.OUT
\NPUBLIC\GRANT R FOR F:\RMVTEST\S10 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S10_RPR.OUT
\NPUBLIC\GRANT R FOR F:\RMVTEST\S10\S1 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S10_RP1.OUT
\NPUBLIC\GRANT R FOR F:\RMVTEST\S10\S2 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S10_RP2.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\S10 /SUBDIRS > F:\RMVCMP\PUBOUT\S10_R.OUT
ECHO Starting S11_RWC subdirs remove...
\NPUBLIC\GRANT R W C FOR F:\RMVTEST\S11 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S11_RWCNR.OUT
\NPUBLIC\GRANT R W C FOR F:\RMVTEST\S11\S1 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S11_RWCN1.OUT
\NPUBLIC\GRANT R W C FOR F:\RMVTEST\S11\S2 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S11_RWCN2.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\S11 /SUBDIRS > F:\RMVCMP\OUT\S11_RWC.OUT
\NPUBLIC\GRANT R W C FOR F:\RMVTEST\S11 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S11_RWCPR.OUT
\NPUBLIC\GRANT R W C FOR F:\RMVTEST\S11\S1 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S11_RWCP1.OUT
\NPUBLIC\GRANT R W C FOR F:\RMVTEST\S11\S2 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S11_RWCP2.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\S11 /SUBDIRS > F:\RMVCMP\PUBOUT\S11_RWC.OUT
ECHO Starting S12_ALL subdirs remove...
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\S12 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S12_ALLNR.OUT
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\S12\S1 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S12_ALLN1.OUT
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\S12\S2 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S12_ALLN2.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\S12 /SUBDIRS > F:\RMVCMP\OUT\S12_ALL.OUT
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\S12 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S12_ALLPR.OUT
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\S12\S1 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S12_ALLP1.OUT
\NPUBLIC\GRANT ALL FOR F:\RMVTEST\S12\S2 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S12_ALLP2.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\S12 /SUBDIRS > F:\RMVCMP\PUBOUT\S12_ALL.OUT
ECHO Starting S13_SAL subdirs remove...
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\S13 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S13_SALNR.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\S13\S1 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S13_SALN1.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\S13\S2 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S13_SALN2.OUT
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\S13 /SUBDIRS > F:\RMVCMP\OUT\S13_SAL.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\S13 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S13_SALPR.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\S13\S1 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S13_SALP1.OUT
\NPUBLIC\GRANT S R W C E M F A FOR F:\RMVTEST\S13\S2 TO USER NOPASSUSER > F:\RMVCMP\SETUP\S13_SALP2.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\S13 /SUBDIRS > F:\RMVCMP\PUBOUT\S13_SAL.OUT
ECHO === D20 remove recursively from subdirectories === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\TREE TO USER MARIO > F:\RMVCMP\SETUP\S20_ROOT.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\TREE\SUB1 TO USER MARIO > F:\RMVCMP\SETUP\S20_SUB1.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\TREE\SUB2 TO USER MARIO > F:\RMVCMP\SETUP\S20_SUB2.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\TREE /SUBDIRS > F:\RMVCMP\OUT\D20_SUBDIRS.OUT
ECHO Starting E90_NOTR no trustee...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\ERR > F:\RMVCMP\OUT\E90_NOTR.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\ERR > F:\RMVCMP\PUBOUT\E90_NOTR.OUT
ECHO Starting E91_MUSR missing user...
\NPUBLIC\REMOVE USER NO_SUCH_USER FROM F:\RMVTEST\ERR > F:\RMVCMP\OUT\E91_MUSR.OUT
\PUBLIC\REMOVE USER NO_SUCH_USER FROM F:\RMVTEST\ERR > F:\RMVCMP\PUBOUT\E91_MUSR.OUT
ECHO Starting E92_MISD missing path...
\NPUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\MISS > F:\RMVCMP\OUT\E92_MISD.OUT
\PUBLIC\REMOVE USER NOPASSUSER FROM F:\RMVTEST\MISS > F:\RMVCMP\PUBOUT\E92_MISD.OUT
ECHO Starting E93_BADD bad grammar...
\NPUBLIC\REMOVE USER FROM F:\RMVTEST\ERR > F:\RMVCMP\OUT\E93_BADD.OUT
\PUBLIC\REMOVE USER FROM F:\RMVTEST\ERR > F:\RMVCMP\PUBOUT\E93_BADD.OUT
ECHO === D21 remove from explicit file using /FILES === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\ONE\ONE.TXT TO USER MARIO /FILES > F:\RMVCMP\SETUP\S21_FILE.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\ONE\ONE.TXT /FILES > F:\RMVCMP\OUT\D21_FILE.OUT
ECHO === Direct compare OUT vs PUBOUT === > F:\RMVCMP\COMPARE.LOG
ECHO Comparing D01_HELP >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\D01_HELP.OUT F:\RMVCMP\PUBOUT\D01_HELP.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing D02_NOAR >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\D02_NOAR.OUT F:\RMVCMP\PUBOUT\D02_NOAR.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G10_R >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G10_R.OUT F:\RMVCMP\PUBOUT\G10_R.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G11_W >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G11_W.OUT F:\RMVCMP\PUBOUT\G11_W.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G12_C >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G12_C.OUT F:\RMVCMP\PUBOUT\G12_C.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G13_E >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G13_E.OUT F:\RMVCMP\PUBOUT\G13_E.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G14_M >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G14_M.OUT F:\RMVCMP\PUBOUT\G14_M.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G15_F >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G15_F.OUT F:\RMVCMP\PUBOUT\G15_F.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G16_A >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G16_A.OUT F:\RMVCMP\PUBOUT\G16_A.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G17_S >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G17_S.OUT F:\RMVCMP\PUBOUT\G17_S.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G20_RF >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G20_RF.OUT F:\RMVCMP\PUBOUT\G20_RF.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G21_RW >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G21_RW.OUT F:\RMVCMP\PUBOUT\G21_RW.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G22_RWC >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G22_RWC.OUT F:\RMVCMP\PUBOUT\G22_RWC.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G23_RWCE >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G23_RWCE.OUT F:\RMVCMP\PUBOUT\G23_RWCE.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G24_RAL >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G24_RAL.OUT F:\RMVCMP\PUBOUT\G24_RAL.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G25_SAL >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G25_SAL.OUT F:\RMVCMP\PUBOUT\G25_SAL.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G26_ALL >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G26_ALL.OUT F:\RMVCMP\PUBOUT\G26_ALL.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G27_N >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G27_N.OUT F:\RMVCMP\PUBOUT\G27_N.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G30_RE >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G30_RE.OUT F:\RMVCMP\PUBOUT\G30_RE.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G31_RWF >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G31_RWF.OUT F:\RMVCMP\PUBOUT\G31_RWF.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G32_RCM >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G32_RCM.OUT F:\RMVCMP\PUBOUT\G32_RCM.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G33_RFA >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G33_RFA.OUT F:\RMVCMP\PUBOUT\G33_RFA.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G34_WCM >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G34_WCM.OUT F:\RMVCMP\PUBOUT\G34_WCM.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G35_EMF >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G35_EMF.OUT F:\RMVCMP\PUBOUT\G35_EMF.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G36_RMF >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G36_RMF.OUT F:\RMVCMP\PUBOUT\G36_RMF.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G37_REMA >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G37_REMA.OUT F:\RMVCMP\PUBOUT\G37_REMA.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G38_SR >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G38_SR.OUT F:\RMVCMP\PUBOUT\G38_SR.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G39_SRF >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G39_SRF.OUT F:\RMVCMP\PUBOUT\G39_SRF.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing G40_SWCM >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\G40_SWCM.OUT F:\RMVCMP\PUBOUT\G40_SWCM.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing F10_R >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\F10_R.OUT F:\RMVCMP\PUBOUT\F10_R.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing F11_RF >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\F11_RF.OUT F:\RMVCMP\PUBOUT\F11_RF.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing F12_RAL >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\F12_RAL.OUT F:\RMVCMP\PUBOUT\F12_RAL.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing F13_ALL >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\F13_ALL.OUT F:\RMVCMP\PUBOUT\F13_ALL.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing F14_N >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\F14_N.OUT F:\RMVCMP\PUBOUT\F14_N.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing F15_S >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\F15_S.OUT F:\RMVCMP\PUBOUT\F15_S.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing F16_SAL >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\F16_SAL.OUT F:\RMVCMP\PUBOUT\F16_SAL.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing S10_R >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\S10_R.OUT F:\RMVCMP\PUBOUT\S10_R.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing S11_RWC >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\S11_RWC.OUT F:\RMVCMP\PUBOUT\S11_RWC.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing S12_ALL >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\S12_ALL.OUT F:\RMVCMP\PUBOUT\S12_ALL.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing S13_SAL >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\S13_SAL.OUT F:\RMVCMP\PUBOUT\S13_SAL.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing E90_NOTR >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\E90_NOTR.OUT F:\RMVCMP\PUBOUT\E90_NOTR.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing E91_MUSR >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\E91_MUSR.OUT F:\RMVCMP\PUBOUT\E91_MUSR.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing E92_MISD >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\E92_MISD.OUT F:\RMVCMP\PUBOUT\E92_MISD.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO Comparing E93_BADD >> F:\RMVCMP\COMPARE.LOG
FC F:\RMVCMP\OUT\E93_BADD.OUT F:\RMVCMP\PUBOUT\E93_BADD.OUT >> F:\RMVCMP\COMPARE.LOG
ECHO === D22 remove from all files in directory using /FILES === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\FILES\A.TXT TO USER MARIO /FILES > F:\RMVCMP\SETUP\S22_A.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\FILES\B.TXT TO USER MARIO /FILES > F:\RMVCMP\SETUP\S22_B.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\FILES /FILES > F:\RMVCMP\OUT\D22_FILES_DIR.OUT
REM --- Prepare delayed user-context readback. ---
COPY F:\test\remove\RMVC.BAT C:\RMVTMP\RMVC.BAT > NUL
IF EXIST F:\RMVC.BAT COPY F:\RMVC.BAT C:\RMVTMP\RMVC.BAT > NUL
IF EXIST \PUBLIC\DLYSTRT.EXE COPY \PUBLIC\DLYSTRT.EXE C:\RMVTMP > NUL
IF EXIST C:\RMVTMP\DLYSTRT.EXE GOTO HAVEDLY
ECHO ERROR: DLYSTRT.EXE not found. >> F:\RMVCMP\RUN.LOG
ECHO ERROR: DLYSTRT.EXE not found.
GOTO END
ECHO === D30 relative path from F:\RMVTEST === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\ONE TO USER MARIO > F:\RMVCMP\SETUP\S30_GRANT.OUT
CD \RMVTEST
\NPUBLIC\REMOVE USER MARIO FROM ONE > F:\RMVCMP\OUT\D30_REL_DIR.OUT
:HAVEDLY
C:
CD \RMVTMP
DLYSTRT /T:2 RMVC.BAT
F:
CD \
ECHO RMVSTA Part1 finished. Waiting for delayed NOPASSUSER readback.
GOTO END
ECHO === D90 no trustee === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\EMPTY > F:\RMVCMP\OUT\D90_NO_TRUSTEE.OUT
:PART2
F:
CD \
IF NOT EXIST RMVCMP MD RMVCMP
IF NOT EXIST RMVCMP\UNOV MD RMVCMP\UNOV
IF NOT EXIST RMVCMP\UPUB MD RMVCMP\UPUB
IF NOT EXIST RMVCMP\USETUP MD RMVCMP\USETUP
ECHO === D91 missing user === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE USER NO_SUCH_USER FROM F:\RMVTEST\ONE > F:\RMVCMP\OUT\D91_MISSING_USER.OUT
IF EXIST C:\RMVTMP\UNOV\*.* COPY C:\RMVTMP\UNOV\*.* F:\RMVCMP\UNOV > NUL
IF EXIST C:\RMVTMP\UPUB\*.* COPY C:\RMVTMP\UPUB\*.* F:\RMVCMP\UPUB > NUL
IF EXIST C:\RMVTMP\USETUP\*.* COPY C:\RMVTMP\USETUP\*.* F:\RMVCMP\USETUP > NUL
IF EXIST C:\RMVTMP\HELPER.TXT COPY C:\RMVTMP\HELPER.TXT F:\RMVCMP\HELPER.TXT > NUL
IF EXIST C:\RMVTMP\ULOG1.OUT COPY C:\RMVTMP\ULOG1.OUT F:\RMVCMP\ULOG1.OUT > NUL
IF EXIST C:\RMVTMP\ULOGIN.OUT COPY C:\RMVTMP\ULOGIN.OUT F:\RMVCMP\ULOGIN.OUT > NUL
IF EXIST C:\RMVTMP\ULOG2.OUT COPY C:\RMVTMP\ULOG2.OUT F:\RMVCMP\ULOG2.OUT > NUL
IF EXIST C:\RMVTMP\ULGSUP.OUT COPY C:\RMVTMP\ULGSUP.OUT F:\RMVCMP\ULGSUP.OUT > NUL
ECHO === D92 missing path === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\MISSING > F:\RMVCMP\OUT\D92_MISSING_PATH.OUT
ECHO === D93 /FILES and /SUBDIRS together === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\GRANT R F FOR F:\RMVTEST\OPTBOTH TO USER MARIO > F:\RMVCMP\SETUP\S93_DIR.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\OPTBOTH\SUB TO USER MARIO > F:\RMVCMP\SETUP\S93_SUB.OUT
\NPUBLIC\GRANT R F FOR F:\RMVTEST\OPTBOTH\O.TXT TO USER MARIO /FILES > F:\RMVCMP\SETUP\S93_FILE.OUT
\NPUBLIC\REMOVE USER MARIO FROM F:\RMVTEST\OPTBOTH /FILES /SUBDIRS > F:\RMVCMP\OUT\D93_BOTH_OPTS.OUT
ECHO === D94 bad grammar / missing name === >> F:\RMVCMP\RUN.LOG
\NPUBLIC\REMOVE USER FROM F:\RMVTEST\ONE > F:\RMVCMP\OUT\D94_BAD_GRAMMAR.OUT
ECHO === User-context compare UNOV vs UPUB === > F:\RMVCMP\UCOMP.LOG
ECHO Comparing G10_R >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G10_R.OUT F:\RMVCMP\UPUB\G10_R.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G11_W >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G11_W.OUT F:\RMVCMP\UPUB\G11_W.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G12_C >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G12_C.OUT F:\RMVCMP\UPUB\G12_C.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G13_E >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G13_E.OUT F:\RMVCMP\UPUB\G13_E.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G14_M >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G14_M.OUT F:\RMVCMP\UPUB\G14_M.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G15_F >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G15_F.OUT F:\RMVCMP\UPUB\G15_F.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G16_A >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G16_A.OUT F:\RMVCMP\UPUB\G16_A.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G17_S >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G17_S.OUT F:\RMVCMP\UPUB\G17_S.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G20_RF >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G20_RF.OUT F:\RMVCMP\UPUB\G20_RF.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G21_RW >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G21_RW.OUT F:\RMVCMP\UPUB\G21_RW.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G22_RWC >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G22_RWC.OUT F:\RMVCMP\UPUB\G22_RWC.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G23_RWCE >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G23_RWCE.OUT F:\RMVCMP\UPUB\G23_RWCE.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G24_RAL >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G24_RAL.OUT F:\RMVCMP\UPUB\G24_RAL.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G25_SAL >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G25_SAL.OUT F:\RMVCMP\UPUB\G25_SAL.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G26_ALL >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G26_ALL.OUT F:\RMVCMP\UPUB\G26_ALL.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G27_N >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G27_N.OUT F:\RMVCMP\UPUB\G27_N.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G30_RE >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G30_RE.OUT F:\RMVCMP\UPUB\G30_RE.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G31_RWF >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G31_RWF.OUT F:\RMVCMP\UPUB\G31_RWF.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G32_RCM >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G32_RCM.OUT F:\RMVCMP\UPUB\G32_RCM.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G33_RFA >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G33_RFA.OUT F:\RMVCMP\UPUB\G33_RFA.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G34_WCM >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G34_WCM.OUT F:\RMVCMP\UPUB\G34_WCM.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G35_EMF >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G35_EMF.OUT F:\RMVCMP\UPUB\G35_EMF.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G36_RMF >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G36_RMF.OUT F:\RMVCMP\UPUB\G36_RMF.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G37_REMA >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G37_REMA.OUT F:\RMVCMP\UPUB\G37_REMA.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G38_SR >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G38_SR.OUT F:\RMVCMP\UPUB\G38_SR.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G39_SRF >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G39_SRF.OUT F:\RMVCMP\UPUB\G39_SRF.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing G40_SWCM >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\G40_SWCM.OUT F:\RMVCMP\UPUB\G40_SWCM.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing F10_R >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\F10_R.OUT F:\RMVCMP\UPUB\F10_R.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing F11_RF >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\F11_RF.OUT F:\RMVCMP\UPUB\F11_RF.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing F12_RAL >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\F12_RAL.OUT F:\RMVCMP\UPUB\F12_RAL.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing F13_ALL >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\F13_ALL.OUT F:\RMVCMP\UPUB\F13_ALL.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing F14_N >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\F14_N.OUT F:\RMVCMP\UPUB\F14_N.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing F15_S >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\F15_S.OUT F:\RMVCMP\UPUB\F15_S.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing F16_SAL >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\F16_SAL.OUT F:\RMVCMP\UPUB\F16_SAL.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing S10_R >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\S10_R.OUT F:\RMVCMP\UPUB\S10_R.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing S11_RWC >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\S11_RWC.OUT F:\RMVCMP\UPUB\S11_RWC.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing S12_ALL >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\S12_ALL.OUT F:\RMVCMP\UPUB\S12_ALL.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO Comparing S13_SAL >> F:\RMVCMP\UCOMP.LOG
FC F:\RMVCMP\UNOV\S13_SAL.OUT F:\RMVCMP\UPUB\S13_SAL.OUT >> F:\RMVCMP\UCOMP.LOG
ECHO === SUMMARY === > F:\RMVCMP\SUMMARY.TXT
ECHO RMVSTA REMOVE baseline finished. >> F:\RMVCMP\SUMMARY.TXT
ECHO. >> F:\RMVCMP\SUMMARY.TXT
ECHO Expected coverage: >> F:\RMVCMP\SUMMARY.TXT
ECHO - D10-D11 capture normal directory trustee removal syntax. >> F:\RMVCMP\SUMMARY.TXT
ECHO - D20 captures /SUBDIRS behavior with trustees on start and child dirs. >> F:\RMVCMP\SUMMARY.TXT
ECHO - D21-D22 capture /FILES behavior for explicit file and directory file set. >> F:\RMVCMP\SUMMARY.TXT
ECHO - D30 captures relative path behavior with absolute \NPUBLIC\REMOVE invocation. >> F:\RMVCMP\SUMMARY.TXT
ECHO - D90-D94 capture error and grammar cases. >> F:\RMVCMP\SUMMARY.TXT
ECHO RMVSTA REMOVE comparison finished. >> F:\RMVCMP\SUMMARY.TXT
ECHO. >> F:\RMVCMP\SUMMARY.TXT
ECHO Direct mode compares NPUBLIC REMOVE against PUBLIC REMOVE. >> F:\RMVCMP\SUMMARY.TXT
ECHO User-context mode logs in as NOPASSUSER and compares RIGHTS output after PUBLIC REMOVE. >> F:\RMVCMP\SUMMARY.TXT
ECHO Optional: RMVZIP ausfuehren. >> F:\RMVCMP\SUMMARY.TXT
ECHO RMVSTA fertig.
ECHO RMVSTA PART2 fertig.
ECHO Ergebnisse liegen in F:\RMVCMP
ECHO Optional: RMVZIP ausfuehren.
GOTO END
:NEEDPWD
ECHO ERROR: LGNTPWD ist nicht gesetzt.
ECHO Fuer den automatischen REMOVE/NOPASSUSER-Test zuerst setzen, z.B.:
ECHO SET LGNTPWD=dein-supervisor-passwort
ECHO Danach starten:
ECHO F:\RMVSTA
ECHO Es wurde kein DLYSTRT installiert und kein Test gestartet.
:END

View File

@@ -10,12 +10,13 @@ IF EXIST RMVSTA.ZIP DEL RMVSTA.ZIP
IF EXIST ZIP.LOG DEL ZIP.LOG
ECHO Creating RMVSTA.ZIP > ZIP.LOG
ZIP -r RMVSTA.ZIP RUN.LOG SUMMARY.TXT OUT SETUP >> ZIP.LOG
ZIP -r RMVSTA.ZIP RUN.LOG SUMMARY.TXT COMPARE.LOG UCOMP.LOG HELPER.TXT ULOG1.OUT ULOGIN.OUT ULOG2.OUT ULGSUP.OUT OUT PUBOUT SETUP UNOV UPUB 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 \RMVTEST\NUL DELTREE /Y \RMVTEST >> ZIP.LOG
IF EXIST C:\RMVTMP\NUL DELTREE /Y C:\RMVTMP >> ZIP.LOG
CD \
ECHO.
ECHO ZIP step finished.