Mercurial > hg > Applications > mh
diff zotnet/mf/mmdfI/src/uucp/ch_uucp.c @ 0:bce86c4163a3
Initial revision
author | kono |
---|---|
date | Mon, 18 Apr 2005 23:46:02 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/zotnet/mf/mmdfI/src/uucp/ch_uucp.c Mon Apr 18 23:46:02 2005 +0900 @@ -0,0 +1,120 @@ +#include "util.h" +#include "mmdf.h" +#include "ch.h" +#include <signal.h> + +/* + * C H _ U U C P . C + * + * Take message and feed a request to UUX + * + * qu2uu_send does the interesting work. This interface was developed + * for MMDF by Doug Kingston at the US Army Ballistics Research Lab, + * Aberdeen, Maryland. <dpk@brl> + * + * Original Version 21 Oct 81 + * + * Revision History + * ================ + * + * 27-Oct-82 Marshall T. Rose <mrose%uci@rand-relay> + * Support proper munging by using the UCI mail filtering + * routines (enabled by #ifdef MF) + * + * 17-Oct-83 Marshall T. Rose <mrose%uci@rand-relay> + * Major re-organization and some new interfacing. + * + */ + +/* + * MULTI-CHANNEL MEMO DISTRIBUTION FACILITY (MMDF) + * + * + * Department of Electrical Engineering + * University of Delaware + * Newark, Delaware 19711 + * + * Phone: (302) 738-1163 + * + * + */ + +/* */ + +extern char logdfldir[]; + +extern struct ll_struct chanlog; +struct ll_struct *logptr = &chanlog; + +char *dupfpath (); + +/* */ + +main (argc, argv) +int argc; +char **argv; +{ + short retval; + Chan * chanptr; + + ll_hdinit (logptr, "UU"); + logptr -> ll_file = dupfpath (logptr -> ll_file, logdfldir); + + siginit (); + signal (SIGINT, SIG_IGN); + + if ((chanptr = ch_nm2struct (*argv)) == (Chan *) NOTOK) + err_abrt (RP_PARM, "unknown channel name '%s'", *argv); + + retval = ch_uucp (argc, argv, chanptr); + ll_close (logptr); + + exit (retval); +} + +/* */ + +ch_uucp (argc, argv, chanptr) +int argc; +char **argv; +Chan * chanptr; +{ +#ifdef DEBUG + logptr -> ll_level = LLOGBTR; + ll_log (logptr, LLOGBTR, "ch_uucp(argc=%d,*argv='%s')", argc, *argv); +#endif + + if (rp_isbad (qu_init (argc, argv))) + return RP_NO; + if (rp_isbad (uu_init (chanptr))) + return RP_NO; + + if (rp_isbad (qu2uu_send ())) + return RP_NO; + + qu_end (OK); + uu_end (OK); + + return RP_OK; +} + +/* */ + +err_abrt (code, fmt, b, c, d) +short code; +char fmt[], + b[], + c[], + d[]; +{ + char linebuf[LINESIZE]; + + qu_end (NOTOK); + uu_end (NOTOK); + + sprintf (linebuf, "%s%s", "[ABEND: %s]", fmt); + ll_log (logptr, LLOGFAT, linebuf, rp_valstr (code), b, c, d); + ll_close (logptr); + + exit (code); +}