home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / n / nuweb / Source / src / main_c < prev    next >
Encoding:
Text File  |  1997-03-13  |  4.1 KB  |  183 lines

  1.  
  2. #line 599 "nuweb.w"
  3. #include "global.h"
  4.  
  5. #line 680 "nuweb.w"
  6. int main(int argc, char *argv[])
  7. {
  8.   int arg = 1;
  9.   
  10. #line 754 "nuweb.w"
  11.   command_name = argv[0];
  12.   
  13. #line 771 "nuweb.w"
  14.   while (arg < argc) {
  15.     char *s = argv[arg];
  16.     if (*s++ == '-' && *s != 'o') {
  17.       
  18. #line 786 "nuweb.w"
  19.       {
  20.         char c = *s++;
  21.         while (c) {
  22.           switch (c) {
  23.             case 'c': compare_flag = FALSE;
  24.                       break;
  25.             case 'C': compline_flag = TRUE;
  26.                       break;
  27.             case 'n': number_flag = TRUE;
  28.                       break;
  29.             case 'p': program_flag = FALSE;
  30.                       break;
  31.             case 's': skipnl_flag = FALSE;
  32.                       break;
  33.             case 't': tex_flag = FALSE;
  34.                       break;
  35.             case 'v': verbose_flag = TRUE;
  36.                       break;
  37.             default:  fprintf(stderr, "%s: unexpected argument.  ",
  38.                               command_name);
  39.             
  40. #line 762 "nuweb.w"
  41.             fprintf(stderr, "Usage is: %s [-cCnpstv] [[-o file] file]...\n", command_name);
  42.             exit(-1);
  43.             
  44. #line 806 "nuweb.w"
  45.       
  46.                       break;
  47.           }
  48.           c = *s++;
  49.         }
  50.       }
  51.       
  52. #line 774 "nuweb.w"
  53.   
  54.       arg++;
  55.     }
  56.     else break;
  57.   }
  58.   
  59. #line 683 "nuweb.w"
  60.  
  61.   
  62. #line 823 "nuweb.w"
  63.   {
  64.     if (arg >= argc) {
  65.       fprintf(stderr, "%s: expected a file name.  ", command_name);
  66.       
  67. #line 762 "nuweb.w"
  68.       fprintf(stderr, "Usage is: %s [-cCnpstv] [[-o file] file]...\n", command_name);
  69.       exit(-1);
  70.       
  71. #line 826 "nuweb.w"
  72.   
  73.     }
  74.     do {
  75.       
  76. #line 845 "nuweb.w"
  77.       {
  78.         char source_name[256];
  79.         char tex_name[256];
  80.         char aux_name[256];
  81.         int output_given = FALSE;
  82.       
  83.         if (strcmp(argv[arg], "-o") == 0) {
  84.             arg++;
  85.             output_given = TRUE;
  86.             strcpy(tex_name, argv[arg++]);
  87.         }
  88.       
  89.         
  90. #line 905 "nuweb.w"
  91.         {
  92.           char *dot;
  93.           char *trim = trim_name(argv[arg], source_name, &dot);
  94.         
  95.           if (dot) {
  96.             *dot = '\0'; /* produce HTML when the file extension is ".hw" */
  97.             hw_flag = dot[1] == 'h' && dot[2] == 'w' && dot[3] == '\0';
  98.             html_flag = hw_flag ||
  99.                  (dot[1] == 'h' && dot[2] == 't' && dot[3] == 'w' && dot[4] == '\0');
  100.             if (!output_given) {
  101.               sprintf(tex_name, (html_flag && !hw_flag) ? "%s.html" : "%s.tex", trim);
  102.               sprintf(aux_name, "%s.aux", trim);
  103.             }
  104.             *dot = '.';
  105.           }
  106.           else {
  107.             if (!output_given) {
  108.               sprintf(tex_name, "%s.tex", trim);
  109.               sprintf(aux_name, "%s.aux", trim);
  110.             }
  111.             strcat(source_name, ".w");
  112.           }
  113.           if (output_given && !html_flag && !hw_flag) {
  114.             char temp[256], *dot;
  115.         
  116.             strcpy(temp, tex_name);
  117.             trim_name(temp, aux_name, &dot);
  118.             if (dot)
  119.               *dot = '\0';
  120.             strcat(aux_name, ".aux");
  121.           }
  122.         }
  123.         
  124. #line 857 "nuweb.w"
  125.       
  126.         
  127. #line 949 "nuweb.w"
  128.         {
  129.           pass1(source_name);
  130.           if (tex_flag) {
  131.             if (html_flag) {
  132.               int saved_number_flag = number_flag;
  133.               number_flag = TRUE;
  134.               collect_numbers(aux_name);
  135.               write_html(source_name, tex_name);
  136.               number_flag = saved_number_flag;
  137.             }
  138.             else {
  139.               collect_numbers(aux_name);
  140.               write_tex(source_name, tex_name);
  141.             }
  142.           }
  143.           if (program_flag)
  144.             write_files(file_names);
  145.         }
  146.         
  147. #line 858 "nuweb.w"
  148.       
  149.       }
  150.       
  151. #line 829 "nuweb.w"
  152.   
  153.       arg++;
  154.     } while (arg < argc);
  155.   }
  156.   
  157. #line 684 "nuweb.w"
  158.  
  159.   exit(0);
  160. }
  161.  
  162. #line 874 "nuweb.w"
  163. char *trim_name(char *from, char *to, char **dot)
  164. {
  165.   char *trim = to;
  166.   char c = *from++;
  167.  
  168.   *dot = NULL;
  169.   while (c) {
  170.     *to++ = c;
  171.     if (c == '/') {
  172.       trim = to;
  173.       *dot = NULL;
  174.     }
  175.     else if (c == '.')
  176.       *dot = to - 1;
  177.     c = *from++;
  178.   }
  179.   *to = '\0';
  180.  
  181.   return trim;
  182. }
  183.