home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / APPS / elm.lzh / ELM / SRC / ARGS.C < prev    next >
Text File  |  1991-01-11  |  6KB  |  195 lines

  1.  
  2. static char rcsid[] = "@(#)$Id: args.c,v 4.1 90/04/28 22:42:31 syd Exp $";
  3.  
  4. /*******************************************************************************
  5.  *  The Elm Mail System  -  $Revision: 4.1 $   $State: Exp $
  6.  *
  7.  *             Copyright (c) 1986, 1987 Dave Taylor
  8.  *             Copyright (c) 1988, 1989, 1990 USENET Community Trust
  9.  *******************************************************************************
  10.  * Bug reports, patches, comments, suggestions should be sent to:
  11.  *
  12.  *    Syd Weinstein, Elm Coordinator
  13.  *    elm@DSI.COM            dsinc!elm
  14.  *
  15.  *******************************************************************************
  16.  * $Log:    args.c,v $
  17.  * Revision 4.1  90/04/28  22:42:31  syd
  18.  * checkin of Elm 2.3 as of Release PL0
  19.  * 
  20.  *
  21.  ******************************************************************************/
  22.  
  23. /** starting argument parsing routines for ELM system...
  24.  
  25. **/
  26.  
  27. #include "headers.h"
  28. #include "patchlevel.h"
  29.  
  30. extern char *optarg;        /* optional argument as we go */
  31. extern int   optind;            /* argnum + 1 when we leave   */
  32.  
  33. void exit();    /* just keeping lint happy.... */
  34.  
  35. char *
  36. parse_arguments(argc, argv, to_whom)
  37. int argc;
  38. char *argv[], *to_whom;
  39. {
  40.     /** Set flags according to what was given to program.  If we are 
  41.         fed a name or series of names, put them into the 'to_whom' buffer
  42.         and if the check_only flag wasn't presented, set mail_only to ON,
  43.         and if stdin is not a tty, set batch_only  to ON;
  44.         Return req_mfile, which points to a named mail file or is empty.
  45.         **/
  46.  
  47.     register int c = 0;
  48.     char *strcpy();
  49.     static char req_mfile[SLEN];
  50.  
  51.     to_whom[0] = '\0';
  52.     batch_subject[0] = '\0';
  53.  
  54.         while ((c = getopt(argc, argv, "?acd:f:hkKms:Vvwz")) != EOF) {
  55.        switch (c) {
  56.          case 'a' : arrow_cursor++;        break;
  57.          case 'c' : check_only++;        break;
  58.          case 'd' : debug = atoi(optarg);    break;
  59.          case 'f' : strcpy(req_mfile, optarg);    break;
  60.          case '?' :
  61.          case 'h' : args_help();
  62.          case 'k' : hp_terminal++;    break;
  63.          case 'K' : hp_terminal++; hp_softkeys++;    break;
  64.          case 'm' : mini_menu = 0;    break;
  65.          case 's' : strcpy(batch_subject, optarg);    break;
  66.              case 'V' : sendmail_verbose++;     break;
  67.          case 'v' : args_version();
  68.          case 'w' : warnings = 0;    break;
  69.          case 'z' : check_size++;   break;
  70.         }
  71.      }
  72.  
  73.  
  74. #ifndef DEBUG
  75.     if (debug)
  76.       printf(
  77.      "Warning: system created without debugging enabled - request ignored\n");
  78.     debug = 0;
  79. #endif
  80.  
  81.     if (optind < argc) {
  82.       while (optind < argc) {
  83.         if (strlen(to_whom) + strlen(to_whom[0] != '\0'? " " : "") +
  84.             strlen(argv[optind]) > SLEN)
  85.                 exit(printf("\l\rToo many addresses, or addresses too long!\l\r"));
  86.  
  87.         sprintf(to_whom, "%s%s%s", to_whom, 
  88.                 to_whom[0] != '\0'? " " : "", argv[optind]);
  89.         if(!check_only)
  90.           mail_only++;
  91.         optind++;
  92.       }
  93.       check_size = 0;    /* NEVER do this if we're mailing!! */
  94.     }
  95.  
  96.      if (strlen(batch_subject) > 0 && ! mail_only) 
  97.        exit(printf(
  98.      "\l\rDon't understand specifying a subject and no-one to send to!\l\r"));
  99.  
  100.     if (!isatty(fileno(stdin)) && !check_only) {
  101.       batch_only = ON;
  102.       if(*batch_subject == '\0')
  103.         strcpy(batch_subject, DEFAULT_BATCH_SUBJECT);
  104.     }
  105.     return(req_mfile);
  106.  
  107.  
  108. }
  109.  
  110. args_help()
  111. {
  112.     /**  print out possible starting arguments... **/
  113.  
  114.     printf("\nPossible Starting Arguments for ELM program:\n\n");
  115.     printf("\targ\t\t\tMeaning\n");
  116.     printf("\t -a \t\tArrow - use the arrow pointer regardless\n");
  117.     printf("\t -c \t\tCheckalias - check the given aliases only\n");
  118.     printf("\t -dn\t\tDebug - set debug level to 'n'\n");
  119.     printf(
  120.       "\t -fx\t\tFolder - read folder 'x' rather than incoming mailbox\n");
  121.     printf("\t -h \t\tHelp - give this list of options\n");
  122.     printf("\t -k \t\tKeypad - enable HP 2622 terminal keyboard\n");
  123.     printf("\t -K \t\tKeypad&softkeys - enable use of softkeys + \"-k\"\n");
  124.     printf("\t -m \t\tMenu - Turn off menu, using more of the screen\n");
  125.     printf("\t -sx\t\tSubject 'x' - for batchmailing\n");
  126.         printf("\t -V \t\tEnable sendmail voyeur mode.\n");
  127.     printf("\t -v \t\tPrint out ELM version information.\n");
  128.     printf("\t -w \t\tSupress warning messages...\n");
  129.     printf("\t -z \t\tZero - don't enter ELM if no mail is pending\n");
  130.     printf("\n");
  131.     printf("\n");
  132.     exit(1);
  133. }
  134.  
  135. args_version()
  136. {
  137.     /** print out version information **/
  138.  
  139.     printf("\nElm Version and Identification Information:\n\n");
  140.     printf("\tElm %s PL%d, of %s %s\n",VERSION,PATCHLEVEL,VERS_DATE,OVERSION);
  141.     printf("\t(C) Copyright 1986, 1987 Dave Taylor\n");
  142.     printf("\t(C) Copyright 1988, 1989, 1990 USENET Community Trust\n");
  143.     printf("\t----------------------------------\n");
  144.     printf("\tConfigured %s\n", CONFIGURE_DATE);
  145.     printf("\t----------------------------------\n");
  146.  
  147. #ifdef USE_EMBEDDED_ADDRESSES
  148.     printf("\tFrom: and Reply-To: addresses are good: USE_EMBEDDED_ADDRESSES\n");
  149. #else /* USE_EMBEDDED_ADDRESSES */
  150.     printf("\tFrom: and Reply-To: addresses ignored: not USE_EMBEDDED_ADDRESSES\n");
  151. #endif /* USE_EMBEDDED_ADDRESSES */
  152.  
  153. #ifdef OPTIMIZE_RETURN
  154.     printf("\tReturn addresses will be optimized: OPTIMIZE_RETURN\n");
  155. #else /* OPTIMIZE_RETURN */
  156.     printf("\tReturn addresses will not be optimized: not OPTIMIZE_RETURN\n");
  157. #endif
  158.  
  159. #ifdef INTERNET
  160.     printf("\tPrefers Internet address formats: INTERNET\n");
  161. #else /* INTERNET */
  162.     printf("\tInternet address formats not used: not INTERNET\n");
  163. #endif /* INTERNET */
  164.  
  165. #ifdef DEBUG
  166.     printf("\tDebug options are available: DEBUG\n");
  167. #else /* DEBUG */
  168.     printf("\tNo debug options are available: not DEBUG\n");
  169. #endif /* DEBUG */
  170.         
  171. #ifdef CRYPT
  172.     printf("\tCrypt function enabled: CRYPT\n");
  173. #else /* CRYPT */
  174.     printf("\tCrypt function disabled: not CRYPT\n");
  175. #endif /* CRYPT */
  176.  
  177. #ifdef ALLOW_MAILBOX_EDITING
  178.     printf("\tMailbox editing included: ALLOW_MAILBOX_EDITING\n");
  179. #else /* ALLOW_MAILBOX_EDITING */
  180.     printf("\tMailbox editing not included: not ALLOW_MAILBOX_EDITING\n");
  181. #endif /* ALLOW_MAILBOX_EDITING */
  182.  
  183. #ifdef ENABLE_CALENDAR
  184.     printf("\tCalendar file feature enabled: ENABLE_CALENDAR\n");
  185.     printf("\t\t(Default calendar file is %s)\n",dflt_calendar_file);
  186. #else /* ENABLE_CALENDAR */
  187.     printf("\tCalendar file feature disabled: not ENABLE_CALENDAR\n");
  188. #endif /* ENABLE_CALENDAR */
  189.  
  190.     printf("\n\n");
  191.     exit(1);
  192.  
  193. }
  194.  
  195.