home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / metamail / contrib / ServiceMail / src / mesh / main.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-18  |  3.8 KB  |  158 lines

  1. /*
  2.  * main.c -- process entry point for the MADE Email Shell
  3.  * 
  4.  * 3-17-93   weber@eitech.com added service override from command line
  5.  * 9-8-92    ekr@eitech.com                          v1.1
  6.  * 27-Jun-92 weber@eitech.com marked ServiceMail(tm) v1.0
  7.  * 25-May-92 weber@eitech.com created
  8.  *
  9.  * Copyright (c)  1992 Enterprise Integration Technologies Corporation
  10.  *
  11.  * Permission to use, copy, modify, distribute, and sell this software and 
  12.  * its documentation for any purpose is hereby granted without fee, provided
  13.  * that (i) the above copyright notices and this permission notice appear in
  14.  * all copies of the software and related documentation, and (ii) the name of
  15.  * Enterprise Integration Technologies Corporation may not be used in any 
  16.  * advertising or publicity relating to the software without the specific, 
  17.  * prior written permission of Enterprise Integration Technologies Corporation.
  18.  * 
  19.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  20.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  21.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  22.  *
  23.  * IN NO EVENT SHALL ENTERPRISE INTEGRATION TECHNOLOGIES CORPORATION  BE
  24.  * LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF
  25.  * ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  26.  * PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY
  27.  * THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  28.  * PERFORMANCE OF THIS SOFTWARE.
  29.  */
  30.  
  31. #include <signal.h>
  32. #include "main.h"
  33. #include "mesh.h"
  34.  
  35. char *service=0;  /* this variable will be used by startup.c */
  36.  
  37. cleanup(signum) 
  38.      int signum;
  39. {
  40.   signal(signum, SIG_DFL);
  41.   kill(getpid(), signum);
  42. }
  43.  
  44. main(argc, argv)
  45.      int argc;
  46.      char **argv;
  47. {
  48.   signal(SIGINT, cleanup);
  49.   signal(SIGILL, cleanup);
  50.   signal(SIGTRAP, cleanup);
  51.   signal(SIGIOT, cleanup);
  52.   signal(SIGEMT, cleanup);
  53.   signal(SIGFPE, cleanup);
  54.   signal(SIGBUS, cleanup);
  55.   signal(SIGSEGV, cleanup);
  56.   signal(SIGTERM, cleanup);
  57.   signal(SIGXCPU, cleanup);
  58.   ProcessArguments(argc, argv);
  59.   return 0;
  60. }
  61.  
  62. ProcessArguments(argc, argv)
  63.      int argc;
  64.      char **argv;
  65. {
  66.   while (--argc && **++argv == '-') {
  67.     switch (*++*argv) {
  68.       case 's':
  69.       if (*++*argv || (--argc && **++argv)) service = *argv;
  70.       break;
  71.  
  72.       case 'l': 
  73. #ifdef FACILITY
  74.      logging=1;
  75.     if(strlen(*argv)!=1)
  76.       loglevel=atoi((*argv)+1);
  77.         else
  78.         loglevel=-1;
  79.     
  80.     switch (loglevel)
  81.         {
  82.           case 0:  loglevel=LOG_LOCAL0; break;
  83.       case 1:  loglevel=LOG_LOCAL1; break;
  84.       case 2:  loglevel=LOG_LOCAL2; break;
  85.       case 3:  loglevel=LOG_LOCAL3; break;
  86.       case 4:  loglevel=LOG_LOCAL4; break;
  87.       case 5:  loglevel=LOG_LOCAL5; break;
  88.       case 6:  loglevel=LOG_LOCAL6; break;
  89.       case 7:  loglevel=LOG_LOCAL7; break;
  90.       default :  
  91.         loglevel=FACILITY; break;
  92.         }
  93. #endif
  94.     break;
  95.     default:
  96.       usage();
  97.     }
  98.   }
  99.  
  100.   if (argc) {
  101.     while (argc--) {
  102.      extern int errno; 
  103.     FILE *stream;
  104.       
  105.       stream = fopen(*argv++, "r");
  106.       if (stream == NULL)
  107.     fprintf(stderr, "%s: could not open %s %d, ignoring.\n",
  108.         PROGRAM_NAME, argv[-1],errno);
  109.       else HandleMessage(stream);
  110.     }
  111.   }
  112.   else HandleMessage(stdin);
  113. }
  114.  
  115. usage() {
  116.   fprintf(stderr, "Usage:  %s [filename] ...\n", PROGRAM_NAME);
  117.   exit(1);
  118. }
  119.  
  120. ErrorExit(txt)
  121.      char *txt;
  122. {
  123.   ErrorMsg(txt);
  124.   exit(2);
  125. }
  126.  
  127. ErrorMsg(txt)
  128.      char *txt;
  129. {
  130.   if (txt) fprintf(stderr, "%s: %s\n", PROGRAM_NAME, txt);
  131. }
  132.  
  133. procopts(argc,argv)
  134.   int argc;
  135.   char **argv;
  136.   {
  137.     extern char *optarg;
  138.     extern int optind;
  139.     int ret;
  140.     while((ret=getopt(argc,argv,"l:"))!=-1)
  141.     {
  142.       switch(ret)
  143.       {
  144.         case 'l':
  145. #ifdef USESYSLOG
  146.           logging=1;
  147.           loglevel=atoi(optarg);
  148. #endif
  149.           break;
  150.         case '?':
  151.           break;
  152.         default:
  153.           break;
  154.       }
  155.     }
  156.     return (optind);
  157.   }
  158.