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