home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / BBS / MISC / XSRC_117.ZIP / EDITSTUF.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-07  |  18.6 KB  |  589 lines

  1. #include "msg.h"
  2. #include "xext.h"
  3. #include "awindow.h"
  4. #include "xkeys.h"
  5.  
  6. char mskphone[]="(___)___-____";
  7. char mskdate[]="__/__/____";
  8. char mskflags[]="________|________";
  9. #define msk35 msk78+43
  10. #define msk36 msk78+42
  11. #define mskst msk35+33
  12. #define mskzip msk35+30
  13. #define mskcit msk35+12
  14. #define msk1 msk78+77
  15. #define msk2 msk78+76
  16. #define msk3 msk35+32
  17. #define msk4 msk35+31
  18. #define msk5 msk35+30
  19. #define msk6 msk35+29
  20. #define msk8 msk35+27
  21. #define msk10 msk35+25
  22. #define msk11 msk35+24
  23. #define msk47 msk78+31
  24. #define msk63 msk78+15
  25. #define msk15 msk78+63
  26. #define msk12 msk78+66
  27. #define msk58 msk78+20
  28. #define msk46 msk78+32
  29. #define msk16 msk78+62
  30.  
  31. #define USEREDITOR  1
  32. #define OPTIONS     2
  33.  
  34.  
  35. void pascal edit_user (char type) {
  36.  
  37.     WINDOW *wnd;
  38.     FIELD *fld;
  39.     char flags[18];
  40.     char seclvls[10][7];
  41.     register int x;
  42.     int oldx,oldy;
  43.     char s[81];
  44.     word tempbaud;
  45.     char tempsafe,oldtimer;
  46.     char ldate[15];
  47.     char bdate[15];
  48.     char cold[2];
  49.     char clr[2];
  50.     char more[2];
  51.     char genflags[4];
  52.     char width[4];
  53.     char length[4];
  54.     char expert[2];
  55.     char twit[2];
  56.     char spec[2];
  57.     char ignhr[2];
  58.     char ignrat[2];
  59.     char fse[2];
  60.     char graph[2];
  61.     char amnu[2];
  62.     char nokill[2];
  63.     char del[2];
  64.     char arq[2];
  65.     char pointid[6];
  66.     char credit[6];
  67.     char hiok[2];
  68.     char comptype[4];
  69.     char upk[11];
  70.     char downk[11];
  71.     char upno[6];
  72.     char downno[6];
  73.     char posts[6];
  74.     char viol[4];
  75.     char times[11];
  76.     char dktoday[6];
  77.     char uktoday[6];
  78.     char callsperday[6];
  79.     char timepercall[6];
  80.     char totaltime[6];
  81.     char callstoday[6];
  82.     char timetoday[6];
  83.     char timeleft[6];
  84.     char inout[2];
  85.     char debug[2];
  86.     char swap[2];
  87.     char trace[2];
  88.     char swapdisk[2];
  89.  
  90.     if(inwindow & USEREDITOR) {
  91.         fputs("\07",stdout);
  92.         return;
  93.     }
  94.     tempbaud=baud;
  95.     tempsafe=safe;
  96.     if(!type) baud=0;   /* Allow remote use */
  97.     safe=0;
  98.     oldtimer=timer_off;
  99.     timer_off=1;
  100.     curr_cursor(&oldx,&oldy);
  101.     if(inwindow & USEREDITOR) {
  102.     }
  103.     wnd=establish_window(0,0,20,80);
  104.     if(!wnd) {
  105.         error_message(" Can't make window ");
  106. Outtahere:
  107.         while(!inkey());
  108.         clear_message();
  109.         baud=tempbaud;
  110.         safe=tempsafe;
  111.         timer_off=oldtimer;
  112.         cursor(oldx,oldy);
  113.         return;
  114.     }
  115.     inwindow |= USEREDITOR;
  116.     set_title(wnd," Edit User & Stuff -- [ESCape] when finished ");
  117.     set_colors(wnd,ALL,BLUE,WHITE,BRIGHT);
  118.     set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
  119.     set_border(wnd,2);
  120.     display_window(wnd);
  121.     wprompt(wnd,1,1,"Name:");
  122.     wprompt(wnd,1,2,"Handle:");
  123.     wprompt(wnd,1,3,"Phone#1:");
  124.     wprompt(wnd,37,3,"Phone#2:");
  125.     wprompt(wnd,1,4,"City:");
  126.     wprompt(wnd,37,4,"Flags:   [                 ]");
  127.     for(x=0;x<10;x++) {
  128.         sprintf(s,"Sec#%d:",x);
  129.         if(x<5) {
  130.             wprompt(wnd,(x*14)+1,5,s);
  131.         }
  132.         else {
  133.             wprompt(wnd,((x-5)*14)+1,6,s);
  134.         }
  135.         sprintf(seclvls[x],"%-01u",user.stat[x]);
  136.     }
  137.     *flags=0;
  138.     for (x=0;x<16;x++) {
  139.         (user.attr2 & (1<<x)) ? strcat(flags,"X") : strcat(flags,"-");
  140.     }
  141.     sprintf(bdate,"%02d%02d%04d",user.birthdate.da_mon,user.birthdate.da_day,user.birthdate.da_year);
  142.     sprintf(ldate,"%02d%02d%04d",user.lastdate.da_mon,user.lastdate.da_day,user.lastdate.da_year);
  143.     sprintf(pointid,"%01u",user.pointid);
  144.     sprintf(credit,"%01d",user.credit);
  145.     sprintf(timepercall,"%01u",user.timepercall);
  146.     sprintf(callsperday,"%01u",user.callsperday);
  147.     sprintf(totaltime,"%01u",user.totaltime);
  148.     sprintf(timetoday,"%01u",user.timetoday);
  149.     sprintf(callstoday,"%01u",user.callstoday);
  150.  
  151.     if(user.gen1) *genflags='X';
  152.     else *genflags='-';
  153.     if(user.gen2) genflags[1]='X';
  154.     else genflags[1]='-';
  155.     if(user.gen3) genflags[2]='X';
  156.     else genflags[2]='-';
  157.     genflags[3]=0;
  158.     if(user.cold) strcpy(cold,"X");
  159.     else strcpy(cold,"-");
  160.     if(user.more) strcpy(more,"-");
  161.     else strcpy(more,"X");
  162.     if(user.scrnclr) strcpy(clr,"-");
  163.     else strcpy(clr,"X");
  164.     if(user.graphics) strcpy(graph,"X");
  165.     else strcpy(graph,"-");
  166.     if(user.fullscreen) strcpy(fse,"X");
  167.     else strcpy(fse,"-");
  168.     if(user.commodore) strcpy(spec,"X");
  169.     else strcpy(spec,"-");
  170.     if(user.expert) strcpy(expert,"X");
  171.     else strcpy(expert,"-");
  172.     if(user.twit) strcpy(twit,"X");
  173.     else strcpy(twit,"-");
  174.     if(user.ansimenus) strcpy(amnu,"-");
  175.     else strcpy(amnu,"X");
  176.     if(user.deleted) strcpy(del,"X");
  177.     else strcpy(del,"-");
  178.     if(user.ignorehrs) strcpy(ignhr,"X");
  179.     else strcpy(ignhr,"-");
  180.     if(user.ignorerat) strcpy(ignrat,"X");
  181.     else strcpy(ignrat,"-");
  182.     if(user.nokill) strcpy(nokill,"X");
  183.     else strcpy(nokill,"-");
  184.     if(user.arq) strcpy(arq,"X");
  185.     else strcpy(arq,"-");
  186.     sprintf(width,"%01hu",user.width);
  187.     sprintf(length,"%01hu",user.length);
  188.     if(user.hiok) strcpy(hiok,"X");
  189.     else strcpy(hiok,"-");
  190.     if(conf.sysopin) strcpy(inout,"X");
  191.     else strcpy(inout,"-");
  192.     if(conf.debug) strcpy(debug,"X");
  193.     else strcpy(debug,"-");
  194.     if(conf.swap) strcpy(swap,"X");
  195.     else strcpy(swap,"-");
  196.     if(conf.trace) strcpy(trace,"X");
  197.     else strcpy(trace,"-");
  198.     sprintf(comptype,"%01hu",user.comptype);
  199.     sprintf(upk,"%01lu",user.upk);
  200.     sprintf(downk,"%01lu",user.downk);
  201.     sprintf(upno,"%01u",user.upno);
  202.     sprintf(downno,"%01u",user.downno);
  203.     sprintf(posts,"%01u",user.posts);
  204.     sprintf(times,"%01lu",user.times);
  205.     sprintf(viol,"%01hu",user.violations);
  206.     sprintf(uktoday,"%01u",user.uktoday);
  207.     sprintf(dktoday,"%01u",user.dktoday);
  208.     sprintf(timeleft,"%01u",(word)((long)timelimit-(getxbbstime()/60L)));
  209.     sprintf(swapdisk,"%c",conf.useswapdisk);
  210.  
  211.     wprompt(wnd,1,7,"Birth:");
  212.     wprompt(wnd,33,7,"Last:");
  213.     if(!conf.genstatezip) {
  214.         wprompt(wnd,1,8,"State:");
  215.         wprompt(wnd,14,8,"Zip:");
  216.     }
  217.     else wprompt(wnd,1,8,"GenFld:");
  218.     wprompt(wnd,27,8,"Cold: [ ]");
  219.     wprompt(wnd,38,8,"Clr: [ ]");
  220.     wprompt(wnd,48,8,"More: [ ]");
  221.     wprompt(wnd,59,8,"GenFlags: [   ]");
  222.     wprompt(wnd,1,9,"Graph: [ ]");
  223.     wprompt(wnd,13,9,"Full: [ ]");
  224.     wprompt(wnd,24,9,"Spec: [ ]");
  225.     wprompt(wnd,35,9,"Exp: [ ]");
  226.     wprompt(wnd,45,9,"Twit: [ ]");
  227.     wprompt(wnd,57,9,"AMnu: [ ]");
  228.     wprompt(wnd,68,9,"Del: [ ]");
  229.     wprompt(wnd,1,10,"IgnHrs: [ ]");
  230.     wprompt(wnd,14,10,"IgnRat: [ ]");
  231.     wprompt(wnd,27,10,"NoKill: [ ]");
  232.     wprompt(wnd,40,10,"Arq: [ ]");
  233.     wprompt(wnd,50,10,"Length:");
  234.     wprompt(wnd,64,10,"Width:");
  235.     wprompt(wnd,1,11,"PointID:");
  236.     wprompt(wnd,16,11,"Password:");
  237.     wprompt(wnd,38,11,"Credit:");
  238.     wprompt(wnd,52,11,"HiOK: [ ]");
  239.     wprompt(wnd,63,11,"CompType:");
  240.     wprompt(wnd,1,12,"UpK:");
  241.     wprompt(wnd,18,12,"DownK:");
  242.     wprompt(wnd,38,12,"Up#:");
  243.     wprompt(wnd,53,12,"Down#:");
  244.     wprompt(wnd,1,13,"Posts:");
  245.     wprompt(wnd,18,13,"Times:");
  246.     wprompt(wnd,37,13,"Violations:");
  247.     wprompt(wnd,54,13,"UKtoday:");
  248.     wprompt(wnd,1,14,"DKtoday:");
  249.     wprompt(wnd,16,14,"Time/Call:");
  250.     wprompt(wnd,35,14,"Calls/Day:");
  251.     wprompt(wnd,54,14,"TotalTime:");
  252.     wprompt(wnd,1,15,"TimeToday:");
  253.     wprompt(wnd,20,15,"CallsToday:");
  254.     wprompt(wnd,40,15,"TimeLeft:");
  255.     wprompt(wnd,1,17,"You in? [ ]");
  256.     wprompt(wnd,14,17,"Debug? [ ]");
  257.     wprompt(wnd,26,17,"Trace? [ ]");
  258.     wprompt(wnd,38,17,"Swap? [ ]");
  259.     wprompt(wnd,49,17,"Swapdisk:");
  260.  
  261.     init_template(wnd);
  262.  
  263.     fld=establish_field(wnd,11,1,msk35,user.name,'a');
  264.     fld=establish_field(wnd,11,2,msk35,user.handle,'a');
  265.     if(!conf.genphone) {
  266.         fld=establish_field(wnd,11,3,mskphone,user.phone1,'N');
  267.         fld=establish_field(wnd,46,3,mskphone,user.phone2,'N');
  268.     }
  269.     else {
  270.         fld=establish_field(wnd,11,3,msk10,user.phone1,'A');
  271.         fld=establish_field(wnd,46,3,msk10,user.phone2,'A');
  272.     }
  273.     fld=establish_field(wnd,11,4,mskcit,user.city,'a');
  274.     fld=establish_field(wnd,47,4,mskflags,flags,'O');
  275.     for(x=0;x<10;x++) {
  276.         if(x<5) {
  277.             fld=establish_field(wnd,(x*14)+8,5,msk5,seclvls[x],'N');
  278.         }
  279.         else {
  280.             fld=establish_field(wnd,((x-5)*14)+8,6,msk5,seclvls[x],'N');
  281.         }
  282.     }
  283.     fld=establish_field(wnd,9,7,mskdate,bdate,'D');
  284.     fld=establish_field(wnd,39,7,mskdate,ldate,'D');
  285.     if(!conf.genstatezip) {
  286.         fld=establish_field(wnd,9,8,mskst,user.state,'A');
  287.         fld=establish_field(wnd,19,8,mskzip,user.zip,'N');
  288.     }
  289.     else {
  290.         fld=establish_field(wnd,9,8,msk8,user.state,'a');
  291.     }
  292.     fld=establish_field(wnd,34,8,msk1,cold,'O');
  293.     fld=establish_field(wnd,44,8,msk1,clr,'O');
  294.     fld=establish_field(wnd,55,8,msk1,more,'O');
  295.     fld=establish_field(wnd,70,8,msk3,genflags,'O');
  296.     fld=establish_field(wnd,9,9,msk1,graph,'O');
  297.     fld=establish_field(wnd,20,9,msk1,fse,'O');
  298.     fld=establish_field(wnd,31,9,msk1,spec,'O');
  299.     fld=establish_field(wnd,41,9,msk1,expert,'O');
  300.     fld=establish_field(wnd,52,9,msk1,twit,'O');
  301.     fld=establish_field(wnd,64,9,msk1,amnu,'O');
  302.     fld=establish_field(wnd,74,9,msk1,del,'O');
  303.     fld=establish_field(wnd,10,10,msk1,ignhr,'O');
  304.     fld=establish_field(wnd,23,10,msk1,ignrat,'O');
  305.     fld=establish_field(wnd,36,10,msk1,nokill,'O');
  306.     fld=establish_field(wnd,46,10,msk1,arq,'O');
  307.     fld=establish_field(wnd,58,10,msk3,length,'N');
  308.     fld=establish_field(wnd,71,10,msk3,width,'N');
  309.     fld=establish_field(wnd,10,11,msk5,pointid,'N');
  310.     fld=establish_field(wnd,26,11,msk11,user.password,'a');
  311.     fld=establish_field(wnd,46,11,msk5,credit,'N');
  312.     fld=establish_field(wnd,59,11,msk1,hiok,'O');
  313.     fld=establish_field(wnd,73,11,msk3,comptype,'N');
  314.     fld=establish_field(wnd,6,12,msk10,upk,'N');
  315.     fld=establish_field(wnd,25,12,msk10,downk,'N');
  316.     fld=establish_field(wnd,43,12,msk5,upno,'N');
  317.     fld=establish_field(wnd,60,12,msk5,downno,'N');
  318.     fld=establish_field(wnd,9,13,msk5,posts,'N');
  319.     fld=establish_field(wnd,25,13,msk10,times,'N');
  320.     fld=establish_field(wnd,49,13,msk3,viol,'N');
  321.     fld=establish_field(wnd,63,13,msk5,uktoday,'N');
  322.     fld=establish_field(wnd,10,14,msk5,dktoday,'N');
  323.     fld=establish_field(wnd,28,14,msk5,timepercall,'N');
  324.     fld=establish_field(wnd,46,14,msk5,callsperday,'N');
  325.     fld=establish_field(wnd,66,14,msk5,totaltime,'N');
  326.     fld=establish_field(wnd,12,15,msk5,timetoday,'N');
  327.     fld=establish_field(wnd,33,15,msk5,callstoday,'N');
  328.     fld=establish_field(wnd,51,15,msk5,timeleft,'N');
  329.     fld=establish_field(wnd,10,17,msk1,inout,'O');
  330.     fld=establish_field(wnd,22,17,msk1,debug,'O');
  331.     fld=establish_field(wnd,34,17,msk1,trace,'O');
  332.     fld=establish_field(wnd,45,17,msk1,swap,'O');
  333.     fld=establish_field(wnd,59,17,msk1,swapdisk,'A');
  334.  
  335.     prep_template(wnd);
  336.     data_entry(wnd);
  337.  
  338.     delete_window(wnd);
  339.     rstrip(user.name);
  340.     rstrip(user.handle);
  341.     rstrip(user.phone1);
  342.     rstrip(user.phone2);
  343.     rstrip(user.city);
  344.     rstrip(user.password);
  345.     rstrip(user.state);
  346.     for(x=0;x<10;x++) {
  347.         user.stat[x]=(word)atol(seclvls[x]);
  348.     }
  349.     for(x=0;x<16;x++) {
  350.         if(flags[x]!='X') {
  351.             user.attr2 &= (~(1<<x));
  352.         }
  353.         else {
  354.             user.attr2 |= (1<<x);
  355.         }
  356.     }
  357.     if(*inout=='X') conf.sysopin=1;
  358.     else conf.sysopin=0;
  359.     if(*debug=='X') conf.debug=1;
  360.     else conf.debug=0;
  361.     if(*trace=='X') conf.trace=1;
  362.     else conf.trace=0;
  363.     if(*swap=='X') conf.swap=1;
  364.     else conf.swap=0;
  365.     user.timepercall=(word)atol(timepercall);
  366.     user.callsperday=(word)atol(callsperday);
  367.     user.totaltime=(word)atol(totaltime);
  368.     user.timetoday=(word)atol(timetoday);
  369.     user.callstoday=(word)atol(callstoday);
  370.     gettime(&starter);
  371.     timelimit=(word)atol(timeleft);
  372.     if(isalpha(*swapdisk)) conf.useswapdisk=*swapdisk;
  373.     user.uktoday=(word)atol(uktoday);
  374.     user.dktoday=(word)atol(dktoday);
  375.     user.violations=(char)atoi(viol);
  376.     user.times=(ulong)atol(times);
  377.     user.posts=(word)atol(posts);
  378.     user.pointid=(word)atol(pointid);
  379.     user.credit=atoi(credit);
  380.     user.comptype=(char)atoi(comptype);
  381.     user.upk=(ulong)atol(upk);
  382.     user.downk=(ulong)atol(downk);
  383.     user.upno=(word)atol(upno);
  384.     user.downno=(word)atol(downno);
  385.     if(*hiok=='X') user.hiok=1;
  386.     else user.hiok=0;
  387.     if(*genflags=='X') user.gen1=1;
  388.     else user.gen1=0;
  389.     if(genflags[1]=='X') user.gen2=1;
  390.     else user.gen2=0;
  391.     if(genflags[2]=='X') user.gen3=1;
  392.     else user.gen3=0;
  393.     if(*cold=='X') user.cold=1;
  394.     else user.cold=0;
  395.     if(*more=='X') user.more=0;
  396.     else user.more=1;
  397.     if(*clr=='X') user.scrnclr=0;
  398.     else user.scrnclr=1;
  399.     if(*graph=='X') user.graphics=1;
  400.     else user.graphics=0;
  401.     if(*fse=='X') user.fullscreen=1;
  402.     else user.fullscreen=0;
  403.     if(*spec=='X') user.commodore=1;
  404.     user.commodore=0;
  405.     if(*expert=='X') user.expert=1;
  406.     else user.expert=0;
  407.     if(*twit=='X') user.twit=1;
  408.     else user.twit=0;
  409.     if(*amnu=='X') user.ansimenus=0;
  410.     else user.ansimenus=1;
  411.     if(*del=='X') user.deleted=1;
  412.     else user.deleted=0;
  413.     if(*ignhr=='X') user.ignorehrs=1;
  414.     else user.ignorehrs=0;
  415.     if(*ignrat=='X') user.ignorerat=1;
  416.     else user.ignorerat=0;
  417.     if(*nokill=='X') user.nokill=1;
  418.     else user.nokill=0;
  419.     if(*arq=='X') user.arq=1;
  420.     else user.arq=0;
  421.     user.width=(char)atoi(width);
  422.     user.length=(char)atoi(length);
  423.  
  424.     left(s,bdate,2);
  425.     user.birthdate.da_mon=atoi(s);
  426.     mid(s,bdate,3,2);
  427.     user.birthdate.da_day=atoi(s);
  428.     right(s,bdate,4);
  429.     user.birthdate.da_year=atoi(s);
  430.  
  431.     {       /* Recalc age */
  432.  
  433.         struct date dos_date;
  434.  
  435.         getdate(&dos_date);
  436.         age=((dos_date.da_year-user.birthdate.da_year)-1);
  437.         if (dos_date.da_mon>user.birthdate.da_mon) age++;
  438.         else if ((dos_date.da_mon==user.birthdate.da_mon) && (dos_date.da_day>=user.birthdate.da_day)) age++;
  439.     }
  440.  
  441.     left(s,ldate,2);
  442.     user.lastdate.da_mon=atoi(s);
  443.     mid(s,ldate,3,2);
  444.     user.lastdate.da_day=atoi(s);
  445.     right(s,ldate,4);
  446.     user.lastdate.da_year=atoi(s);
  447.     baud=tempbaud;
  448.     safe=tempsafe;
  449.     cursor(oldx,oldy);
  450.     inwindow &= (~USEREDITOR);
  451.     redraw_stat(NULL);
  452.     chatted=1;
  453.     timer_off=oldtimer;
  454. }
  455.  
  456.  
  457.  
  458. void pascal other_options (char type) {
  459.  
  460.     WINDOW *wnd;
  461.     word tempbaud;
  462.     char tempsafe,oldtimer;
  463.     int oldx,oldy;
  464.     int returncode,handle;
  465.  
  466.     if(inwindow & OPTIONS) {
  467.         fputs("\07",stdout);
  468.         return;
  469.     }
  470.     tempbaud=baud;
  471.     tempsafe=safe;
  472.     if(!type) baud=0;   /* Allow remote use */
  473.     safe=0;
  474.     oldtimer=timer_off;
  475.     timer_off=1;
  476.     curr_cursor(&oldx,&oldy);
  477.     if(inwindow & OPTIONS) {
  478.     }
  479.     wnd=establish_window(30,7,11,24);
  480.     if(!wnd) {
  481.         error_message(" Can't make window ");
  482. Outtahere:
  483.         while(!inkey());
  484.         clear_message();
  485.         baud=tempbaud;
  486.         safe=tempsafe;
  487.         cursor(oldx,oldy);
  488.         timer_off=oldtimer;
  489.         return;
  490.     }
  491.     inwindow |= OPTIONS;
  492.     set_title(wnd," [Enter] or [ESCape] ");
  493.     set_colors(wnd,ALL,GREEN,BLACK,BRIGHT);
  494.     set_colors(wnd,ACCENT,WHITE,BLACK,DIM);
  495.     set_border(wnd,2);
  496.     display_window(wnd);
  497.     wcursor(wnd,0,0);
  498.     wprintf(wnd," Shell to DOS\n Chat toggle\n Lockout user\n Hangup\n Toggle SysOp\n");
  499.     wprintf(wnd," Phone # to Phonecan\n Vanish\n Name to Trashcan\n User Editor");
  500.     returncode=get_selection(wnd,1,"SCLHTPVNU");
  501.     switch(returncode) {
  502.         case 1: if(baud) {
  503.                     error_message(" Not remote, bud. ");
  504.                     break;
  505.                 }
  506.                 delete_window(wnd);
  507.                 wnd=NULL;
  508.                 sysop_shell();
  509.                 curr_cursor(&oldx,&oldy);
  510.                 break;
  511.         case 2: if (!chatting) {
  512.                     chatting=1;
  513.                     delete_window(wnd);
  514.                     wnd=NULL;
  515.                     cursor(oldx,oldy);
  516.                     baud=tempbaud;
  517.                     chat();
  518.                     if(!type)baud=0;
  519.                     curr_cursor(&oldx,&oldy);
  520.                 }
  521.                 else chatting=0;
  522.                 break;
  523.         case 3: baud=tempbaud;
  524.                 user.stat[0]=0;
  525.                 delete_window(wnd);
  526.                 if (readfile("lockout.xbs",0,0,1)==2) say_prompt(6);
  527.                 say_prompt(7);
  528.                 fossil(FLUSHOUT,0);
  529.                 fossil(DTR,DOWN);
  530.                 leaving=1;
  531.                 logoff();
  532.                 userno=0;
  533.                 exit(254);
  534.         case 4: delete_window(wnd);
  535.                 baud=tempbaud;
  536.                 fossil(DTR,DOWN);
  537.                 leaving++;
  538.                 logoff();
  539.                 baud=0;
  540.                 userno=0;
  541.                 exit(254);
  542.         case 5: conf.sysopin=1-conf.sysopin;
  543.                 (conf.sysopin) ? any_message(" IN ") : any_message(" OUT ");
  544.                 sleep(1);
  545.                 clear_message();
  546.                 break;
  547.         case 6: if ((handle=oopen(searchpath("Phonecan.CTL"),O_RDWR | O_BINARY | O_DENYNONE))==-1)
  548.                     if((handle=ccreat("phonecan.ctl",S_IWRITE))>0) {
  549.                         lseek(handle,0L,SEEK_END);
  550.                         write(handle,user.phone1,strlen(user.phone1));
  551.                         write(handle,"\r\n",2);
  552.                         if (strcmp(user.phone1,user.phone2)) {
  553.                             write(handle,user.phone2,strlen(user.phone2));
  554.                             write(handle,"\r\n",2);
  555.                         }
  556.                         cclose(handle);
  557.                     }
  558.                 break;
  559.         case 7: delete_window(wnd);
  560.                 say_prompt(2);
  561.                 exit(254);
  562.         case 8: if ((handle=oopen(searchpath("Trashcan.CTL"),O_RDWR | O_BINARY | O_DENYNONE))==-1)
  563.                     if((handle=ccreat("Trashcan.ctl",S_IWRITE))>0) {
  564.                         lseek(handle,0L,SEEK_END);
  565.                         write(handle,user.name,strlen(user.name));
  566.                         write(handle,"\r\n",2);
  567.                         if (strcmp(user.name,user.handle)) {
  568.                             write(handle,user.handle,strlen(user.handle));
  569.                             write(handle,"\r\n",2);
  570.                         }
  571.                         cclose(handle);
  572.                     }
  573.                 break;
  574.         case 9: delete_window(wnd);
  575.                 wnd=NULL;
  576.                 edit_user(type);
  577.                 break;
  578.     }
  579.     if(wnd)delete_window(wnd);
  580.     baud=tempbaud;
  581.     safe=tempsafe;
  582.     cursor(oldx,oldy);
  583.     inwindow &= (~OPTIONS);
  584.     redraw_stat(NULL);
  585.     chatted=1;
  586.     timer_off=oldtimer;
  587. }
  588.  
  589.