home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / b / bmh02src.zip / ALI.C next >
C/C++ Source or Header  |  1992-08-16  |  2KB  |  102 lines

  1. /*
  2.    ali.c : Copyright Paul Healy, EI9GL, 1992.
  3.  
  4.    920726 : Created
  5. */
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <ctype.h>
  9. #include <string.h>
  10. #include <dir.h>
  11. #include <process.h>
  12. #include "rc.h"
  13. #include "help.h"
  14. #include "misc.h"
  15.  
  16. #ifdef BMH
  17. #define main ali_main
  18. #endif
  19.  
  20. static void
  21. dumpline(char *s)
  22. {
  23.    rip(s);
  24.    while (*s)
  25.       if (isspace(*s))
  26.          s++;
  27.       else {
  28.          while (*s && !isspace(*s))
  29.             putchar(*s++);
  30.          putchar(' ');
  31.          }
  32. }
  33.  
  34. static int
  35. getalias(char *s)
  36. {
  37.    FILE *fp = fopen(getrc(alias), "r");
  38.    char line[256], al[128];
  39.  
  40.    if (fp == NULL)
  41.       return -1;
  42.  
  43.    while (fgets(line, sizeof(line), fp) != NULL) {
  44.  
  45.       newalias:
  46.  
  47.       if ( isspace(line[0]) || (line[0] == '#') || (line[0] == '\0') )
  48.          continue;
  49.  
  50.       sscanf(line, "%s", al);
  51.       if (s == NULL)
  52.          printf("%s: ", al);
  53.  
  54.       if ( (s==NULL) || (strncmp(s, al, strlen(al)) == 0) ) {
  55.          dumpline(line+strlen(al));
  56.  
  57.          while (fgets(line, sizeof(line), fp) != NULL) {
  58.             if (!isspace(line[0]))
  59.                if (s != NULL) {
  60.                   fclose(fp);
  61.                   return 0;
  62.                   }
  63.                else {
  64.                   putchar('\n');
  65.                   goto newalias;    /* Yeh! */
  66.                   }
  67.             dumpline(line);
  68.             }
  69.  
  70.           if (feof(fp) || (s != NULL)) {
  71.             fclose(fp);
  72.             return -1;
  73.             }
  74.          }
  75.       }
  76.    fclose(fp);
  77.    return -1;
  78. }
  79.  
  80. int
  81. main(int argc, char *argv[])
  82. {
  83.    int i;
  84.  
  85.    dohelp(argc, argv, "ali [alias1 alias2 ... aliasn]");
  86.  
  87.    if (setupbm()==-1)
  88.       return -1;
  89.  
  90.    if (argc == 1)
  91.       getalias(NULL);
  92.    else
  93.       for (i=1; i<argc; i++)  {
  94.          if ( getalias(argv[i]) == -1)
  95.             fputs(argv[i], stdout);
  96.          if (i != (argc-1))
  97.             putchar('\n');
  98.          }
  99.  
  100.    return 0;
  101. }
  102.