From: Tom London Date: Fri, 19 Jan 1979 05:13:13 +0000 (-0500) Subject: Bell 32V development X-Git-Tag: Bell-32V~354 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/576ed11031288ff628acc19ba124cac2ae160c04?ds=inline Bell 32V development Work on file usr/src/cmd/refer/glue4.c Co-Authored-By: John Reiser Synthesized-from: 32v --- diff --git a/usr/src/cmd/refer/glue4.c b/usr/src/cmd/refer/glue4.c new file mode 100644 index 0000000000..53cfaac5e4 --- /dev/null +++ b/usr/src/cmd/refer/glue4.c @@ -0,0 +1,96 @@ +# include "stdio.h" +# include "ctype.h" + +grepcall (in, out, arg) + char *in, *out, *arg; +{ +char line[200], *s, argig[100], *cv[50]; +char *inp, inb[500]; +extern char gfile[]; +FILE *qf, *gf; +int c, oldc = 0, alph = 0, nv = 0; +int sv0, sv1; +strcpy (argig, arg); strcat(argig, ".ig"); +strcpy (inp=inb, in); +if (gfile[0]==0) + sprintf(gfile, "/tmp/rj%dg", getpid()); +# if D1 +fprintf(stderr, "in grepcall, gfile %s in %o out %o\n", gfile,in,out); +# endif +for(cv[nv++] = "fgrep"; c = *inp; inp++) + { + if (c== ' ') + c = *inp = 0; + else if (isupper(c)) + *inp = tolower(c); + alph = (c==0) ? 0 : alph+1; + if (alph == 1) + cv[nv++] = inp; + if (alph > 6) + *inp = 0; + oldc=c; + } +# if D1 +fprintf(stderr, "%d args set up\n", nv); +# endif + { + sv0 = dup(0); + close(0); + if (open (argig, 0) != 0) + err("Can't read fgrep index %s", argig); + sv1 = dup(1); + close(1); + if (creat(gfile, 0666) != 1) + err("Can't write fgrep output %s", gfile); + fgrep(nv, cv); +# if D1 +fprintf(stderr, "fgrep returned, output is..\n"); +# endif + close (0); dup(sv0); close(sv0); + close (1); dup(sv1); close(sv1); + } + +# if D1 +fprintf(stderr, "back from fgrep\n"); +# endif +gf = fopen(gfile, "r"); +if (gf==NULL) + err("can't read fgrep output %s", gfile); +while (fgets(line, 100, gf) == line) + { + line[100]=0; +# if D1 +fprintf(stderr, "read line as //%s//\n",line); +# endif + for(s=line; *s && (*s != '\t'); s++); + if (*s == '\t') + { + *s++ = '\n'; + *s++ = 0; + } + if (line[0]) + strcat(out, line); +# if D1 +fprintf(stderr, "out now /%s/\n",out); +# endif + while (*s) s++; +# if D1 +fprintf(stderr, "line %o s %o s-1 %o\n",line,s,s[-1]); +# endif + if (s[-1]!= '\n') + while (!feof(gf) && getc(gf)!= '\n') ; + } +fclose(gf); +# if D1 + fprintf(stderr, "back from reading %, out %s\n",out); +# else +unlink (gfile); +# endif +return(0); +} + +clfgrep() +{ +if (gfile[0]) + unlink(gfile); +}