home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / p / ut-c.lbr / MAKDOC.CZ / MAKDOC.C
Encoding:
C/C++ Source or Header  |  1993-10-25  |  2.3 KB  |  77 lines

  1. /* makdoc.c -- UTOOL.  Make documentation from C source.
  2.  
  3.      author: David H. Wolen
  4.      last change: 7/1/83
  5.  
  6.      usage: makdoc -p prog.c >prog.pdo  (programmer doc)
  7.             makdoc prog.c >prog.hlp  (user help file)
  8.  
  9.      options: -p  output programmer oriented material in addition to 
  10.                   user's manual page
  11.  
  12.      input:    file or STDIN
  13.      output:   STDOUT
  14.  
  15.      notes: (1) -p prints program preface and function descriptions.
  16.                 Normal usage omits the linkage and compiler lines 
  17.                 from the preface and omits the function descriptions.
  18.             (2) filename can't begin with -
  19.  
  20.      compiler: BDS C ver. 1.46 (with dio)
  21.      linkage: clink b:makdoc -f dio  (uses deff3.crl)
  22. */
  23.  
  24. #include "a:bdscio.h"
  25. #include "a:dio.h"
  26. #define STDIN 0
  27. #define STDOUT 1
  28.  
  29. main(argc,argv)
  30. int  argc;
  31. char *argv[];
  32. {
  33.      int  isstdin, print, udoc;
  34.      char line[MAXLINE], ibuf[BUFSIZ], *s;
  35.  
  36.      dioinit(&argc,argv);
  37.      udoc=TRUE;
  38.  
  39.      while(--argc > 0 && (*++argv)[0]=='-')
  40.           for(s=argv[0]+1; *s != '\0'; s++)
  41.                switch(*s)
  42.                     {case 'P':  udoc=FALSE; break;
  43.                     default:  error("makdoc: invalid option");
  44.                     }
  45.  
  46.      if(argc <= 0)
  47.           isstdin=TRUE;
  48.      else
  49.           {isstdin=FALSE;
  50.           if(fopen(*argv,ibuf) == ERROR)
  51.                error("makdoc: can't open file");
  52.           }
  53.  
  54.      print=FALSE;
  55.  
  56.      if(udoc)       /* make user doc */
  57.           {while(isstdin ? fgets(line,STDIN) : fgets(line,ibuf))
  58.                {if(index(line,"/*")==0)  print=TRUE;
  59.                if(print && index(line,"linkage:") < 0 
  60.                     && index(line,"compiler:") < 0)
  61.                     fputs(line,STDOUT);
  62.                if(index(line,"*/") >= 0)  break;
  63.                }
  64.           }
  65.  
  66.      if(!udoc)      /* make programmer doc */
  67.           {while(isstdin ? fgets(line,STDIN) : fgets(line,ibuf))
  68.                {if(index(line,"/*")==0)  print=TRUE;
  69.                if(print)
  70.                     fputs(line,STDOUT);
  71.                if(index(line,"*/") >= 0)  print=FALSE;
  72.                }
  73.           }
  74.  
  75.      dioflush();
  76. }
  77.