]> diplodocus.org Git - nmh/blob - sbr/showfile.c
Sigh. I put the documentation about the -tls switch in the long description,
[nmh] / sbr / showfile.c
1
2 /*
3 * showfile.c -- invoke the `lproc' command
4 *
5 * This code is Copyright (c) 2002, by the authors of nmh. See the
6 * COPYRIGHT file in the root directory of the nmh distribution for
7 * complete copyright information.
8 */
9
10 #include <h/mh.h>
11
12
13 int
14 showfile (char **arg, char *file)
15 {
16 pid_t pid;
17 int isdraft, vecp;
18 char *vec[MAXARGS];
19
20 context_save(); /* save the context file */
21 fflush(stdout);
22
23 /*
24 * If you have your lproc listed as "mhl",
25 * then really invoked the mhlproc instead
26 * (which is usually mhl anyway).
27 */
28 if (!strcmp (r1bindex (lproc, '/'), "mhl"))
29 lproc = mhlproc;
30
31 switch (pid = vfork()) {
32 case -1:
33 /* fork error */
34 advise ("fork", "unable to");
35 return 1;
36
37 case 0:
38 /* child */
39 vecp = 0;
40 vec[vecp++] = r1bindex (lproc, '/');
41 isdraft = 1;
42 if (arg) {
43 while (*arg) {
44 if (**arg != '-')
45 isdraft = 0;
46 vec[vecp++] = *arg++;
47 }
48 }
49 if (isdraft) {
50 if (!strcmp (vec[0], "show"))
51 vec[vecp++] = "-file";
52 vec[vecp++] = file;
53 }
54 vec[vecp] = NULL;
55
56 execvp (lproc, vec);
57 fprintf (stderr, "unable to exec ");
58 perror (lproc);
59 _exit (-1);
60
61 default:
62 /* parent */
63 return (pidwait (pid, -1) & 0377 ? 1 : 0);
64 }
65
66 return 1; /* NOT REACHED */
67 }