home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #4 / amigaacscoverdisc1998-041998.iso / utilities / shareware / dev / ucb_logoppc / source / makehelp.cx < prev    next >
Encoding:
Text File  |  1997-01-19  |  2.6 KB  |  123 lines

  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. char line[100], line2[100], line3[100];
  5. char name[30] = "helpfiles/";
  6. char name2[30] = "helpfiles/";
  7. char tocname[20];
  8.  
  9. main() {
  10.     FILE *in=fopen("usermanual", "r");
  11.     FILE *fp, *fp2;
  12.     FILE *toc=fopen("helpfiles/HELPCONTENTS", "w");
  13.     char ch, *cp, *np, *tp;
  14.     int intab, three, col=5;
  15.  
  16.     if (toc == NULL) {
  17.     fprintf(stderr, "Can't open HELPCONTENTS.\n");
  18.     exit(1);
  19.     }
  20.  
  21.     fputs("Help is available on the following:\n\n", toc);
  22.  
  23.     fgets(line, 100, in);
  24.     while (line[0] != '-') fgets(line, 100, in);
  25.  
  26.     while (!feof(in)) {
  27.     for (cp = line, np = &name[10], tp = tocname;
  28.          (ch = *cp) == '.' || (ch >= 'A' && ch <= 'Z') || ch == '`';
  29.          cp++) {
  30.       *tp++ = tolower(ch);
  31.       if (ch == '.') ch='d';
  32.       *np++ = tolower(ch);
  33.     }
  34.     if (cp == line || (ch != ' ' && ch != '\t' && ch != '\n')) {
  35.         fgets(line, 100, in);
  36.         continue;
  37.     }
  38.  
  39.     *tp = *np = '\0';
  40.  
  41.     if (name[11] == '\0' && name[10] != '`') {
  42.         fgets(line, 100, in);
  43.         continue;
  44.     }
  45.  
  46.     fgets(line2, 100, in);
  47.     if ((ch = line2[0]) == '-' || ch == '=') {
  48.         fgets(line, 100, in);
  49.         continue;
  50.     }
  51.  
  52.     fp = fopen(name, "w");
  53.     if (fp == NULL) {
  54.         fprintf(stderr, "Can't open %s\n", name);
  55.         exit(1);
  56.     }
  57.  
  58.     if (--col == 0) {
  59.         col = 5;
  60.         fprintf(toc, "%-16s\n", tocname);
  61.     } else {
  62.         fprintf(toc, "%-16s", tocname);
  63.     }
  64.  
  65.     three = 0;
  66.     if (ch == '.' || (ch >= 'A' && ch <= 'Z')) {
  67.         for (cp = line2, np = &name2[10], tp = tocname;
  68.          (ch = *cp) == '.' || (ch >= 'A' && ch <= 'Z') || ch == '?';
  69.          cp++) {
  70.            if (ch == '.') ch='d';
  71.            if (ch == '?') three++;
  72.            *np++ = tolower(ch);
  73.         }
  74.         *np = '\0';
  75.         if (three) {
  76.         fp2 = NULL;
  77.         fgets(line3, 100, in);
  78.         if ((ch = line3[0]) == '.' || (ch >= 'A' && ch <= 'Z')) {
  79.             for (cp = line3, np = &name2[10];
  80.              (ch = *cp) == '.' || (ch >= 'A' && ch <= 'Z') || ch == '?';
  81.              cp++) {
  82.                if (ch == '.') ch='d';
  83.                *np++ = tolower(ch);
  84.             }
  85.             *np = '\0';
  86.         } else name2[10] = '\0';
  87.         }
  88.         if (name2[10] != '\0') {
  89.         fp2 = fopen(name2, "w");
  90.         if (fp2 == NULL) {
  91.             fprintf(stderr, "Can't open %s\n", name2);
  92.             exit(1);
  93.         }
  94.         } else fp2 = NULL;
  95.     } else fp2 = NULL;
  96.  
  97.     fputs(line, fp);
  98.     fputs(line2, fp);
  99.     if (three) fputs(line3, fp);
  100.     if (fp2) {
  101.         fputs(line, fp2);
  102.         fputs(line2, fp2);
  103.         if (three) fputs(line3, fp);
  104.     }
  105.     intab = 0;
  106.  
  107.     fgets(line, 100, in);
  108.     while (!feof(in)) {
  109.         if (intab && line[0] != '\t' && line[0] != '\n') break;
  110.         if (!intab && line[0] == '\t') intab++;
  111.         fputs(line, fp);
  112.         if (fp2) fputs(line, fp2);
  113.         fgets(line, 100, in);
  114.     }
  115.  
  116.     fclose(fp);
  117.     if (fp2) fclose(fp2);
  118.     }
  119.     fprintf(toc, "\n");
  120.     fclose(toc);
  121.     exit(0);
  122. }
  123.