home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2032 / tear.c < prev   
Encoding:
C/C++ Source or Header  |  1990-12-28  |  1.1 KB  |  64 lines

  1. /*
  2.  * tear - tear.c - 10/04/90 - Brendan Kehoe
  3.  *
  4.  * a replacement for the tear shell script & awk procedure
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9.  
  10. extern char    *safemalloc(), *get_a_line();
  11.  
  12. main(argc, argv)
  13.     int argc;
  14.     char **argv;
  15. {
  16.     register char *lp;
  17.     register int curline;
  18.     extern char *safemalloc(), *get_a_line();
  19.     char *line, *hdr, *body;
  20.     short inbody, doit;
  21.     FILE *fin, *fout;
  22.  
  23.     line = safemalloc(1001);
  24.     hdr = safemalloc(100);
  25.     body = safemalloc(100);
  26.  
  27.     if (argc < 2)
  28.         exit(1);
  29.  
  30.     if (argc == 2)
  31.         fin = stdin;
  32.     else if ((fin = fopen(*(argv+2),"r"))==(FILE *)NULL) {
  33.         exit(1);
  34.     }
  35.  
  36.     strcpy(hdr,*(argv+1));
  37.     strcpy(body,*(argv+1));
  38.     strcat(hdr,"hdr");
  39.     strcat(body,"body");
  40.     fout = fopen(hdr,"w");
  41.  
  42.     lp=line;
  43.     inbody = doit = curline = 0;
  44.     while (get_a_line(line,1000,fin)) {
  45.         curline++;
  46.         if (inbody == 0) {
  47.             if ((*lp != ' ') && (*lp != '\t')) {
  48.                 if ((!strchr(lp,':'))||
  49.                     ((curline>1)&&(*lp == '\n')))
  50.                     doit = 1;
  51.             }
  52.             if (doit) {
  53.                 inbody = 1;
  54.                 fclose(fout);
  55.                 fout = fopen(body,"w");
  56.             }
  57.         }
  58.         fputs(line,fout);
  59.     }
  60.     fclose(fout);
  61.     fclose(fin);
  62.     return(0);    /* shut UP lint! */
  63. }
  64.