home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / UTIL / WWIVE / MYWIVE.ZIP / CHNEDIT.C < prev    next >
C/C++ Source or Header  |  1993-05-06  |  5KB  |  244 lines

  1. #include "vars.h"
  2. #pragma hdrstop
  3.  
  4. void chaindata(int n, char *s)
  5. {
  6.   char w,x,y,z,i;
  7.   chainfilerec c;
  8.  
  9.   c=chains[n];
  10.   if (c.ar==0)
  11.     x=32;
  12.   else {
  13.     for (i=0; i<16; i++)
  14.       if ((1 << i) & c.ar)
  15.         x='A'+i;
  16.   }
  17.   if (c.ansir & ansir_ansi)
  18.     y='Y';
  19.   else
  20.     y='N';
  21.   if (c.ansir & ansir_no_DOS)
  22.     z='N';
  23.   else
  24.     z='Y';
  25.   if (c.ansir & ansir_shrink)
  26.     w='Y';
  27.   else
  28.     w='N';
  29.   sprintf(s,"%2d %-28.28s  %-27.27s %-3d    %1c  %1c  %1c  %1c",
  30.             n,c.description,c.filename,c.sl,y,x,z,w);
  31. }
  32.  
  33. void showchains()
  34. {
  35.   int abort,i;
  36.   char s[180];
  37.  
  38.   outchr(12);
  39.   abort=0;
  40.   pla("NN Description                   Path Name                   SL  ANSI AR DOS S",
  41.       &abort);
  42.   pla("== ----------------------------  =========================== --- ==== -- === -",
  43.       &abort);
  44.   for (i=0; (i<numchain) && (!abort); i++) {
  45.     chaindata(i,s);
  46.     pla(s,&abort);
  47.   }
  48. }
  49.  
  50. void modify_chain(int n)
  51. {
  52.   chainfilerec c;
  53.   char s[81],s1[81],ch,ch2;
  54.   int i,i1,done;
  55.  
  56.   c=chains[n];
  57.   done=0;
  58.   do {
  59.     outchr(12);
  60.     npr("A. Description  : %s\r\n",c.description);
  61.     npr("B. Filename     : %s\r\n",c.filename);
  62.     npr("C. SL           : %d\r\n",c.sl);
  63.     strcpy(s,"None.");
  64.     if (c.ar!=0) {
  65.       for (i=0; i<16; i++)
  66.         if ((1 << i) & c.ar)
  67.           s[0]='A'+i;
  68.       s[1]=0;
  69.     }
  70.     npr("D. AR           : %s\r\n",s);
  71.     npr("E. ANSI         : %s\r\n",
  72.         (c.ansir & ansir_ansi)?"Required":"Optional");
  73.     npr("F. DOS Interrupt: %sUsed\r\n",
  74.         (c.ansir & ansir_no_DOS)?"NOT ":"");
  75.     npr("G. 300 Baud     : %sAllowed\r\n",
  76.         (c.ansir & ansir_no_300)?"NOT ":"");
  77.     npr("H. Shrink       : %s\r\n",
  78.         (c.ansir & ansir_shrink)?"Yes":"No");
  79.     npr("I. Disable pause: %s\r\n",
  80.         (c.ansir & ansir_no_pause)?"Yes":"No");
  81.     nl();
  82.     prt(2,"Which (A-G,Q) ? ");
  83.     ch=onek("QABCDEFGHI");
  84.     switch(ch) {
  85.       case 'Q':done=1; break;
  86.       case 'A':
  87.         nl();
  88.         prt(2,"New description? ");
  89.         inputl(s,40);
  90.         if (s[0])
  91.           strcpy(c.description,s);
  92.         break;
  93.       case 'B':
  94.         nl();
  95.         prt(2,"New filename? ");
  96.         input(s,40);
  97.         if (s[0]!=0)
  98.           strcpy(c.filename,s);
  99.         break;
  100.       case 'C':
  101.         nl();
  102.         prt(2,"New SL? ");
  103.         input(s,3);
  104.         i=atoi(s);
  105.         if ((i>=0) && (i<256) && (s[0]))
  106.           c.sl=i;
  107.         break;
  108.       case 'D':
  109.         nl();
  110.         prt(2,"New AR (<SPC>=None) ? ");
  111.         ch2=onek("ABCDEFGHIJKLMNOP ");
  112.         if (ch2==32)
  113.           c.ar=0;
  114.         else
  115.           c.ar=1 << (ch2-'A');
  116.         break;
  117.       case 'E':
  118.         nl();
  119.         prt(5,"Require ANSI? ");
  120.         if (yn())
  121.       c.ansir |= ansir_ansi;
  122.     else
  123.       c.ansir &= ~ansir_ansi;
  124.         break;
  125.       case 'F':
  126.         nl();
  127.         prt(5,"Have BBS intercept DOS calls? ");
  128.         if (ny())
  129.       c.ansir &= ~ansir_no_DOS;
  130.     else
  131.       c.ansir |= ansir_no_DOS;
  132.         break;
  133.       case 'G':
  134.         nl();
  135.         prt(5,"Allow 300 baud users to run? ");
  136.         if (ny())
  137.       c.ansir &= ~ansir_no_300;
  138.     else
  139.       c.ansir |= ansir_no_300;
  140.         break;
  141.       case 'H':
  142.         nl();
  143.         prt(5,"Shrink the BBS to run? ");
  144.         if (yn())
  145.           c.ansir |= ansir_shrink;
  146.         else
  147.           c.ansir &= ~ansir_shrink;
  148.         break;
  149.       case 'I':
  150.         nl();
  151.         prt(5,"Disable screen pause in program? ");
  152.         if (yn())
  153.           c.ansir |= ansir_no_pause;
  154.         else
  155.           c.ansir &= ~ansir_no_pause;
  156.         break;
  157.     }
  158.   } while ((!done) && (!hangup));
  159.   chains[n]=c;
  160. }
  161.  
  162. void insert_chain(int n)
  163. {
  164.   chainfilerec c;
  165.   int i,i1,nu;
  166.  
  167.   for (i=numchain-1; i>=n; i--)
  168.     chains[i+1]=chains[i];
  169.   strcpy(c.description,"** NEW CHAIN **");
  170.   strcpy(c.filename,"REM");
  171.   c.sl=10;
  172.   c.ar=0;
  173.   c.ansir=0;
  174.   chains[n]=c;
  175.   ++numchain;
  176.   modify_chain(n);
  177. }
  178.  
  179. void delete_chain(int n)
  180. {
  181.   int i,i1,nu;
  182.  
  183.   for (i=n; i<numchain; i++)
  184.     chains[i]=chains[i+1];
  185.   --numchain;
  186. }
  187.  
  188. void chainedit()
  189. {
  190.   int i,i1,i2,done,f;
  191.   char s[81],s1[81],s2[81],ch;
  192.  
  193.   showchains();
  194.   done=0;
  195.   do {
  196.     nl();
  197.     prt(2,"Chains: D:elete, I:nsert, M:odify, Q:uit, ? : ");
  198.     ch=onek("QDIM?");
  199.     switch(ch) {
  200.       case '?':
  201.         showchains();
  202.         break;
  203.       case 'Q':
  204.         done=1;
  205.         break;
  206.       case 'M':
  207.         nl();
  208.         prt(2,"Chain number? ");
  209.         input(s,2);
  210.         i=atoi(s);
  211.         if ((s[0]!=0) && (i>=0) && (i<numchain))
  212.           modify_chain(i);
  213.         break;
  214.       case 'I':
  215.         if (numchain<50) {
  216.           nl();
  217.           prt(2,"Insert before which chain? ");
  218.           input(s,2);
  219.           i=atoi(s);
  220.           if ((s[0]!=0) && (i>=0) && (i<=numchain))
  221.             insert_chain(i);
  222.         }
  223.         break;
  224.       case 'D':
  225.         nl();
  226.         prt(2,"Delete which chain? ");
  227.         input(s,2);
  228.         i=atoi(s);
  229.         if ((s[0]!=0) && (i>=0) && (i<numchain)) {
  230.           nl();
  231.           ansic(5);
  232.           npr("Delete %s? ",chains[i].description);
  233.           if (yn())
  234.             delete_chain(i);
  235.         }
  236.         break;
  237.     }
  238.   } while ((!done) && (!hangup));
  239.   sprintf(s,"%sCHAINS.DAT",syscfg.datadir);
  240.   f=open(s,O_RDWR | O_BINARY | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
  241.   write(f,(void *)chains, numchain * sizeof(chainfilerec));
  242.   close(f);
  243. }
  244.