home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / UTIL / WWIVE / CHNEDIT.C < prev    next >
Text File  |  1991-12-25  |  6KB  |  271 lines

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