home *** CD-ROM | disk | FTP | other *** search
/ norge.freeshell.org (192.94.73.8) / 192.94.73.8.tar / 192.94.73.8 / pub / computers / cpm / alphatronic / BBUG13.ZIP / TSORT.C < prev    next >
Text File  |  1998-07-30  |  2KB  |  93 lines

  1. #include "printf.h"
  2.  
  3. #define YES 1
  4. #define NO 0
  5. #define EOS '\0'
  6.  
  7. main(argc,argv)
  8. int argc;
  9. char *argv[];
  10.  
  11.  
  12. {
  13.     int i;
  14.     char debug, numsort, revord, blankskip, endrec, seteor;
  15.     char *innam, *outnam, *s;
  16.  
  17.     debug = NO;        /* set program defaults */
  18.     numsort = NO;
  19.     revord = NO;
  20.     blankskip = NO;
  21.     endrec = '\n';        /* default EOR is new line */
  22.     seteor = NO;
  23.     if (argc <= 1)         /* if no args given */
  24.         usage();    /* print usage message */
  25.     for (i = 1 ; i <= argc ; i++) {        /* loop through all args */
  26.         s = argv[i];        /* point to argument string */
  27.         if (*s == '-') {    /* if option flag */
  28.             while (*++s != EOS) {    /* while options */
  29.             switch (*s) {    /* find option flag and set it */
  30.             case 'B':
  31.                  blankskip = YES;    /* skip blanks */
  32.                  break;
  33.             case 'D':
  34.                  debug = YES;    /* debug mode */
  35.                  break;
  36.             case 'E':
  37.                  seteor = YES;    /* use diff. EOR char */
  38.                  break;
  39.             case 'N':
  40.                  numsort = YES;    /* sort on numbers */
  41.                  break;
  42.             case 'R':
  43.                  revord = YES;    /* reverse sort */
  44.                  break;
  45.             default:
  46.                  userr(*s);        /* usage error */
  47.                  break;
  48.             }
  49.             }
  50.         }
  51.         else {
  52.             innam = s;        /* get input file */
  53.             outnam = argv[++i];    /* get output file */
  54.             break;
  55.         }
  56.     }
  57.     if (seteor) {        /* if different EOR char wanted */
  58.         printf("Enter end-of-record character -->");
  59.         endrec = getchar();
  60.     }
  61.     sort(innam, outnam, endrec, revord, numsort, blankskip, debug);
  62.     printf("Finished\n");
  63. }
  64.  
  65.  
  66. /* usage - type how to use this program. */
  67.  
  68. usage()
  69. {
  70.     printf("USAGE:\n");
  71.     printf("sort [-b] [-d] [-e] [-n] [-r] infile outfile\n");
  72.     printf("     infile:   name of file to be sorted\n");
  73.     printf("     outfile:  name of sorted file\n");
  74.     printf("OPTIONS:\n");
  75.     printf("     -b:       skip leading blanks\n");
  76.     printf("     -d:       print debug messages\n");
  77.     printf("     -e:       set alternate EOR character (default: LF)\n");
  78.     printf("     -n:       treat first column as numbers\n");
  79.     printf("     -r:       sort in reverse order (high to low)\n");
  80.     printf("All options default to OFF\n");
  81.     exit();
  82. }
  83.  
  84.  
  85. /* userr - print error in usage. */
  86.  
  87. userr(c)
  88. char c;
  89. {
  90.     printf("-%c is not a legal option.\n\n", c);
  91.     usage();
  92. }
  93.