From cbb9431dc217153aaef0c66d70a350adf76d734a Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Wed, 27 May 2020 20:36:11 -0400 Subject: [PATCH] Made command line parsing optional, and turned it off --- sortdir.c | 137 ++++++++++++++++++++++++++++++----------------------- sortdir.po | Bin 143360 -> 143360 bytes 2 files changed, 78 insertions(+), 59 deletions(-) diff --git a/sortdir.c b/sortdir.c index 1b1f8ca..4726f14 100644 --- a/sortdir.c +++ b/sortdir.c @@ -12,6 +12,7 @@ * v0.51 Made buf[] and buf2[] dynamic. * v0.52 Support for aux memory. * v0.53 Auto-sizing of filelist[] to fit available memory. + * v0.54 Make command line argument handling a compile time option. */ //#pragma debug 9 @@ -38,7 +39,8 @@ #define CHECK /* Perform additional integrity checking */ #define SORT /* Enable sorting code */ #undef FREELIST /* Checking of free list */ -#define AUXMEM /* Auxiliary memory support on //e and up */ +#define AUXMEM /* Auxiliary memory support on //e and up */ +#undef CMDLINE /* Command line option parsing */ #define NLEVELS 4 /* Number of nested sorts permitted */ @@ -249,12 +251,14 @@ void sortblocks(uint device); int writedir(uchar device); void freeblocks(void); void interactive(void); -void usage(void); void processdir(uint device, uint blocknum); void checkfreeandused(uchar device); void zeroblock(uchar device, uint blocknum); void zerofreeblocks(uchar device, uint freeblks); +#ifdef CMDLINE +void usage(void); void parseargs(void); +#endif #ifdef AUXMEM @@ -1728,7 +1732,7 @@ void interactive(void) { doverbose = 1; - puts("S O R T D I R v0.53 alpha Use ^ to return to previous question"); + puts("S O R T D I R v0.54 alpha Use ^ to return to previous question"); q1: fputs("\nEnter path (e.g.: /H1) of starting directory> ", stdout); @@ -1832,61 +1836,6 @@ q8: //do_ctime = 0; /* -k ctime option */ } -void usage(void) { - printf("usage: sortdir [-s xxx] [-n x] [-rDwcvVh] path\n\n"); -#if 0 - printf(" Options: -s xxx Directory sort options\n"); - printf(" -n x Filename upper/lower case options\n"); - printf(" -d x Date format conversion options\n"); - printf(" -f x Fix mode\n"); - printf(" -r Recursive descent\n"); - printf(" -D Whole-disk mode (implies -r)\n"); - printf(" -w Enable writing to disk\n"); - printf(" -c Use create time rather than modify time\n"); - printf(" -z Zero free space\n"); - printf(" -v Verbose output\n"); - printf(" -V Verbose debugging output\n"); - printf(" -h This help\n"); - printf("\n"); - printf("-nx: Upper/lower case filenames, where x is:\n"); - printf(" l convert filenames to lower case eg: read.me\n"); - printf(" u convert filenames to upper case eg: READ.ME\n"); - printf(" i convert filenames to initial upper case eg: Read.me\n"); - printf(" c convert filenames to camel case eg: Read.Me\n"); - printf("\n"); - printf("-dx: Date/time on-disk format conversion, where x is:\n"); - printf(" n convert to new (ProDOS 2.5+) format\n"); - printf(" o convert to old (ProDOS 1.0-2.4.2, GSOS) format\n"); - printf("\n"); - printf("-sxxx: Dir sort, where xxx is a list of fields to sort\n"); - printf("on. The sort options are processed left-to-right.\n"); - printf(" n sort by filename ascending\n"); - printf(" N sort by filename descending\n"); - printf(" i sort by filename ascending - case insensitive\n"); - printf(" I sort by filename descending - case insensitive\n"); - printf(" d sort by modify (or create [-c]) date ascending\n"); - printf(" D sort by modify (or create [-c]) date descending\n"); - printf(" t sort by type ascending\n"); - printf(" T sort by type descending\n"); - printf(" f sort folders (directories) to top\n"); - printf(" F sort folders (directories) to bottom\n"); - printf(" b sort by blocks used ascending\n"); - printf(" B sort by blocks used descending\n"); - printf(" e sort by EOF position ascending\n"); - printf(" E sort by EOF position descending\n"); - printf("\n"); - printf("-fx: Fix mode, where x is:\n"); - printf(" ? prompt for each fix\n"); - printf(" n never fix\n"); - printf(" y always fix (be careful!)\n"); - printf("\n"); - printf("e.g.: sortdir -w -s nf .\n"); - printf("Will sort the current directory first by name (ascending),\n"); - printf("then sort directories to the top, and will write the\n"); - printf("sorted directory to disk.\n"); -#endif - err(FATAL, "Usage error"); -} /* * Performs all actions for a single directory @@ -2012,6 +1961,62 @@ void zerofreeblocks(uchar device, uint freeblks) { } #endif +#ifdef CMDLINE + +void usage(void) { + printf("usage: sortdir [-s xxx] [-n x] [-rDwcvVh] path\n\n"); + printf(" Options: -s xxx Directory sort options\n"); + printf(" -n x Filename upper/lower case options\n"); + printf(" -d x Date format conversion options\n"); + printf(" -f x Fix mode\n"); + printf(" -r Recursive descent\n"); + printf(" -D Whole-disk mode (implies -r)\n"); + printf(" -w Enable writing to disk\n"); + printf(" -c Use create time rather than modify time\n"); + printf(" -z Zero free space\n"); + printf(" -v Verbose output\n"); + printf(" -V Verbose debugging output\n"); + printf(" -h This help\n"); + printf("\n"); + printf("-nx: Upper/lower case filenames, where x is:\n"); + printf(" l convert filenames to lower case eg: read.me\n"); + printf(" u convert filenames to upper case eg: READ.ME\n"); + printf(" i convert filenames to initial upper case eg: Read.me\n"); + printf(" c convert filenames to camel case eg: Read.Me\n"); + printf("\n"); + printf("-dx: Date/time on-disk format conversion, where x is:\n"); + printf(" n convert to new (ProDOS 2.5+) format\n"); + printf(" o convert to old (ProDOS 1.0-2.4.2, GSOS) format\n"); + printf("\n"); + printf("-sxxx: Dir sort, where xxx is a list of fields to sort\n"); + printf("on. The sort options are processed left-to-right.\n"); + printf(" n sort by filename ascending\n"); + printf(" N sort by filename descending\n"); + printf(" i sort by filename ascending - case insensitive\n"); + printf(" I sort by filename descending - case insensitive\n"); + printf(" d sort by modify (or create [-c]) date ascending\n"); + printf(" D sort by modify (or create [-c]) date descending\n"); + printf(" t sort by type ascending\n"); + printf(" T sort by type descending\n"); + printf(" f sort folders (directories) to top\n"); + printf(" F sort folders (directories) to bottom\n"); + printf(" b sort by blocks used ascending\n"); + printf(" B sort by blocks used descending\n"); + printf(" e sort by EOF position ascending\n"); + printf(" E sort by EOF position descending\n"); + printf("\n"); + printf("-fx: Fix mode, where x is:\n"); + printf(" ? prompt for each fix\n"); + printf(" n never fix\n"); + printf(" y always fix (be careful!)\n"); + printf("\n"); + printf("e.g.: sortdir -w -s nf .\n"); + printf("Will sort the current directory first by name (ascending),\n"); + printf("then sort directories to the top, and will write the\n"); + printf("sorted directory to disk.\n"); + err(FATAL, "Usage error"); +} + #define MAXNUMARGS 10 int argc; @@ -2041,6 +2046,8 @@ void parseargs() { } } +#endif + //int main(int argc, char *argv[]) { int main() { int opt; @@ -2071,11 +2078,13 @@ int main() { printf("[%u]\n", blk); filelist = (struct fileent*)malloc(sizeof(struct fileent) * blk); +#ifdef CMDLINE parseargs(); +#endif +#ifdef CMDLINE if (argc == 1) interactive(); - else { if (argc < 2) usage(); @@ -2126,12 +2135,22 @@ int main() { if (optind != argc - 1) usage(); } +#else + + interactive(); + +#endif if (((strlen(caseopts) > 0) || (strlen(fixopts) > 0) || (strlen(dateopts) > 0)) && (strlen(sortopts) == 0)) strncpy(sortopts, ".", 1); +#ifdef CMDLINE firstblk(((argc == 1) ? buf : argv[optind]), &dev, &blk); +#else + firstblk(buf, &dev, &blk); +#endif + #ifdef FREELIST readfreelist(dev); #endif diff --git a/sortdir.po b/sortdir.po index 4ad6431bad1973ac41d926c572948c03f6ebe9d9..53b935b0d4ffdc513cc3ac741e37653546fdcbc0 100644 GIT binary patch delta 26190 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 G@c#kzXZg4Q delta 27147 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