1: /* rcvpack.c - a rcvmail program to keep a copy */
2:
3: #include "../h/mh.h"
4: #include "../h/dropsbr.h"
5: #include "../h/rcvmail.h"
6: #include "../zotnet/tws.h"
7: #include "../zotnet/mts.h"
8:
9: /* */
10:
11: static struct swit switches[] = {
12: #define HELPSW 0
13: "help", 4,
14:
15: NULL, NULL
16: };
17:
18: /* */
19:
20: long lseek ();
21:
22: /* */
23:
24: /* ARGSUSED */
25:
26: main (argc, argv)
27: int argc;
28: char **argv;
29: {
30: int md;
31: char *cp,
32: *file = NULL,
33: buf[100],
34: ddate[BUFSIZ],
35: **ap,
36: **argp,
37: *arguments[MAXARGS];
38:
39: invo_name = r1bindex (argv[0], '/');
40: mts_init (invo_name);
41: if ((cp = m_find (invo_name)) != NULL) {
42: ap = brkstring (cp = getcpy (cp), " ", "\n");
43: ap = copyip (ap, arguments);
44: }
45: else
46: ap = arguments;
47: (void) copyip (argv + 1, ap);
48: argp = arguments;
49:
50: /* */
51:
52: while (cp = *argp++) {
53: if (*cp == '-')
54: switch (smatch (++cp, switches)) {
55: case AMBIGSW:
56: ambigsw (cp, switches);
57: done (1);
58: case UNKWNSW:
59: adios (NULLCP, "-%s unknown", cp);
60: case HELPSW:
61: (void) sprintf (buf, "%s [switches] file", invo_name);
62: help (buf, switches);
63: done (1);
64: }
65: if (file)
66: adios (NULLCP, "only one file at a time!");
67: else
68: file = cp;
69: }
70:
71: /* */
72:
73: if (!file)
74: adios (NULLCP, "%s [switches] file", invo_name);
75:
76: (void) sprintf (ddate, "Delivery-Date: %s\n", dtimenow ());
77: rewind (stdin);
78: if ((md = mbx_open (file, getuid (), getgid (), m_gmprot ())) == NOTOK
79: || mbx_copy (file, md, fileno (stdin), 1, ddate, 0) == NOTOK
80: || mbx_close (file, md) == NOTOK) {
81: if (md != NOTOK)
82: (void) mbx_close (file, md);
83: done (RCV_MBX);
84: }
85:
86: done (RCV_MOK);
87: }
Defined functions
main
defined in line
26;
never used
Defined variables
Defined macros