Bell 32V development
authorTom London <tbl@research.uucp>
Fri, 19 Jan 1979 05:13:13 +0000 (00:13 -0500)
committerTom London <tbl@research.uucp>
Fri, 19 Jan 1979 05:13:13 +0000 (00:13 -0500)
Work on file usr/src/cmd/refer/glue4.c

Co-Authored-By: John Reiser <jfr@research.uucp>
Synthesized-from: 32v

usr/src/cmd/refer/glue4.c [new file with mode: 0644]

diff --git a/usr/src/cmd/refer/glue4.c b/usr/src/cmd/refer/glue4.c
new file mode 100644 (file)
index 0000000..53cfaac
--- /dev/null
@@ -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);
+}