home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / W / WWIVSOR.ZIP / DEFAULTS.C < prev    next >
Text File  |  1995-05-12  |  19KB  |  833 lines

  1. /*****************************************************************************
  2.  
  3.                 WWIV Version 4
  4.                     Copyright (C) 1988-1995 by Wayne Bell
  5.  
  6. Distribution of the source code for WWIV, in any form, modified or unmodified,
  7. without PRIOR, WRITTEN APPROVAL by the author, is expressly prohibited.
  8. Distribution of compiled versions of WWIV is limited to copies compiled BY
  9. THE AUTHOR.  Distribution of any copies of WWIV not compiled by the author
  10. is expressly prohibited.
  11.  
  12.  
  13. *****************************************************************************/
  14.  
  15.  
  16.  
  17. #include "vars.h"
  18.  
  19. #pragma hdrstop
  20.  
  21.  
  22. void select_editor(void)
  23. {
  24.   char *ss;
  25.   int i;
  26.  
  27.   helpl=37;
  28.   if (numed==0) {
  29.     nl();
  30.     pl(get_string(379));
  31.     nl();
  32.     return;
  33.   }
  34.   for (i=0; i<5; i++)
  35.     odc[i]=0;
  36.   pl(get_string(380));
  37.   for (i=0; i<numed; i++) {
  38.     npr("%d. %s\r\n",i+1,editors[i].description);
  39.     if (((i+1) %10)==0)
  40.       odc[(i+1)/10-1]=(i+1)/10;
  41.   }
  42.   nl();
  43.   ansic(2);
  44.   outstr(get_string(381));
  45.   npr("%d",numed);
  46.   outstr(get_string(382));
  47.   ansic(0);
  48.   ss=mmkey(2);
  49.   i=atoi(ss);
  50.   if ((i>=1) && (i<=numed))
  51.     thisuser.defed=i;
  52.   else
  53.     if (strcmp(ss,"0")==0)
  54.       thisuser.defed=0;
  55. }
  56.  
  57.  
  58. void print_cur_stat(void)
  59. {
  60.   userrec ur;
  61.  
  62.   outchr(12);
  63.  
  64.   ansic_x(1); outstr(get_string(383));
  65.   ansic_x(2); npr("%d X %d\r\n", thisuser.screenchars,
  66.     thisuser.screenlines);
  67.   ansic_x(1); outstr(get_string(384));
  68.   ansic_x(2); npr("%s\r\n", (thisuser.sysstatus & sysstatus_ansi)?
  69.     ((thisuser.sysstatus & sysstatus_color)? get_string(385):get_string(386)):
  70.     get_string(387));
  71.   ansic_x(1); outstr(get_string(388));
  72.   ansic_x(2); npr("%s\r\n",(thisuser.sysstatus & sysstatus_pause_on_page)?
  73.     get_string(389):get_string(390));
  74.   ansic_x(1); outstr(get_string(391));
  75.   ansic_x(2);
  76.   if ((thisuser.forwardsys==0) && (thisuser.forwardusr==0))
  77.     pl(get_string(392));
  78.   else {
  79.     if (thisuser.forwardsys) {
  80.       outstr(get_string(393));
  81.       npr("%s #%u @%u.\r\n",
  82.         net_networks[thisuser.net_num].name,
  83.         thisuser.forwardusr,thisuser.forwardsys);
  84.     } else {
  85.       if (thisuser.forwardusr==65535) {
  86.         pl(get_string(300));
  87.       } else {
  88.         read_user(thisuser.forwardusr,&ur);
  89.         if (ur.inact & inact_deleted) {
  90.           thisuser.forwardusr=0;
  91.           pl(get_string(392));
  92.         } else {
  93.           outstr(get_string(393));
  94.           npr("%s\r\n",nam(&ur,thisuser.forwardusr));
  95.         }
  96.       }
  97.     }
  98.   }
  99.   ansic_x(1); pl(get_string(394));
  100.   ansic_x(1); pl(get_string(395));
  101.   ansic_x(1); pl(get_string(396));
  102.   if (okansi()) {
  103.     ansic_x(1); pl(get_string(397));
  104.     ansic_x(1); outstr(get_string(398));
  105.     ansic_x(2); npr("%s\r\n",((thisuser.defed) && (thisuser.defed<=numed))?
  106.       editors[thisuser.defed-1].description:get_string(5));
  107.     ansic_x(1); outstr(get_string(399));
  108.     ansic_x(2); pl((thisuser.sysstatus & sysstatus_extra_color)?str_yes:str_no);
  109.   }
  110.   ansic_x(1); outstr(get_string(400));
  111.   ansic_x(2); npr("%d\r\n",thisuser.optional_val);
  112.   ansic_x(1); outstr(get_string(1149));
  113.   ansic_x(2); pl((thisuser.sysstatus & sysstatus_conference)?str_yes:str_no);
  114.   ansic_x(1); outstr(get_string(401));
  115.   ansic_x(2);
  116.   if (thisuser.wwiv_regnum)
  117.     npr("%ld\r\n",thisuser.wwiv_regnum);
  118.   else
  119.     pl(get_string(402));
  120.   if (num_languages>1) {
  121.     ansic_x(1); outstr(get_string(936));
  122.     ansic_x(2); pl(cur_lang_name);
  123.   }
  124.   if (num_instances()>1) {
  125.     ansic_x(1); outstr(get_string(1493));
  126.     ansic_x(2); pl((thisuser.sysstatus & sysstatus_no_msgs)?str_no:str_yes);
  127.   }
  128.   if (rip) {
  129.     ansic_x(1); outstr(get_string(1494));
  130.     ansic_x(2); pl((thisuser.sysstatus & sysstatus_disable_rip)?str_no:str_yes);
  131.   }
  132.   ansic_x(1); pl(get_string(403));
  133. }
  134.  
  135.  
  136. char *cn(char c)
  137. {
  138.   static char s[20];
  139.  
  140.   if ((checkcomp("Ami")) || (checkcomp("Mac"))) {
  141.     strcpy(s,get_string(404));
  142.     sprintf(s+strlen(s),"%d",c);
  143.     return(s);
  144.   }
  145.  
  146.   switch(c) {
  147.     case 0:
  148.       return(get_string(405));
  149.     case 1:
  150.       return(get_string(406));
  151.     case 2:
  152.       return(get_string(407));
  153.     case 3:
  154.       return(get_string(408));
  155.     case 4:
  156.       return(get_string(409));
  157.     case 5:
  158.       return(get_string(410));
  159.     case 6:
  160.       return(get_string(411));
  161.     case 7:
  162.       return(get_string(412));
  163.   }
  164.   return("");
  165. }
  166.  
  167. char *describe(char col)
  168. {
  169.   static char s[81];
  170.  
  171.   if (thisuser.sysstatus & sysstatus_color) {
  172.     strcpy(s,cn(col&0x07));
  173.     strcat(s,get_string(413));
  174.     strcat(s,cn((col>>4)&0x07));
  175.   } else {
  176.     if ((col & 0x07) == 0)
  177.       strcpy(s,get_string(414));
  178.     else
  179.       strcpy(s,get_string(392));
  180.   }
  181.   if (col & 0x08) {
  182.     if ((checkcomp("Ami")) || (checkcomp("Mac")))
  183.       strcat(s,get_string(415));
  184.     else
  185.       strcat(s,get_string(416));
  186.   }
  187.   if (col & 0x80) {
  188.     if (checkcomp("Ami"))
  189.       strcat(s,get_string(417));
  190.     else
  191.       if (checkcomp("Mac"))
  192.         strcat(s,get_string(418));
  193.       else
  194.         strcat(s,get_string(419));
  195.   }
  196.   return(s);
  197. }
  198.  
  199. void color_list(void)
  200. {
  201.   int i;
  202.  
  203.   nln(2);
  204.   for (i=0; i<8; i++) {
  205.     if (i==0)
  206.       setc(0x70);
  207.     else
  208.       setc(i);
  209.     npr("%d. %s",i,cn(i));
  210.     setc(0x07);
  211.     nl();
  212.   }
  213. }
  214.  
  215.  
  216.  
  217. void change_colors(void)
  218. {
  219.   int i,done,i1;
  220.   char s[81],ch,nc;
  221.  
  222.   done=0;
  223.   helpl=36;
  224.   nl();
  225.   do {
  226.     if ((thisuser.sysstatus & sysstatus_color)==0) {
  227.       strcpy(s,get_string(420));
  228.       if ((thisuser.bwcolors[1] & 0x70) == 0)
  229.         strcat(s,cn(thisuser.bwcolors[1] & 0x07));
  230.       else
  231.         strcat(s,cn((thisuser.bwcolors[1] >> 4) & 0x07));
  232.       pl(s);
  233.       nl();
  234.     }
  235.     for (i=0; i<10; i++) {
  236.       ansic(i);
  237.       itoa(i,s,10);
  238.       strcat(s,". ");
  239.       switch(i) {
  240.         case 0:
  241.           strcat(s,get_string(421));
  242.           break;
  243.         case 1:
  244.           strcat(s,get_string(422));
  245.           break;
  246.         case 2:
  247.           strcat(s,get_string(423));
  248.           break;
  249.         case 3:
  250.           strcat(s,get_string(424));
  251.           break;
  252.         case 4:
  253.           strcat(s,get_string(425));
  254.           break;
  255.         case 5:
  256.           strcat(s,get_string(426));
  257.           break;
  258.         case 6:
  259.           strcat(s,get_string(427));
  260.           break;
  261.         case 7:
  262.           strcat(s,get_string(428));
  263.           break;
  264.         case 8:
  265.           strcat(s,get_string(958));
  266.           break;
  267.         case 9:
  268.           strcat(s,get_string(959));
  269.           break;
  270.       }
  271.       if (thisuser.sysstatus & sysstatus_color)
  272.         strcat(s,describe(thisuser.colors[i]));
  273.       else
  274.         strcat(s,describe(thisuser.bwcolors[i]));
  275.       pl(s);
  276.     }
  277.     nl();
  278.     prt(2,get_string(429));
  279.     ch=onek("Q0123456789");
  280.     if (ch=='Q')
  281.       done=1;
  282.     else {
  283.       i1=ch-'0';
  284.       if (thisuser.sysstatus & sysstatus_color)  {
  285.         color_list();
  286.         ansic(0);
  287.         nl();
  288.         prt(2,get_string(430));
  289.         ch=onek("01234567");
  290.         nc=ch-'0';
  291.         prt(2,get_string(431));
  292.         ch=onek("01234567");
  293.         nc=nc | ((ch-'0') << 4);
  294.       } else {
  295.          nl();
  296.          prt(5,get_string(432));
  297.            if (yn()) {
  298.              if ((thisuser.bwcolors[1] & 0x70) == 0)
  299.                nc=0 | ((thisuser.bwcolors[1] & 0x07) << 4);
  300.              else
  301.                nc=(thisuser.bwcolors[1] & 0x70);
  302.            } else {
  303.              if ((thisuser.bwcolors[1] & 0x70) == 0)
  304.                nc=0 | (thisuser.bwcolors[1] & 0x07);
  305.              else
  306.                nc=((thisuser.bwcolors[1] & 0x70) >> 4);
  307.            }
  308.       }
  309.       if ((checkcomp("Ami")) || (checkcomp("Mac")))
  310.         prt(5,get_string(433));
  311.       else
  312.         prt(5,get_string(434));
  313.       if (yn())
  314.         nc |= 0x08;
  315.  
  316.       if (checkcomp("Ami"))
  317.         prt(5,get_string(435));
  318.       else
  319.         if (checkcomp("Mac"))
  320.           prt(5,get_string(436));
  321.         else
  322.           prt(5,get_string(437));
  323.       if (yn())
  324.         nc |= 0x80;
  325.  
  326.       nln(2);
  327.       setc(nc);
  328.       outstr(describe(nc));
  329.       ansic(0);
  330.       nln(2);
  331.       prt(5,get_string(438));
  332.       if (yn()) {
  333.         nl();
  334.         pl(get_string(439));
  335.         nl();
  336.         if (thisuser.sysstatus & sysstatus_color)
  337.           thisuser.colors[i1]=nc;
  338.         else
  339.           thisuser.bwcolors[i1]=nc;
  340.       } else {
  341.         nl();
  342.         pl(get_string(440));
  343.         nl();
  344.       }
  345.     }
  346.   } while ((!done) && (!hangup));
  347. }
  348.  
  349.  
  350.  
  351. void l_config_qscan(void)
  352. {
  353.   int i,abort;
  354.   char s[81];
  355.  
  356.   abort=0;
  357.   nl();
  358.   pl(get_string(441));
  359.   nl();
  360.   for (i=0; (i<num_subs) && (usub[i].subnum!=-1) && (!abort); i++) {
  361.     sprintf(s,"%c %s. %s",
  362.       (qsc_q[usub[i].subnum/32]&(1L<<(usub[i].subnum%32)))?'*':' ',
  363.       usub[i].keys,
  364.       subboards[usub[i].subnum].name);
  365.     pla(s,&abort);
  366.   }
  367.   nln(2);
  368. }
  369.  
  370. void config_qscan(void)
  371. {
  372.   char *s, s1[MAX_CONFERENCES+2], s2[120], ch;
  373.   int i,done,done1,oc,os,abort=0;
  374.  
  375.   if (menu_on()) {
  376.     rip_config_qscan();
  377.     return;
  378.   }
  379.  
  380.   done=done1=0;
  381.   oc=curconfsub;
  382.   os=usub[cursub].subnum;
  383.  
  384.   do {
  385.     if ((okconf(&thisuser)) && (uconfsub[1].confnum!=-1)) {
  386.       abort=0;
  387.       strcpy(s1," ");
  388.       nl();
  389.       pl(get_string(1150));
  390.       nl();
  391.       i=0;
  392.       while ((i<subconfnum) && (uconfsub[i].confnum!=-1) && (!abort)) {
  393.         sprintf(s2,"%c) %s",subconfs[uconfsub[i].confnum].designator,
  394.           stripcolors(subconfs[uconfsub[i].confnum].name));
  395.         pla(s2,&abort);
  396.         s1[i+1]=subconfs[uconfsub[i].confnum].designator;
  397.         s1[i+2]=0;
  398.         i++;
  399.       }
  400.       nl();
  401.       outstr(get_string(1082));
  402.       outstr(&s1[1]);
  403.       outstr(get_string(1083));
  404.       ch=onek(s1);
  405.     } else
  406.       ch='-';
  407.     switch (ch) {
  408.       case ' ':
  409.         done1=1;
  410.         break;
  411.       default:
  412.         if ((okconf(&thisuser)) && (uconfsub[1].confnum!=-1)) {
  413.           i=0;
  414.           while ((ch!=subconfs[uconfsub[i].confnum].designator) && (i<subconfnum))
  415.             i++;
  416.  
  417.           if (i>=subconfnum)
  418.             break;
  419.  
  420.           setuconf(CONF_SUBS, i, -1);
  421.         }
  422.         l_config_qscan();
  423.         done=0;
  424.         do {
  425.           nl();
  426.           outstr(get_string(1151));
  427.           s=mmkey(0);
  428.           if (s[0]) {
  429.             for (i=0; (i<num_subs) && (usub[i].subnum!=-1); i++) {
  430.               if (strcmp(usub[i].keys,s)==0) {
  431.                 qsc_q[usub[i].subnum/32] ^= (1L<<(usub[i].subnum%32));
  432.               }
  433.               if (strcmp(s,"S")==0) {
  434.                 qsc_q[usub[i].subnum/32] |= (1L<<(usub[i].subnum%32));
  435.               }
  436.               if (strcmp(s,"C")==0) {
  437.                 qsc_q[usub[i].subnum/32] &= ~(1L<<(usub[i].subnum%32));
  438.               }
  439.             }
  440.             if (strcmp(s,"Q")==0)
  441.               done=1;
  442.             if (strcmp(s,"?")==0)
  443.               l_config_qscan();
  444.           }
  445.         } while ((!done) && (!hangup));
  446.         break;
  447.     }
  448.     if ((!okconf(&thisuser)) || (uconfsub[1].confnum==-1))
  449.       done1=1;
  450.  
  451.   } while ((!done1) && (!hangup));
  452.  
  453.   if (okconf(&thisuser))
  454.     setuconf(CONF_SUBS, oc, os);
  455. }
  456.  
  457.  
  458. void list_macro(unsigned char *s)
  459. {
  460.   int i;
  461.  
  462.   i=0;
  463.   outchr('\"');
  464.   while ((i<80) && (s[i]!=0)) {
  465.     if (s[i]>=32)
  466.       outchr(s[i]);
  467.     else {
  468.       outchr('^');
  469.       outchr(s[i]+64);
  470.     }
  471.     ++i;
  472.   }
  473.   outchr('"');
  474.   nl();
  475. }
  476.  
  477.  
  478. void make_macros(void)
  479. {
  480.   unsigned char tempmac[81],s[81];
  481.   unsigned char ch,ch1;
  482.   int i,i1,done,done1;
  483.  
  484.   done=0;
  485.   do {
  486.     nl();
  487.     prt(2,get_string(444));
  488.     helpl=33;
  489.     ch=onek("QLM");
  490.     switch(ch) {
  491.       case 'Q':
  492.         done=1;
  493.         break;
  494.       case 'L':
  495.         nln(2);
  496.         pl(get_string(445));
  497.         list_macro(&(thisuser.macros[0][0]));
  498.         nl();
  499.         pl(get_string(446));
  500.         list_macro(&(thisuser.macros[1][0]));
  501.         nl();
  502.         pl(get_string(447));
  503.         list_macro(&(thisuser.macros[2][0]));
  504.         break;
  505.       case 'M':
  506.         nl();
  507.         prt(2,get_string(448));
  508.         ch1=onek("QADF");
  509.         if (ch1!='Q') {
  510.           switch(ch1) {
  511.             case 'A': i1=2; break;
  512.             case 'D': i1=0; break;
  513.             case 'F': i1=1; break;
  514.           }
  515.           strcpy(s,&(thisuser.macros[i1][0]));
  516.           thisuser.macros[i1][0]=0;
  517.           done1=0;
  518.           i=0;
  519.           nl();
  520.           pl(get_string(449));
  521.           nl();
  522.       okskey=0;
  523.           do {
  524.             ch1=getkey();
  525.             if (ch1==26)
  526.               done1=1;
  527.             else
  528.               if (ch1==8) {
  529.                 if (i>0) {
  530.                   i--;
  531.                   backspace();
  532.                   if (tempmac[i]<32)
  533.                     backspace();
  534.                 }
  535.               } else {
  536.                 if (ch1>=32) {
  537.                   tempmac[i++]=ch1;
  538.                   outchr(ch1);
  539.                 } else {
  540.                   tempmac[i++]=ch1;
  541.                   outchr('^');
  542.                   outchr(ch1+64);
  543.                 }
  544.               }
  545.             if (i>=78)
  546.               done1=1;
  547.           } while ((!done1) && (!hangup));
  548.       okskey=1;
  549.           tempmac[i]=0;
  550.           nl();
  551.           pl(get_string(450));
  552.           nln(2);
  553.           list_macro(tempmac);
  554.           nl();
  555.           prt(5,get_string(438));
  556.           if (yn()) {
  557.             strcpy(&(thisuser.macros[i1][0]),tempmac);
  558.             nl();
  559.             pl(get_string(451));
  560.           } else {
  561.             nl();
  562.             strcpy(&(thisuser.macros[i1][0]),s);
  563.             pl(get_string(452));
  564.           }
  565.         }
  566.         break;
  567.     }
  568.   } while ((!done) && (!hangup));
  569. }
  570.  
  571.  
  572. void input_pw1(void)
  573. {
  574.   char s[81],s1[81];
  575.  
  576.   nl();
  577.   prt(5,get_string(453));
  578.   if (yn()) {
  579.     nl();
  580.     pl(get_string(454));
  581.     outstr(": ");
  582.     echo=0;
  583.     input(s,8);
  584.     if (strcmp(s,thisuser.pw)) {
  585.       nl();
  586.       pl(get_string(455));
  587.       nl();
  588.       return;
  589.     }
  590.     nln(2);
  591.     pl(get_string(456));
  592.     outstr(": ");
  593.     echo=0;
  594.     input(s,8);
  595.     nln(2);
  596.     pl(get_string(457));
  597.     outstr(": ");
  598.     echo=0;
  599.     input(s1,8);
  600.     if (strcmp(s,s1)==0) {
  601.       if (strlen(s1)<3) {
  602.         nl();
  603.         pl(get_string(458));
  604.         pl(get_string(459));
  605.         nl();
  606.       } else {
  607.         strcpy(thisuser.pw,s);
  608.         nl();
  609.         pl(get_string(460));
  610.         nl();
  611.         sysoplog(get_stringx(1, 98));
  612.       }
  613.     } else {
  614.       nl();
  615.       pl(get_string(462));
  616.       pl(get_string(463));
  617.       nl();
  618.     }
  619.   }
  620. }
  621.  
  622. void modify_mailbox(void)
  623. {
  624.   char s[81];
  625.  
  626.   nl();
  627.   helpl=35;
  628.  
  629.   prt(5,get_string(464));
  630.   if (yn()) {
  631.     prt(5,get_string(465));
  632.     if (yn()) {
  633.       thisuser.forwardsys=0;
  634.       thisuser.forwardusr=-1;
  635.       return;
  636.     }
  637.   }
  638.   prt(5,get_string(466));
  639.   if (!yn()) {
  640.     thisuser.forwardsys=0;
  641.     thisuser.forwardusr=0;
  642.     return;
  643.   }
  644.   nl();
  645.   prt(2,get_string(467));
  646.   input(s,40);
  647.   parse_email_info(s, &thisuser.forwardusr, &thisuser.forwardsys);
  648.   if (thisuser.forwardsys) {
  649.     thisuser.net_num=net_num;
  650.     if (!thisuser.forwardusr) {
  651.       thisuser.forwardsys=thisuser.net_num=0;
  652.       nl();
  653.       pl(get_string(468));
  654.       nl();
  655.     }
  656.  } else if (thisuser.forwardusr==usernum) {
  657.     nl();
  658.     pl(get_string(469));
  659.     nl();
  660.     thisuser.forwardusr=0;
  661.   }
  662.   if ((!thisuser.forwardusr) && (!thisuser.forwardsys)) {
  663.     thisuser.net_num=0;
  664.     nl();
  665.     pl(get_string(470));
  666.     nl();
  667.   } else {
  668.     nl();
  669.     pl(get_string(471));
  670.     nl();
  671.   }
  672. }
  673.  
  674.  
  675. void optional_lines(void)
  676. {
  677.   char s[81];
  678.   int i;
  679.  
  680.   pl(get_string(472));
  681.   pl(get_string(473));
  682.   prt(2,get_string(474));
  683.   input(s,2);
  684.  
  685.   i=atoi(s);
  686.   if ((s[0]) && (i>=0) && (i<11))
  687.     thisuser.optional_val = i;
  688.  
  689. }
  690.  
  691.  
  692. void enter_regnum(void)
  693. {
  694.   char s[81];
  695.   long l;
  696.  
  697.   pl(get_string(475));
  698.   pl(get_string(476));
  699.   nl();
  700.   prt(2,get_string(261));
  701.   input(s,5);
  702.   l=atol(s);
  703.   if ((s[0]) && (l>=0)) {
  704.     thisuser.wwiv_regnum = l;
  705.     changedsl();
  706.   }
  707. }
  708.  
  709. void defaults(void)
  710. {
  711.   int done;
  712.   char ch;
  713.  
  714.   done=0;
  715.   if (menu_on() == 0)
  716.     print_cur_stat();
  717.   do {
  718.     tleft(1);
  719.     if (hangup)
  720.       return;
  721.     nl();
  722.     helpl=4;
  723.     if (menu_on()) {
  724.       printmenu(316);
  725.       if (thisuser.sysstatus & sysstatus_ansi)
  726.             comstr("|@AQ33X\r\r");
  727.       if (thisuser.sysstatus & sysstatus_pause_on_page)
  728.             comstr("|@AQ3RX\r\r");
  729.       if (thisuser.sysstatus & sysstatus_extra_color)
  730.             comstr("|@AQ4FX\r\r");
  731.       if (thisuser.sysstatus & sysstatus_conference)
  732.             comstr("|@AQ53X\r\r");
  733.       if ((thisuser.sysstatus & sysstatus_no_msgs)==0)
  734.             comstr("|@AQ5RX\r\r");
  735.       ch=onek("Q?123456789ABCWLMR");
  736.     } else if (okansi()) {
  737.       prt(2,get_string(477));
  738.       ch=onek("Q?123456789ABCWLMR");
  739.     } else {
  740.       prt(2,get_string(478));
  741.       ch=onek("Q?1234567BCWLMR");
  742.     }
  743.     if (menu_on()) {
  744.       comr("|*");
  745.       printmenu(319);
  746.     }
  747.     switch(ch) {
  748.       case 'Q':
  749.         if (menu_on())
  750.           cleared = WASCLEARED;
  751.         done=1;
  752.         break;
  753.       case '?':
  754.         print_cur_stat();
  755.         break;
  756.       case '1':
  757.         input_screensize();
  758.         break;
  759.       case '2':
  760.         if (menu_on()) {
  761.           thisuser.sysstatus ^= sysstatus_ansi;
  762.           thisuser.sysstatus |= sysstatus_color;
  763.           print_cur_stat();
  764.         } else
  765.           input_ansistat();
  766.         break;
  767.       case '3':
  768.         thisuser.sysstatus ^= sysstatus_pause_on_page;
  769.         print_cur_stat();
  770.         break;
  771.       case '4':
  772.         modify_mailbox();
  773.         break;
  774.       case '5':
  775.         config_qscan();
  776.         break;
  777.       case '6':
  778.         input_pw1();
  779.         break;
  780.       case '7':
  781.         make_macros();
  782.         break;
  783.       case '8':
  784.         change_colors();
  785.         break;
  786.       case '9':
  787.        select_editor();
  788.         break;
  789.       case 'A':
  790.         thisuser.sysstatus ^= sysstatus_extra_color;
  791.         print_cur_stat();
  792.         break;
  793.       case 'B':
  794.         optional_lines();
  795.         break;
  796.       case 'C':
  797.         thisuser.sysstatus ^= sysstatus_conference;
  798.         changedsl();
  799.         print_cur_stat();
  800.         break;
  801.       case 'W':
  802.         enter_regnum();
  803.         break;
  804.       case 'L':
  805.         if (num_languages>1)
  806.           input_language();
  807.         break;
  808.       case 'M':
  809.         if (num_instances()>1) {
  810.           thisuser.sysstatus &= ~sysstatus_no_msgs;
  811.           nl();
  812.           prt(5, get_string(1495));
  813.           if (!yn())
  814.             thisuser.sysstatus |= sysstatus_no_msgs;
  815.         }
  816.         break;
  817.       case 'R':
  818.         if (rip) {
  819.           thisuser.sysstatus &= ~sysstatus_disable_rip;
  820.           nl();
  821.           prt(5, get_string(1496));
  822.           if (!yn()) {
  823.             thisuser.sysstatus |= sysstatus_disable_rip;
  824.             rip_cls();
  825.           }
  826.         }
  827.         break;
  828.     }
  829.   } while ((!done) && (!hangup));
  830. }
  831.  
  832.  
  833.