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