home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 334_01 / doc2gih.c < prev    next >
Text File  |  1991-02-05  |  2KB  |  95 lines

  1. /*
  2.  * doc2gih.c  -- program to convert Gnuplot .DOC format to gnuplot
  3.  * interactive help (.GIH) format.
  4.  *
  5.  * This involves stripping all lines with a leading digit or
  6.  * a leading @, #, or %.
  7.  * Modified by Russell Lang from hlp2ms.c by Thomas Williams 
  8.  *
  9.  * usage:  doc2gih < file.doc > file.gih
  10.  *
  11.  * Original version by David Kotz used the following one line script!
  12.  * sed '/^[0-9@#%]/d' file.doc > file.gih
  13.  */
  14.  
  15. #include <stdio.h>
  16. #include <ctype.h>
  17.  
  18. #define MAX_LINE_LEN    256
  19. #define TRUE 1
  20. #define FALSE 0
  21.  
  22. main(argc,argv)
  23. int argc;
  24. char **argv;
  25. {
  26. FILE * infile;
  27. FILE * outfile;
  28.     infile = stdin;
  29.     outfile = stdout;
  30.     if (argc > 3) {
  31.         fprintf(stderr,"Usage: %s infile outfile\n", argv[0]);
  32.         exit(1);
  33.     }
  34.     if (argc >= 2) 
  35.         if ( (infile = fopen(argv[1],"r")) == (FILE *)NULL) {
  36.             fprintf(stderr,"%s: Can't open %s for reading\n",
  37.                 argv[0], argv[1]);
  38.             exit(1);
  39.         }
  40.     if (argc == 3)
  41.         if ( (outfile = fopen(argv[2],"w")) == (FILE *)NULL) {
  42.             fprintf(stderr,"%s: Can't open %s for writing\n",
  43.                 argv[0], argv[2]);
  44.         }
  45.     
  46.     convert(infile,outfile);
  47.     exit(0);
  48. }
  49.  
  50.  
  51. convert(a,b)
  52.     FILE *a,*b;
  53. {
  54.     static char line[MAX_LINE_LEN];
  55.  
  56.     while (fgets(line,MAX_LINE_LEN,a)) {
  57.        process_line(line, b);
  58.     }
  59. }
  60.  
  61. process_line(line, b)
  62.     char *line;
  63.     FILE *b;
  64. {
  65.     switch(line[0]) {        /* control character */
  66.        case '?': {            /* interactive help entry */
  67.           (void) fputs(line,b); 
  68.           break;        
  69.        }
  70.        case '@': {            /* start/end table */
  71.           break;            /* ignore */
  72.        }
  73.        case '#': {            /* latex table entry */
  74.           break;            /* ignore */
  75.        }
  76.        case '%': {            /* troff table entry */
  77.           break;            /* ignore */
  78.        }
  79.        case '\n':            /* empty text line */
  80.        case ' ': {            /* normal text line */
  81.           (void) fputs(line,b); 
  82.           break;
  83.        }
  84.        default: {
  85.           if (isdigit(line[0])) { /* start of section */
  86.                   /* ignore */
  87.           } else
  88.             fprintf(stderr, "unknown control code '%c' in column 1\n", 
  89.                   line[0]);
  90.           break;
  91.        }
  92.     }
  93. }
  94.  
  95.