home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume36 / uqwk / part01 / options.c < prev    next >
C/C++ Source or Header  |  1993-03-11  |  5KB  |  239 lines

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <pwd.h>
  4. #include <string.h>
  5. #include "uqwk.h"
  6.  
  7. /*
  8.  *  Determine runtime options
  9.  */
  10.  
  11. DefaultOptions()
  12. /*
  13.  *  Set up default options
  14.  */
  15. {
  16.     struct passwd *pw;
  17.  
  18.     /* Do user-specific stuff*/
  19.     if (NULL == (pw = getpwuid(getuid())))
  20.     {
  21.         fprintf (stderr, "%s: warning: you don't exist\n", progname);
  22.         strcpy (user_name, DEF_USER_NAME);
  23.         strcpy (home_dir, DEF_HOME_DIR);
  24.     }
  25.     else
  26.     {
  27.         strcpy (user_name, pw->pw_name);
  28.         strcpy (home_dir, pw->pw_dir);
  29.     }
  30.  
  31.     /* Dinky misc options */
  32.     do_mail = DEF_DO_MAIL;
  33.     do_news = DEF_DO_NEWS;
  34.     inc_hdrs = DEF_INC_HDRS;
  35.     prt_opts = DEF_PRT_OPTS;
  36.     read_only = DEF_READ_ONLY;
  37.     max_blks = DEF_MAX_BLKS;
  38.  
  39.     strcpy (mail_dir, DEF_MAIL_DIR);
  40.     strcpy (mail_file, DEF_MAIL_FILE);
  41.     strcpy (act_file, DEF_ACT_FILE);
  42.     strcpy (nrc_file, DEF_NRC_FILE);
  43.     strcpy (news_dir, DEF_NEWS_DIR);
  44.  
  45.     strcpy (bbs_name, DEF_BBS_NAME);
  46.     strcpy (bbs_city, DEF_BBS_CITY);
  47.     strcpy (bbs_phone, DEF_BBS_PHONE);
  48.     strcpy (bbs_sysop, DEF_BBS_SYSOP);
  49.     strcpy (bbs_id, DEF_BBS_ID);
  50.     strcpy (rep_file, DEF_REP_FILE);
  51. }
  52.  
  53. EnvOptions()
  54. /*
  55.  *  Override options from environment variables
  56.  */
  57. {
  58.     char *c;
  59.  
  60.     if (NULL != (c = getenv ("UQ_DO_MAIL"))) do_mail = atoi (c);
  61.     if (NULL != (c = getenv ("UQ_DO_NEWS"))) do_news = atoi (c);
  62.     if (NULL != (c = getenv ("UQ_INC_HDRS"))) inc_hdrs = atoi (c);
  63.     if (NULL != (c = getenv ("UQ_PRT_OPTS"))) prt_opts = atoi (c);
  64.     if (NULL != (c = getenv ("UQ_READ_ONLY"))) read_only = atoi (c);
  65.     if (NULL != (c = getenv ("UQ_MAX_BLKS"))) max_blks = atoi (c);
  66.  
  67.     if (NULL != (c = getenv ("UQ_HOME_DIR"))) strcpy (home_dir, c);
  68.     if (NULL != (c = getenv ("UQ_MAIL_FILE"))) strcpy (mail_file, c);
  69.     if (NULL != (c = getenv ("UQ_MAIL_DIR"))) strcpy (mail_dir, c);
  70.     if (NULL != (c = getenv ("UQ_USER_NAME"))) strcpy (user_name, c);
  71.     if (NULL != (c = getenv ("UQ_NEWS_DIR"))) strcpy (news_dir, c);
  72.  
  73.     if (NULL != (c = getenv ("UQ_BBS_NAME"))) strcpy (bbs_name, c);
  74.     if (NULL != (c = getenv ("UQ_BBS_CITY"))) strcpy (bbs_city, c);
  75.     if (NULL != (c = getenv ("UQ_BBS_PHONE"))) strcpy (bbs_phone, c);
  76.     if (NULL != (c = getenv ("UQ_BBS_SYSOP"))) strcpy (bbs_sysop, c);
  77.     if (NULL != (c = getenv ("UQ_BBS_ID"))) strcpy (bbs_id, c);
  78.  
  79.     if (NULL != (c = getenv ("UQ_ACT_FILE"))) strcpy (act_file, c);
  80.     if (NULL != (c = getenv ("UQ_NRC_FILE"))) strcpy (nrc_file, c);
  81.  
  82.     if (NULL != (c = getenv ("UQ_REP_FILE"))) strcpy (rep_file, c);
  83. }
  84.  
  85. CommandOptions (argc, argv)
  86. int argc;
  87. char *argv[];
  88. /*
  89.  *  Override options from command line
  90.  */
  91. {
  92.     int i;
  93.  
  94.     for (i=1; i<argc; i++)
  95.     {
  96.         switch (argv[i][0])
  97.         {
  98.         case '+':
  99.             switch (argv[i][1])
  100.             {
  101.             case 'm':    do_mail = 1;
  102.                     break;
  103.  
  104.             case 'n':    do_news = 1;
  105.                     break;
  106.  
  107.             case 'h':    inc_hdrs = 1;
  108.                     break;
  109.  
  110.             case 'r':    read_only = 1;
  111.                     break;
  112.  
  113.             default:    BadFlag (argv[i]);
  114.                     break;
  115.             }
  116.             break;
  117.  
  118.         case '-':
  119.             switch (argv[i][1])
  120.             {
  121.             case 'm':    do_mail = 0;
  122.                     break;
  123.  
  124.             case 'n':    do_news = 0;
  125.                     break;
  126.  
  127.             case 'h':    inc_hdrs = 0;
  128.                     break;
  129.  
  130.             case 'r':    read_only = 0;
  131.                     break;
  132.  
  133.             case 'p':    prt_opts = 1;
  134.                     break;
  135.  
  136.             case 'M':    strcpy (mail_dir, &argv[i][2]);
  137.                     break;
  138.  
  139.             case 'f':    strcpy (mail_file, &argv[i][2]);
  140.                     break;
  141.  
  142.             case 'u':    strcpy (user_name, &argv[i][2]);
  143.                     break;
  144.  
  145.             case 'H':    strcpy (home_dir, &argv[i][2]);
  146.                     break;
  147.  
  148.             case 'b':    strcpy (bbs_name, &argv[i][2]);
  149.                     break;
  150.  
  151.             case 'c':    strcpy (bbs_city, &argv[i][2]);
  152.                     break;
  153.  
  154.             case 'P':    strcpy (bbs_phone, &argv[i][2]);
  155.                     break;
  156.  
  157.             case 's':    strcpy (bbs_sysop, &argv[i][2]);
  158.                     break;
  159.  
  160.             case 'i':    strcpy (bbs_id, &argv[i][2]);
  161.                     break;
  162.  
  163.             case 'a':    strcpy (act_file, &argv[i][2]);
  164.                     break;
  165.  
  166.             case 'N':    strcpy (nrc_file, &argv[i][2]);
  167.                     break;
  168.  
  169.             case 'S':    strcpy (news_dir, &argv[i][2]);
  170.                     break;
  171.  
  172.             case 'B':    max_blks = atoi (&argv[i][2]);
  173.                     break;
  174.  
  175.             case 'R':    strcpy (rep_file, &argv[i][2]);
  176.                     break;
  177.  
  178.             default:    BadFlag (argv[i]);
  179.                     break;
  180.             }
  181.             break;
  182.  
  183.         default:
  184.             BadFlag (argv[i]);
  185.             break;
  186.         }
  187.     }
  188.  
  189.     /* If mail file has not been overridden, set it */
  190.     if (!strcmp (mail_file, DEF_MAIL_FILE))
  191.     {
  192.         strcpy (mail_file, mail_dir);
  193.         strcat (mail_file, "/");
  194.         strcat (mail_file, user_name);
  195.     }
  196.  
  197.     /* If .newsrc file has not been overridden, set it */
  198.     if (!strcmp (nrc_file, DEF_NRC_FILE))
  199.     {
  200.         strcpy (nrc_file, home_dir);
  201.         strcat (nrc_file, "/.newsrc");
  202.     }
  203.  
  204.     if (prt_opts)
  205.     {
  206.         PrintOptions();
  207.         exit (0);
  208.     }
  209. }
  210.  
  211. BadFlag (c)
  212. char *c;
  213. {
  214.     fprintf (stderr, "%s: bad flag: %s\n", progname, c);
  215.     exit (0);
  216. }
  217.  
  218. PrintOptions ()
  219. {
  220.     printf ("Do mail: %d\n", do_mail);
  221.     printf ("Do news: %d\n", do_news);
  222.     printf ("Include headers: %d\n", inc_hdrs);
  223.     printf ("Read only: %d\n", read_only);
  224.     printf ("Maximum blocks: %d\n", max_blks);
  225.     printf ("Mail directory: %s\n", mail_dir);
  226.     printf ("News directory: %s\n", news_dir);
  227.     printf ("Mail file: %s\n", mail_file);
  228.     printf ("User name: %s\n", user_name);
  229.     printf ("Home directory: %s\n", home_dir);
  230.     printf ("BBS name: %s\n", bbs_name);
  231.     printf ("BBS city: %s\n", bbs_city);
  232.     printf ("BBS phone: %s\n", bbs_phone);
  233.     printf ("BBS sysop: %s\n", bbs_sysop);
  234.     printf ("BBS id: %s\n", bbs_id);
  235.     printf ("Active file: %s\n", act_file);
  236.     printf (".newsrc file: %s\n", nrc_file);
  237.     printf ("Reply file: %s\n", rep_file);
  238. }
  239.