Added all of the MH sources, including RCS files, in
[mmh] / docs / historical / mh-6.8.5 / zotnet / mf / mmdfI / src / uucp / ch_uucp.c
1 #include "util.h"
2 #include "mmdf.h"
3 #include "ch.h"
4 #include <signal.h>
5
6 /*
7  *                      C H _ U U C P . C
8  *
9  *              Take message and feed a request to UUX
10  *
11  *  qu2uu_send does the interesting work.  This interface was developed
12  *  for MMDF by Doug Kingston at the US Army Ballistics Research Lab,
13  *  Aberdeen, Maryland.    <dpk@brl>
14  *
15  *                  Original Version 21 Oct 81
16  *
17  *                      Revision History
18  *                      ================
19  *
20  *    27-Oct-82 Marshall T. Rose <mrose%uci@rand-relay>
21  *              Support proper munging by using the UCI mail filtering
22  *              routines (enabled by #ifdef MF)
23  *
24  *    17-Oct-83 Marshall T. Rose <mrose%uci@rand-relay>
25  *              Major re-organization and some new interfacing.
26  *
27  */
28
29 /*
30  *     MULTI-CHANNEL MEMO DISTRIBUTION FACILITY  (MMDF)
31  *     
32  *
33  *     Department of Electrical Engineering
34  *     University of Delaware
35  *     Newark, Delaware  19711
36  *
37  *     Phone:  (302) 738-1163
38  *     
39  *
40  */
41
42 /* \f */
43
44 extern char logdfldir[];
45
46 extern struct ll_struct chanlog;
47 struct ll_struct   *logptr = &chanlog;
48
49 char   *dupfpath ();
50
51 /* \f */
52
53 main (argc, argv)
54 int     argc;
55 char  **argv;
56 {
57     short   retval;
58     Chan * chanptr;
59
60     ll_hdinit (logptr, "UU");
61     logptr -> ll_file = dupfpath (logptr -> ll_file, logdfldir);
62
63     siginit ();
64     signal (SIGINT, SIG_IGN);
65
66     if ((chanptr = ch_nm2struct (*argv)) == (Chan *) NOTOK)
67         err_abrt (RP_PARM, "unknown channel name '%s'", *argv);
68
69     retval = ch_uucp (argc, argv, chanptr);
70     ll_close (logptr);
71
72     exit (retval);
73 }
74
75 /* \f */
76
77 ch_uucp (argc, argv, chanptr)
78 int     argc;
79 char  **argv;
80 Chan * chanptr;
81 {
82 #ifdef DEBUG
83     logptr -> ll_level = LLOGBTR;
84     ll_log (logptr, LLOGBTR, "ch_uucp(argc=%d,*argv='%s')", argc, *argv);
85 #endif
86
87     if (rp_isbad (qu_init (argc, argv)))
88         return RP_NO;
89     if (rp_isbad (uu_init (chanptr)))
90         return RP_NO;
91
92     if (rp_isbad (qu2uu_send ()))
93         return RP_NO;
94
95     qu_end (OK);
96     uu_end (OK);
97
98     return RP_OK;
99 }
100
101 /* \f */
102
103 err_abrt (code, fmt, b, c, d)
104 short   code;
105 char    fmt[],
106         b[],
107         c[],
108         d[];
109 {
110     char    linebuf[LINESIZE];
111
112     qu_end (NOTOK);
113     uu_end (NOTOK);
114
115     sprintf (linebuf, "%s%s", "[ABEND:  %s]", fmt);
116     ll_log (logptr, LLOGFAT, linebuf, rp_valstr (code), b, c, d);
117     ll_close (logptr);
118
119     exit (code);
120 }