From 7117bfff683c015a0a545116c944cee06544ef5e Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Mon, 25 May 2026 08:49:47 +0200 Subject: [PATCH] dosutils: add Novell-style NDIR listing tool Add an initial Novell-style NDIR implementation for the DOS utilities. The new tool supports basic DOS namespace directory listings using _dos_findfirst/_dos_findnext, including wildcard paths, current-directory listing, files-only and directories-only modes, recursive /SUB listings, continuous output and Novell-style help text. NDIR separates file and directory output into Novell-like sections, prints long NetWare-style attribute brackets, and reports both file bytes and allocated bytes in blocks using a simple per-file 4 KiB block approximation for the initial implementation. Add initial /RIGHTS support. The rights format displays rights columns for files and directories, obtains effective rights through Client32 NCP87, and falls back to the older directory-handle effective-rights path when needed. For now the inherited-rights column uses the effective rights value until a separate inherited-rights mask is available. Add initial /DATES support with a Novell-style date column layout showing Last Updated, Last Archived, Accessed and Created/Copied fields. The initial implementation uses the DOS findfirst update timestamp for the available date values and placeholder archive/access values until full NetWare namespace date fields are exposed. Add /SHORT and /BRIEF as compact output modes for recursive listings and manual testing. These modes keep the useful values while suppressing the large Novell-style section headers and empty recursive sections. Wire NDIR into the multicall dispatcher, CMake build and install list, and document the supported command forms in the README. Owner display, true inherited-right masks, full namespace date fields, sorting and restrictions remain future work. --- CMakeLists.txt | 2 + README.md | 49 ++++ ndir.c | 729 +++++++++++++++++++++++++++++++++++++++++++++++++ net.c | 1 + net.exe | Bin 70486 -> 102160 bytes net.h | 1 + 6 files changed, 782 insertions(+) create mode 100644 ndir.c diff --git a/CMakeLists.txt b/CMakeLists.txt index b6935d5..9111825 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,7 @@ set(MARS_DOSUTILS_NEW_ONLY_TOOLS grant revoke remove + ndir ) if(MARS_NWE_BUILD_DOSUTILS) @@ -57,6 +58,7 @@ if(MARS_NWE_BUILD_DOSUTILS) login.c map.c slist.c + ndir.c flag.c flagdir.c rights.c diff --git a/README.md b/README.md index 1085da6..e5d54cd 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ Still to validate or continue: - Scripted session setup through command files - External program execution via `SPAWN` and `EXEC` - Server listing through `SLIST` +- Directory listing through `NDIR` - File attribute management through `FLAG` - Directory attribute management through `FLAGDIR` - Effective rights display through `RIGHTS` @@ -70,6 +71,7 @@ The current command dispatcher includes these built-ins: - `CAPTURE` - `ENDCAP` - `SLIST` +- `NDIR` - `FLAG` - `FLAGDIR` - `RIGHTS` @@ -492,6 +494,52 @@ Trustee "MARIO" removed from 2 files. ``` + +### `NDIR` + +List files and directories in a NetWare-style format. + +Typical usage: + +```text +NDIR [path] [/option...] +``` + +The implementation supports basic DOS namespace listings, wildcards, +paging, first rights and dates displays, and these options: + +- `/FO` or `FO` for files only +- `/DO` or `DO` for directories only +- `/CONTINUOUS`, `/CONTINUE`, or `/C` for continuous output +- `/RIGHTS` for a first effective-rights display +- `/DATES` for Novell-style date columns with current DOS timestamp data +- `/SUB` or `/SUBDIRECTORIES` for recursive directory listings +- `/SHORT` or `/BRIEF` for compact output, useful with `/SUB` +- `/HELP` for Novell-style usage text + +Examples: + +```text +NDIR +NDIR *.EXE +NDIR PUBLIC\*.EXE +NDIR PUBLIC /DO +NDIR PUBLIC\*.EXE /FO /CONTINUOUS +NDIR PUBLIC /RIGHTS +NDIR PUBLIC /DATES +NDIR PUBLIC /SUB +NDIR PUBLIC /SUB /SHORT +NDIR PUBLIC /DO +``` + +The first version intentionally focuses on the common listing path. More +advanced Novell NDIR features such as sorting and restrictions are accepted +only as future compatibility points or will be implemented in later revisions. The `/RIGHTS` display currently uses effective rights for both +rights columns until inherited-right masks are exposed. The `/DATES` display +uses the DOS update timestamp and placeholder values for archive/access fields +until full NetWare namespace date fields are available. + + ### `DEBUG` Set mars_nwe debug levels for selected server-side modules. @@ -604,6 +652,7 @@ The install rules deploy the same binary multiple times into `SYS/public`, inclu - `mapdel.exe` - `logout.exe` - `slist.exe` +- `ndir.exe` - `flag.exe` - `flagdir.exe` - `rights.exe` diff --git a/ndir.c b/ndir.c new file mode 100644 index 0000000..1ee07c6 --- /dev/null +++ b/ndir.c @@ -0,0 +1,729 @@ +/* ndir.c - first Novell NDIR-like directory listing utility */ + +#include "net.h" +#include "c32ncp.h" +#include +#include +#include + +#ifndef S_IFDIR +#define S_IFDIR 0040000 +#endif + +#ifndef _A_NORMAL +#define _A_NORMAL 0x00 +#endif + +#ifndef _A_RDONLY +#define _A_RDONLY 0x01 +#endif +#ifndef _A_HIDDEN +#define _A_HIDDEN 0x02 +#endif +#ifndef _A_SYSTEM +#define _A_SYSTEM 0x04 +#endif +#ifndef _A_SUBDIR +#define _A_SUBDIR 0x10 +#endif +#ifndef _A_ARCH +#define _A_ARCH 0x20 +#endif + +#define NDIR_OPT_FILES_ONLY 0x0001 +#define NDIR_OPT_DIRS_ONLY 0x0002 +#define NDIR_OPT_RIGHTS 0x0004 +#define NDIR_OPT_DATES 0x0008 +#define NDIR_OPT_SUB 0x0010 +#define NDIR_OPT_SHORT 0x0020 + +/* NCP effective-rights bits returned by NCP87 subfunction 29. */ +#define NDIR_NCP_RIGHT_READ 0x0001 +#define NDIR_NCP_RIGHT_WRITE 0x0002 +#define NDIR_NCP_RIGHT_CREATE 0x0008 +#define NDIR_NCP_RIGHT_DELETE 0x0010 +#define NDIR_NCP_RIGHT_OWNER 0x0020 +#define NDIR_NCP_RIGHT_SEARCH 0x0040 +#define NDIR_NCP_RIGHT_MODIFY 0x0080 +#define NDIR_NCP_RIGHT_SUPER 0x0100 + +static void ndir_dos_date(unsigned date, char *out); + +#define NDIR_OLD_RIGHT_S 0x01 +#define NDIR_OLD_RIGHT_R 0x02 +#define NDIR_OLD_RIGHT_W 0x04 +#define NDIR_OLD_RIGHT_C 0x08 +#define NDIR_OLD_RIGHT_E 0x10 +#define NDIR_OLD_RIGHT_M 0x20 +#define NDIR_OLD_RIGHT_F 0x40 +#define NDIR_OLD_RIGHT_A 0x80 + + +static void ndir_usage(void) +{ + fprintf(stdout, "usage: NDIR [path] [/option...]\n"); + fprintf(stdout, "path: [path] [filename] [,filename, ...] (up to 16 in chain)\n"); + fprintf(stdout, "options: [format], [flag], [sortspec], [restriction], [FO] (files only),\n"); + fprintf(stdout, " [DO] (directories only), [SUBdirectories], [Continuous], [HELP]\n"); + fprintf(stdout, "\n"); + fprintf(stdout, "format: DATES, RIGHTS, MACintosh, LONGnames\n"); + fprintf(stdout, "\n"); + fprintf(stdout, "flag: [NOT] RO, S, A, X, H, SY, T, I, P, RA, WA, CI, DI, RI\n"); + fprintf(stdout, "\n"); + fprintf(stdout, "sortspec: [REVerse] SORT [OWner], [SIze], [UPdate], [CReate],\n"); + fprintf(stdout, " [ACcess], [ARchive], [UNsorted]\n"); + fprintf(stdout, "\n"); + fprintf(stdout, "restriction: OWner \n"); + fprintf(stdout, " SIze \n"); + fprintf(stdout, " UPdate \n"); + fprintf(stdout, " CReate \n"); + fprintf(stdout, " ACcess \n"); + fprintf(stdout, " ARchive \n"); + fprintf(stdout, "\n"); + fprintf(stdout, "operator: [NOT] Less than, GReater than,\n"); + fprintf(stdout, " EQual to, BEfore, AFter\n"); + fprintf(stdout, "\n"); + fprintf(stdout, "To search filenames equivalent to any of the capitalized KEYWORD options\n"); + fprintf(stdout, "shown above, the filename must be preceded by a drive letter or path.\n"); +} + +static int ndir_is_help(char *s) +{ + if (!s) return(0); + return(tool_is_help_arg(s) || tool_strsame(s, "/HELP") || + tool_strsame(s, "-HELP") || tool_strsame(s, "HELP")); +} + +static int ndir_is_files_only(char *s) +{ + if (!s) return(0); + return(tool_strsame(s, "/FO") || tool_strsame(s, "-FO") || + tool_strsame(s, "/FILESONLY") || tool_strsame(s, "-FILESONLY") || + tool_strsame(s, "FO") || tool_strsame(s, "FILESONLY")); +} + +static int ndir_is_dirs_only(char *s) +{ + if (!s) return(0); + return(tool_strsame(s, "/DO") || tool_strsame(s, "-DO") || + tool_strsame(s, "/DIRSONLY") || tool_strsame(s, "-DIRSONLY") || + tool_strsame(s, "/DIRECTORIES") || tool_strsame(s, "-DIRECTORIES") || + tool_strsame(s, "DO") || tool_strsame(s, "DIRSONLY") || + tool_strsame(s, "DIRECTORIES")); +} + +static int ndir_is_continuous(char *s) +{ + if (!s) return(0); + return(tool_strsame(s, "/CONTINUOUS") || tool_strsame(s, "-CONTINUOUS") || + tool_strsame(s, "/CONTINUE") || tool_strsame(s, "-CONTINUE") || + tool_strsame(s, "/C") || tool_strsame(s, "-C") || + tool_strsame(s, "CONTINUOUS") || tool_strsame(s, "CONTINUE")); +} + +static int ndir_is_rights(char *s) +{ + if (!s) return(0); + return(tool_strsame(s, "/RIGHTS") || tool_strsame(s, "-RIGHTS") || + tool_strsame(s, "RIGHTS")); +} + +static int ndir_is_dates(char *s) +{ + if (!s) return(0); + return(tool_strsame(s, "/DATES") || tool_strsame(s, "-DATES") || + tool_strsame(s, "DATES")); +} + +static int ndir_is_subdirs(char *s) +{ + if (!s) return(0); + return(tool_strsame(s, "/SUB") || tool_strsame(s, "-SUB") || + tool_strsame(s, "/SUBDIRECTORIES") || tool_strsame(s, "-SUBDIRECTORIES") || + tool_strsame(s, "SUB") || tool_strsame(s, "SUBDIRECTORIES")); +} + +static int ndir_is_short(char *s) +{ + if (!s) return(0); + return(tool_strsame(s, "/SHORT") || tool_strsame(s, "-SHORT") || + tool_strsame(s, "/BRIEF") || tool_strsame(s, "-BRIEF") || + tool_strsame(s, "SHORT") || tool_strsame(s, "BRIEF")); +} + +static int ndir_is_accepted_stub(char *s) +{ + if (!s) return(0); + + /* + * Keep this version tolerant of common NDIR format/options so users + * can compare command lines while unimplemented formats remain harmless. + */ + return(0); +} + +static int ndir_path_is_dir(char *path) +{ + struct stat st; + + if (!path || !*path || tool_is_current_path(path)) + return(1); + + if (stat(path, &st) == 0) { + if (st.st_mode & S_IFDIR) + return(1); + } + + return(0); +} + +static void ndir_split_spec(char *spec, char *dir, char *pat) +{ + if (!spec || !*spec || tool_is_current_path(spec)) { + strmaxcpy(dir, ".", 259); + strmaxcpy(pat, "*.*", 259); + return; + } + + if (!tool_has_wildcards(spec) && ndir_path_is_dir(spec)) { + strmaxcpy(dir, spec, 259); + strmaxcpy(pat, "*.*", 259); + return; + } + + tool_parent_pattern(dir, pat, spec, 260, 260); +} + +static void ndir_dos_date(unsigned date, char *out) +{ + int year; + int month; + int day; + + year = ((date >> 9) & 0x7f) + 1980; + month = (date >> 5) & 0x0f; + day = date & 0x1f; + + sprintf(out, "%02d-%02d-%02d", month, day, year % 100); +} + +static void ndir_dos_datetime(unsigned date, unsigned time, char *out) +{ + int year; + int month; + int day; + int hour; + int minute; + char ap; + + year = ((date >> 9) & 0x7f) + 1980; + month = (date >> 5) & 0x0f; + day = date & 0x1f; + hour = (time >> 11) & 0x1f; + minute = (time >> 5) & 0x3f; + + ap = (hour >= 12) ? 'p' : 'a'; + if (hour == 0) + hour = 12; + else if (hour > 12) + hour -= 12; + + sprintf(out, "%02d-%02d-%02d %2d:%02d%c", + month, day, year % 100, hour, minute, ap); +} + +static unsigned long ndir_blocks_for_size(unsigned long size) +{ + /* + * Novell NDIR reports allocated bytes/blocks. For this first DOS + * findfirst/findnext implementation, approximate with 4 KiB allocation + * units so small test files match the observed Novell output more closely. + */ + if (size == 0L) + return(0L); + + return((size + 4095L) / 4096L); +} + +static void ndir_flags(unsigned attr, char *out) +{ + /* + * Keep the first positions close to Novell's default NDIR display, + * for example [RW-A------------]. + */ + out[0] = '['; + out[1] = 'R'; + out[2] = (attr & _A_RDONLY) ? 'O' : 'W'; + out[3] = (attr & _A_SYSTEM) ? 'S' : '-'; + out[4] = (attr & _A_ARCH) ? 'A' : '-'; + out[5] = (attr & _A_HIDDEN) ? 'H' : '-'; + memset(out + 6, '-', 11); + out[17] = ']'; + out[18] = '\0'; +} + +static void ndir_parent_path(char *dst, char *src, int max) +{ + char tmp[260]; + char *p; + + tool_upcopy(tmp, src, sizeof(tmp)); + p = strrchr(tmp, '\\'); + if (!p) p = strrchr(tmp, ':'); + + if (p) { + if (*p == ':') { + p[1] = '\0'; + } else { + *p = '\0'; + } + strmaxcpy(dst, tmp, max - 1); + } else { + dst[0] = '\0'; + } +} + +static void ndir_old_rights_string(uint8 old_rights, char *out) +{ + out[0] = (old_rights & NDIR_OLD_RIGHT_S) ? 'S' : '-'; + out[1] = (old_rights & NDIR_OLD_RIGHT_R) ? 'R' : '-'; + out[2] = (old_rights & NDIR_OLD_RIGHT_W) ? 'W' : '-'; + out[3] = (old_rights & NDIR_OLD_RIGHT_C) ? 'C' : '-'; + out[4] = (old_rights & NDIR_OLD_RIGHT_E) ? 'E' : '-'; + out[5] = (old_rights & NDIR_OLD_RIGHT_M) ? 'M' : '-'; + out[6] = (old_rights & NDIR_OLD_RIGHT_F) ? 'F' : '-'; + out[7] = (old_rights & NDIR_OLD_RIGHT_A) ? 'A' : '-'; + out[8] = '\0'; +} + +static void ndir_rights_string(uint16 ncp_rights, char *out) +{ + out[0] = (ncp_rights & NDIR_NCP_RIGHT_SUPER) ? 'S' : '-'; + out[1] = (ncp_rights & NDIR_NCP_RIGHT_READ) ? 'R' : '-'; + out[2] = (ncp_rights & NDIR_NCP_RIGHT_WRITE) ? 'W' : '-'; + out[3] = (ncp_rights & NDIR_NCP_RIGHT_CREATE) ? 'C' : '-'; + out[4] = (ncp_rights & NDIR_NCP_RIGHT_DELETE) ? 'E' : '-'; + out[5] = (ncp_rights & NDIR_NCP_RIGHT_MODIFY) ? 'M' : '-'; + out[6] = (ncp_rights & NDIR_NCP_RIGHT_SEARCH) ? 'F' : '-'; + out[7] = (ncp_rights & NDIR_NCP_RIGHT_OWNER) ? 'A' : '-'; + out[8] = '\0'; +} + +static void ndir_effective_rights(char *path, char *out) +{ + uint8 connid = 0; + uint8 dhandle = 0; + uint8 eff_old = 0; + uint16 ncp_rights = 0; + char usepath[260]; + int newhandle; + + strcpy(out, "--------"); + + if (tool_current_dhandle(&connid, &dhandle)) + return; + + /* + * Prefer Client32 NCP87 effective-rights. If that fails for a listed + * entry, fall back to the older directory-handle effective-rights path + * that RIGHTS also uses. + */ + if (!c32_ncp87_get_effective_rights(tool_is_current_path(path) ? "" : path, + (uint16)dhandle, + &ncp_rights, + NULL, NULL, NULL)) { + ndir_rights_string(ncp_rights, out); + return; + } + + ndir_parent_path(usepath, path, sizeof(usepath)); + newhandle = alloc_temp_dir_handle(dhandle, usepath, 0, &eff_old); + if (newhandle >= 0) { + dealloc_dir_handle(newhandle); + ndir_old_rights_string(eff_old, out); + return; + } + + if (usepath[0]) { + int subdir = 1; + int r = ncp_16_02(dhandle, (uint8 *)usepath, &subdir, + NULL, NULL, NULL); + if (r >= 0) + ndir_old_rights_string((uint8)r, out); + } else { + ndir_old_rights_string(0xff, out); + } +} + +static int ndir_is_dot_dir(char *name) +{ + if (!name) return(0); + if (name[0] == '.' && name[1] == '\0') return(1); + if (name[0] == '.' && name[1] == '.' && name[2] == '\0') return(1); + return(0); +} + +static void ndir_print_file(char *dir, struct find_t *ff, int options, + int *line_count, int *continuous) +{ + char dt[24]; + char d[12]; + char fl[20]; /* [RW-A------------] plus NUL */ + char path[260]; + char eff[10]; + + ndir_dos_datetime(ff->wr_date, ff->wr_time, dt); + ndir_dos_date(ff->wr_date, d); + ndir_flags(ff->attrib, fl); + + if (options & NDIR_OPT_RIGHTS) { + tool_join_path(path, dir, ff->name, sizeof(path)); + ndir_effective_rights(path, eff); + /* + * We do not have the inherited-rights mask yet. Use the effective + * rights in both columns for this first /RIGHTS implementation. + */ + fprintf(stdout, "%-16.16s %-18.18s [%8.8s] [%8.8s]\n", + ff->name, fl, eff, eff); + } else if (options & NDIR_OPT_DATES) { + /* + * DOS findfirst gives us the update timestamp only. Keep the Novell + * /DATES layout and use placeholders for archive/access data until + * full NetWare namespace date fields are available. + */ + fprintf(stdout, "%-16.16s %-17.17s 0-00-00 0:00 A %-8.8s %-17.17s\n", + ff->name, dt, d, dt); + } else { + fprintf(stdout, "%-16.16s %12lu %-17.17s %-18.18s\n", + ff->name, (unsigned long)ff->size, dt, fl); + } + + tool_page_line(line_count, continuous); +} + +static void ndir_print_dir(char *dir, struct find_t *ff, int options, + int *line_count, int *continuous) +{ + char dt[24]; + char path[260]; + char eff[10]; + + ndir_dos_datetime(ff->wr_date, ff->wr_time, dt); + + if (options & (NDIR_OPT_RIGHTS | NDIR_OPT_DIRS_ONLY)) { + tool_join_path(path, dir, ff->name, sizeof(path)); + ndir_effective_rights(path, eff); + fprintf(stdout, "%-16.16s [%8.8s] [%8.8s] %-17.17s\n", + ff->name, eff, eff, dt); + } else { + fprintf(stdout, "%-16.16s %-17.17s\n", ff->name, dt); + } + + tool_page_line(line_count, continuous); +} + +static int ndir_scan_files(char *dir, char *search, int options, + int *line_count, int *continuous, + int *file_count, unsigned long *total_bytes, + unsigned long *total_blocks) +{ + struct find_t ff; + int rc; + int shown = 0; + + rc = _dos_findfirst(search, _A_NORMAL | _A_RDONLY | _A_HIDDEN | + _A_SYSTEM | _A_ARCH | _A_SUBDIR, &ff); + while (rc == 0) { + if (!(ff.attrib & _A_SUBDIR)) { + ndir_print_file(dir, &ff, options, line_count, continuous); + (*file_count)++; + *total_bytes += (unsigned long)ff.size; + *total_blocks += ndir_blocks_for_size((unsigned long)ff.size); + shown = 1; + } + + rc = _dos_findnext(&ff); + } + + return(shown); +} + +static int ndir_scan_dirs(char *dir, char *search, int options, + int *line_count, int *continuous, + int *dir_count) +{ + struct find_t ff; + int rc; + int shown = 0; + + rc = _dos_findfirst(search, _A_NORMAL | _A_RDONLY | _A_HIDDEN | + _A_SYSTEM | _A_ARCH | _A_SUBDIR, &ff); + while (rc == 0) { + if ((ff.attrib & _A_SUBDIR) && !ndir_is_dot_dir(ff.name)) { + ndir_print_dir(dir, &ff, options, line_count, continuous); + (*dir_count)++; + shown = 1; + } + + rc = _dos_findnext(&ff); + } + + return(shown); +} + +static int ndir_list_one(char *spec, int options, int *continuous) +{ + char dir[260]; + char pat[260]; + char search[260]; + char display[300]; + int got = 0; + int files_shown = 0; + int dirs_shown = 0; + int file_count = 0; + int dir_count = 0; + unsigned long total_bytes = 0L; + unsigned long total_blocks = 0L; + int line_count = 0; + + ndir_split_spec(spec, dir, pat); + tool_join_path(search, dir, pat, sizeof(search)); + + tool_header_path(display, dir, sizeof(display)); + fprintf(stdout, "%s\n", display); + tool_page_line(&line_count, continuous); + + if (!(options & NDIR_OPT_DIRS_ONLY)) { + if (!(options & NDIR_OPT_SHORT)) { + if (options & NDIR_OPT_RIGHTS) { + fprintf(stdout, "Files: Flags Rights Rights Owner\n"); + fprintf(stdout, "---------------- ------------------ ----------- ----------- --------\n"); + } else if (options & NDIR_OPT_DATES) { + fprintf(stdout, "Files: Last Updated Last Archived * Accessed Created/Copied\n"); + fprintf(stdout, "---------------- ----------------- ------------- -- -------- -----------------\n"); + } else { + fprintf(stdout, "Files: Size Last Updated Flags Owner\n"); + fprintf(stdout, "---------------- ---------------- ----------------- ------------------ --------\n"); + } + tool_page_line(&line_count, continuous); + tool_page_line(&line_count, continuous); + } + + files_shown = ndir_scan_files(dir, search, options, &line_count, + continuous, &file_count, + &total_bytes, &total_blocks); + if (files_shown) + got = 1; + } + + if (!(options & NDIR_OPT_FILES_ONLY)) { + if (!(options & NDIR_OPT_DIRS_ONLY) && !(options & NDIR_OPT_SHORT)) + fprintf(stdout, "\n"); + + if (!(options & NDIR_OPT_SHORT)) { + if (options & (NDIR_OPT_RIGHTS | NDIR_OPT_DIRS_ONLY)) { + fprintf(stdout, "Directories: Rights Rights Owner Created/Copied\n"); + fprintf(stdout, "---------------- ----------- ----------- ----------- -----------------\n"); + } else { + fprintf(stdout, "Directories:\n"); + fprintf(stdout, "----------------\n"); + } + tool_page_line(&line_count, continuous); + tool_page_line(&line_count, continuous); + } + + dirs_shown = ndir_scan_dirs(dir, search, options, &line_count, + continuous, &dir_count); + if (dirs_shown) + got = 1; + } + + if (!got && (options & NDIR_OPT_DIRS_ONLY) && !(options & NDIR_OPT_SHORT)) + fprintf(stdout, "No files of given specification found or directory is empty.\n"); + + if (!(options & NDIR_OPT_DIRS_ONLY)) { + if (options & NDIR_OPT_SHORT) { + if (file_count) + fprintf(stdout, " %lu bytes, %d files, %lu blocks\n", + total_bytes, file_count, total_blocks); + } else { + fprintf(stdout, "\n"); + fprintf(stdout, "%12lu bytes in %5d files\n", total_bytes, file_count); + fprintf(stdout, "%12lu bytes in %5lu blocks\n", total_blocks * 4096L, + total_blocks); + } + } + + return(got ? 0 : 1); +} + + +static int ndir_spec_has_output(char *spec, int options) +{ + struct find_t ff; + char dir[260]; + char pat[260]; + char search[260]; + int rc; + + ndir_split_spec(spec, dir, pat); + tool_join_path(search, dir, pat, sizeof(search)); + + rc = _dos_findfirst(search, _A_NORMAL | _A_RDONLY | _A_HIDDEN | + _A_SYSTEM | _A_ARCH | _A_SUBDIR, &ff); + while (rc == 0) { + if (ff.attrib & _A_SUBDIR) { + if (!ndir_is_dot_dir(ff.name) && !(options & NDIR_OPT_FILES_ONLY)) + return(1); + } else { + if (!(options & NDIR_OPT_DIRS_ONLY)) + return(1); + } + + rc = _dos_findnext(&ff); + } + + return(0); +} + + +static int ndir_list_subdirs(char *dir, char *pattern, int options, + int *continuous) +{ + struct find_t ff; + char search[260]; + char subdir[260]; + char subspec[260]; + int rc; + int result = 0; + int had_any = 0; + + tool_join_path(search, dir, "*.*", sizeof(search)); + + rc = _dos_findfirst(search, _A_NORMAL | _A_RDONLY | _A_HIDDEN | + _A_SYSTEM | _A_ARCH | _A_SUBDIR, &ff); + while (rc == 0) { + if ((ff.attrib & _A_SUBDIR) && !ndir_is_dot_dir(ff.name)) { + tool_join_path(subdir, dir, ff.name, sizeof(subdir)); + tool_join_path(subspec, subdir, pattern, sizeof(subspec)); + + if (!(options & NDIR_OPT_SHORT) || + ndir_spec_has_output(subspec, options & ~NDIR_OPT_SUB)) { + fprintf(stdout, "\n"); + if (ndir_list_one(subspec, options & ~NDIR_OPT_SUB, continuous)) + result = 1; + } + + had_any = 1; + if (ndir_list_subdirs(subdir, pattern, options, continuous)) + result = 1; + } + + rc = _dos_findnext(&ff); + } + + if (!had_any) + return(result); + + return(result); +} + +static int ndir_list(char *spec, int options, int *continuous) +{ + char dir[260]; + char pat[260]; + int result; + + result = ndir_list_one(spec, options & ~NDIR_OPT_SUB, continuous); + + if (!(options & NDIR_OPT_SUB)) + return(result); + + ndir_split_spec(spec, dir, pat); + if (!pat[0]) + strmaxcpy(pat, "*.*", sizeof(pat) - 1); + + return(ndir_list_subdirs(dir, pat, options, continuous) ? 1 : result); +} + +int func_ndir(int argc, char *argv[], int mode) +{ + char *path = "."; + int have_path = 0; + int options = 0; + int continuous = 0; + int i; + + (void)mode; + + if (argc > 1 && ndir_is_help(argv[1])) { + ndir_usage(); + return(0); + } + + for (i = 1; i < argc; i++) { + if (ndir_is_help(argv[i])) { + ndir_usage(); + return(0); + } + + if (ndir_is_files_only(argv[i])) { + options |= NDIR_OPT_FILES_ONLY; + continue; + } + + if (ndir_is_dirs_only(argv[i])) { + options |= NDIR_OPT_DIRS_ONLY; + continue; + } + + if (ndir_is_continuous(argv[i])) { + continuous = 1; + continue; + } + + if (ndir_is_rights(argv[i])) { + options |= NDIR_OPT_RIGHTS; + continue; + } + + if (ndir_is_dates(argv[i])) { + options |= NDIR_OPT_DATES; + continue; + } + + if (ndir_is_subdirs(argv[i])) { + options |= NDIR_OPT_SUB; + continue; + } + + if (ndir_is_short(argv[i])) { + options |= NDIR_OPT_SHORT; + continue; + } + + if (ndir_is_accepted_stub(argv[i])) { + continue; + } + + if (tool_is_option(argv[i])) { + fprintf(stdout, "Type \"ndir /help\" on the command line for usage information.\n"); + return(1); + } + + if (have_path) { + fprintf(stdout, "Too many filenames in chain.\n"); + return(1); + } + + path = argv[i]; + have_path = 1; + } + + if ((options & NDIR_OPT_FILES_ONLY) && (options & NDIR_OPT_DIRS_ONLY)) { + fprintf(stdout, "No files of given specification found or directory is empty.\n"); + return(1); + } + + return(ndir_list(path, options, &continuous)); +} diff --git a/net.c b/net.c index cbee6a3..e015d00 100644 --- a/net.c +++ b/net.c @@ -39,6 +39,7 @@ static struct s_net_functions { {"GRANT", "grant trustee rights", func_grant , 0}, {"REVOKE", "revoke trustee rights", func_revoke , 0}, {"REMOVE", "remove trustee", func_remove , 0}, +{"NDIR", "list directory contents", func_ndir , 0}, {"RIGHTS", "display effective file/directory rights",func_rights, 0}, {"SLIST", "list servers", func_slist , 0}, {"PASSWD", "change password", func_passwd , 0}, diff --git a/net.exe b/net.exe index e7db07f5a2633e6b04352e824352e3c87e12be85..03f67164c1efc9a4411612576de710b9eee468fb 100755 GIT binary patch literal 102160 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 CIbRW~&ti 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 delta 30398 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 diff --git a/net.h b/net.h index d90038a..bd7e9ee 100644 --- a/net.h +++ b/net.h @@ -263,6 +263,7 @@ extern int read_command_file(char *fstr); /* slist.c */ extern int func_slist (int argc, char *argv[], int mode); +extern int func_ndir (int argc, char *argv[], int mode); /* nwdebug.c */ extern int func_debug (int argc, char *argv[], int mode);