home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mmdf / mmdf-IIb.43 / src / ean / ch_ean.c next >
Encoding:
C/C++ Source or Header  |  1986-02-08  |  2.4 KB  |  98 lines

  1. #include "util.h"
  2. #include "mmdf.h"
  3.  
  4. /*
  5.  *   Copyright University College London - 1984
  6.  *
  7.  *   MMDF channel mapping to the EAN X.400 system
  8.  *
  9.  *   Steve Kille        November 1984
  10.  */
  11.  
  12. #include <signal.h>
  13. #include "ch.h";
  14. #include "phs.h"
  15.  
  16. extern Chan     *ch_nm2struct();
  17. extern LLog    *logptr;
  18. Chan    *chanptr;
  19.  
  20.  
  21. /*      MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN     */
  22.  
  23. main (argc, argv)
  24. int     argc;
  25. char   *argv[];
  26. {
  27.     extern char *dupfpath ();
  28.     short retval;
  29.     int   realid,
  30.       effecid;
  31.  
  32.     mmdf_init (argv[0]);
  33.     siginit ();
  34.     signal (SIGINT, SIG_IGN);   /* always ignore interrupts             */
  35.  
  36.     if ((chanptr = ch_nm2struct (argv[0])) == (Chan *) NOTOK)
  37.     {
  38.     ll_log (logptr, LLOGTMP, "qu2en_send (%s) unknown channel", argv[0]);
  39.     exit (NOTOK);
  40.     }
  41.  
  42.     getwho (&realid, &effecid);
  43.     if (effecid != 0)              /* MUST run as superuser              */
  44.     err_abrt (RP_BHST, "not running as superuser");
  45.  
  46.     ch_llinit(chanptr);
  47.     retval = ch_ean (argc, argv);
  48.     ll_close (logptr);              /* clean log end, if cycled  */
  49.     exit (retval);
  50. }
  51. /* **************  (ch_) EAN MAIL DELIVERY  ************************ */
  52.  
  53. ch_ean (argc, argv)
  54. int     argc;
  55. char   *argv[];
  56. {
  57. #ifdef DEBUG
  58.     ll_log (logptr, LLOGBTR, "ch_ean ()");
  59. #endif
  60.  
  61.     if (rp_isbad (qu_init (argc, argv)))
  62.     return (RP_NO);           /* problem setting-up for deliver     */
  63.     phs_note (chanptr, PHS_CNSTRT);         /* make a timestamp */
  64.     phs_note (chanptr, PHS_CNGOT);         /* make a timestamp */
  65.  
  66.     if (rp_isbad (qu2en_send ()))
  67.     return (RP_NO);           /* send the batch of outgoing mail    */
  68.  
  69.     qu_end (OK);                  /* done with Deliver function         */
  70.     phs_end  (chanptr, RP_OK);     /* note end of session */
  71.  
  72.     return (RP_OK);               /* NORMAL RETURN                      */
  73. }
  74.  
  75.  
  76. /* VARARGS2 */
  77. err_abrt (code, fmt, b, c, d)     /* terminate ourself                  */
  78. short     code;
  79. char    *fmt, *b, *c, *d;
  80. {
  81.     char linebuf[LINESIZE];
  82.  
  83.     qu_end (NOTOK);
  84.     if (rp_isbad (code))
  85.     {
  86. #ifdef DEBUG
  87.     if (rp_gbval (code) == RP_BNO || logptr -> ll_level >= LLOGBTR)
  88.     {                         /* don't worry about minor stuff      */
  89.         sprintf (linebuf, "%s%s", "err [ ABEND (%s) ]\t", fmt);
  90.         ll_log (logptr, LLOGFAT, linebuf, rp_valstr (code), b, c, d);
  91.         abort ();
  92.     }
  93. #endif
  94.     }
  95.     ll_close (logptr);           /* in case of cycling, close neatly   */
  96.     exit (code);
  97. }
  98.