1: #include "hd.h"
2: #include "strings.h"
3: #include "command.h"
4:
5: /* Interface to grep */
6:
7: #define GBUFLEN 200
8: #define LIM1 (gbuf + 100)
9:
10: #define QUOTE '\''
11: #define BSLASH '\\'
12:
13: #define GSTR1 " -n '"
14: #define GSTR2 "' /dev/null "
15:
16: #define CPSET {cp = gbuf + strlen (gbuf);}
17:
18: #define GREPLEAVE {tty_pop (); clearmsg (0); return NOREPLOT;}
19:
20: /* User is asked to supply patterns and file names. Grep is then
21: run with its output directed to .grepout. If the user changes his
22: mind, and leaves without running grep, NOREPLOT is returned.
23: Else REPLOT | CMD_SG is returned.
24: */
25: grep () {
26: register char *cp, *clim; register ch;
27: char gbuf [GBUFLEN];
28: char inline [STRMAX]; int inlength; register char *incp;
29:
30: FILE *sstream;
31: extern FILE *showopen ();
32:
33: int saveout;
34:
35: extern char wdname [];
36:
37: tty_push (COOKEDMODE);
38: strcpy (gbuf, GREP); strcat (gbuf, GSTR1);
39: clearmsg (2); printf ("Grep pattern: ");
40: CPSET; clim = LIM1;
41:
42: inlength = getline (inline); incp = inline;
43: if (inlength == 0) GREPLEAVE;
44:
45: while ((ch = *incp++) && cp < clim) {
46: if (ch == QUOTE) {
47: *cp++ = QUOTE; *cp++ = BSLASH;
48: *cp++ = QUOTE; *cp++ = QUOTE;
49: } else *cp++ = ch;
50: }
51: *cp=0;
52: strcat (gbuf, GSTR2);
53: at (2317 + inlength); printf ("-- Grep files: ");
54:
55: CPSET;
56: inlength = xgetline (stdin, cp, GBUFLEN - strlen (gbuf));
57: if (inlength == 0) GREPLEAVE;
58:
59: /* Now run the command in gbuf */
60:
61: sstream = showopen ("w", GREPMODE);
62: if (sstream == NULL) GREPLEAVE;
63:
64: printf ("Searching\n");
65:
66: saveout = dup (outfile); /* Set up files */
67: close (outfile); dup (fileno (sstream)); fclose (sstream);
68:
69: printf ("%s is search directory\n", wdname);
70: mysystem (gbuf);
71: close (outfile); dup (saveout); close (saveout);
72:
73:
74: tty_pop (); return CMD_SG | REPLOT;
75: }
Defined functions
grep
defined in line
25; used 6 times
Defined macros
CPSET
defined in line
16; used 2 times
GSTR1
defined in line
13; used 1 times
GSTR2
defined in line
14; used 1 times
LIM1
defined in line
8; used 1 times
QUOTE
defined in line
10; used 4 times