|
|
1.1 ! root 1: #ifndef lint ! 2: static char *sccsid = "@(#)glue4.c 4.2 (Berkeley) 4/24/88"; ! 3: #endif ! 4: ! 5: #include <stdio.h> ! 6: #include <ctype.h> ! 7: ! 8: extern char gfile[]; ! 9: ! 10: grepcall (in, out, arg) ! 11: char *in, *out, *arg; ! 12: { ! 13: char line[200], *s, argig[100], *cv[50]; ! 14: char *inp, inb[500]; ! 15: FILE *qf, *gf; ! 16: int c, oldc = 0, alph = 0, nv = 0; ! 17: int sv0, sv1; ! 18: strcpy (argig, arg); ! 19: strcat(argig, ".ig"); ! 20: strcpy (inp=inb, in); ! 21: if (gfile[0]==0) ! 22: sprintf(gfile, "/tmp/rj%dg", getpid()); ! 23: # if D1 ! 24: fprintf(stderr, "in grepcall, gfile %s in %o out %o\n", gfile,in,out); ! 25: # endif ! 26: for(cv[nv++] = "fgrep"; c = *inp; inp++) ! 27: { ! 28: if (c== ' ') ! 29: c = *inp = 0; ! 30: else if (isupper(c)) ! 31: *inp = tolower(c); ! 32: alph = (c==0) ? 0 : alph+1; ! 33: if (alph == 1) ! 34: cv[nv++] = inp; ! 35: if (alph > 6) ! 36: *inp = 0; ! 37: oldc=c; ! 38: } ! 39: # if D1 ! 40: fprintf(stderr, "%d args set up\n", nv); ! 41: # endif ! 42: { ! 43: sv0 = dup(0); ! 44: close(0); ! 45: if (open (argig, 0) != 0) ! 46: err("Can't read fgrep index %s", argig); ! 47: sv1 = dup(1); ! 48: close(1); ! 49: if (creat(gfile, 0666) != 1) ! 50: err("Can't write fgrep output %s", gfile); ! 51: fgrep(nv, cv); ! 52: # if D1 ! 53: fprintf(stderr, "fgrep returned, output is..\n"); ! 54: # endif ! 55: close (0); ! 56: dup(sv0); ! 57: close(sv0); ! 58: close (1); ! 59: dup(sv1); ! 60: close(sv1); ! 61: } ! 62: ! 63: # if D1 ! 64: fprintf(stderr, "back from fgrep\n"); ! 65: # endif ! 66: gf = fopen(gfile, "r"); ! 67: if (gf==NULL) ! 68: err("can't read fgrep output %s", gfile); ! 69: while (fgets(line, 100, gf) == line) ! 70: { ! 71: line[100]=0; ! 72: # if D1 ! 73: fprintf(stderr, "read line as //%s//\n",line); ! 74: # endif ! 75: for(s=line; *s && (*s != '\t'); s++); ! 76: if (*s == '\t') ! 77: { ! 78: *s++ = '\n'; ! 79: *s++ = 0; ! 80: } ! 81: if (line[0]) ! 82: strcat(out, line); ! 83: # if D1 ! 84: fprintf(stderr, "out now /%s/\n",out); ! 85: # endif ! 86: while (*s) s++; ! 87: # if D1 ! 88: fprintf(stderr, "line %o s %o s-1 %o\n",line,s,s[-1]); ! 89: # endif ! 90: if (s[-1]!= '\n') ! 91: while (!feof(gf) && getc(gf)!= '\n') ; ! 92: } ! 93: fclose(gf); ! 94: # if D1 ! 95: fprintf(stderr, "back from reading %, out %s\n",out); ! 96: # else ! 97: unlink (gfile); ! 98: # endif ! 99: return(0); ! 100: } ! 101: ! 102: clfgrep() ! 103: { ! 104: if (gfile[0]) ! 105: unlink(gfile); ! 106: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.