home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / WWIV2.ZIP / CHNEDIT.C < prev    next >
C/C++ Source or Header  |  1992-12-03  |  6KB  |  287 lines

  1. /*****************************************************************************
  2.  
  3.                 WWIV Version 4
  4.                     Copyright (C) 1988-1993 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,"%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(void)
  53. {
  54.   int abort,i;
  55.   char s[180];
  56.  
  57.   outchr(12);
  58.   abort=0;
  59.   pla(get_string(102),
  60.       &abort);
  61.   pla(get_string(103),
  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.     outstr(get_string(104)); pl(c.description);
  82.     outstr(get_string(105)); pl(c.filename);
  83.     outstr(get_string(106)); pln(c.sl);
  84.     strcpy(s,get_string(5));
  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.     outstr(get_string(107)); pl(s);
  92.     outstr(get_string(108));
  93.     pl((c.ansir & ansir_ansi)?get_string(109):get_string(110));
  94.     outstr(get_string(111));
  95.     if (c.ansir & ansir_no_DOS)
  96.       outstr(get_string(112));
  97.     pl(get_string(113));
  98.     outstr(get_string(114));
  99.     if (c.ansir & ansir_no_300)
  100.       outstr(get_string(112));
  101.     pl(get_string(115));
  102.     outstr(get_string(116));
  103.     pl((c.ansir & ansir_shrink)?str_yes:str_no);
  104.     outstr(get_string(117));
  105.     pl((c.ansir & ansir_no_pause)?str_yes:str_no);
  106.     outstr(get_string(118));
  107.     pl((c.ansir & ansir_local_only)?str_yes:str_no);
  108.     nl();
  109.     prt(2,get_string(119));
  110.     ch=onek("QABCDEFGHIJ");
  111.     switch(ch) {
  112.       case 'Q':done=1; break;
  113.       case 'A':
  114.         nl();
  115.         prt(2,get_string(120));
  116.         inputl(s,40);
  117.         if (s[0])
  118.           strcpy(c.description,s);
  119.         break;
  120.       case 'B':
  121.         nl();
  122.         prt(2,get_string(72));
  123.         input(s,40);
  124.         if (s[0]!=0)
  125.           strcpy(c.filename,s);
  126.         break;
  127.       case 'C':
  128.         nl();
  129.         prt(2,get_string(76));
  130.         input(s,3);
  131.         i=atoi(s);
  132.         if ((i>=0) && (i<256) && (s[0]))
  133.           c.sl=i;
  134.         break;
  135.       case 'D':
  136.         nl();
  137.         prt(2,get_string(80));
  138.         ch2=onek("ABCDEFGHIJKLMNOP ");
  139.         if (ch2==32)
  140.           c.ar=0;
  141.         else
  142.           c.ar=1 << (ch2-'A');
  143.         break;
  144.       case 'E':
  145.         nl();
  146.         prt(5,get_string(121));
  147.         if (yn())
  148.       c.ansir |= ansir_ansi;
  149.     else
  150.       c.ansir &= ~ansir_ansi;
  151.         break;
  152.       case 'F':
  153.         nl();
  154.         prt(5,get_string(122));
  155.         if (ny())
  156.       c.ansir &= ~ansir_no_DOS;
  157.     else
  158.       c.ansir |= ansir_no_DOS;
  159.         break;
  160.       case 'G':
  161.         nl();
  162.         prt(5,get_string(123));
  163.         if (ny())
  164.       c.ansir &= ~ansir_no_300;
  165.     else
  166.       c.ansir |= ansir_no_300;
  167.         break;
  168.       case 'H':
  169.         nl();
  170.         prt(5,get_string(124));
  171.         if (yn())
  172.           c.ansir |= ansir_shrink;
  173.         else
  174.           c.ansir &= ~ansir_shrink;
  175.         break;
  176.       case 'I':
  177.         nl();
  178.         prt(5,get_string(125));
  179.         if (yn())
  180.           c.ansir |= ansir_no_pause;
  181.         else
  182.           c.ansir &= ~ansir_no_pause;
  183.         break;
  184.       case 'J':
  185.         nl();
  186.         prt(5,get_string(126));
  187.         if (yn())
  188.           c.ansir |= ansir_local_only;
  189.         else
  190.           c.ansir &= ~ansir_local_only;
  191.         break;
  192.     }
  193.   } while ((!done) && (!hangup));
  194.   chains[n]=c;
  195. }
  196.  
  197.  
  198. void insert_chain(int n)
  199. {
  200.   chainfilerec c;
  201.   int i,i1,nu;
  202.  
  203.   for (i=numchain-1; i>=n; i--)
  204.     chains[i+1]=chains[i];
  205.   strcpy(c.description,get_string(127));
  206.   strcpy(c.filename,get_string(128));
  207.   c.sl=10;
  208.   c.ar=0;
  209.   c.ansir=0;
  210.   chains[n]=c;
  211.   ++numchain;
  212.   modify_chain(n);
  213. }
  214.  
  215.  
  216. void delete_chain(int n)
  217. {
  218.   int i,i1,nu;
  219.  
  220.   for (i=n; i<numchain; i++)
  221.     chains[i]=chains[i+1];
  222.   --numchain;
  223. }
  224.  
  225.  
  226. void chainedit(void)
  227. {
  228.   int i,i1,i2,done,f;
  229.   char s[81],s1[81],s2[81],ch;
  230.  
  231.   if (!checkpw())
  232.     return;
  233.   showchains();
  234.   done=0;
  235.   do {
  236.     nl();
  237.     prt(2,get_string(129));
  238.     ch=onek("QDIM?");
  239.     switch(ch) {
  240.       case '?':
  241.         showchains();
  242.         break;
  243.       case 'Q':
  244.         done=1;
  245.         break;
  246.       case 'M':
  247.         nl();
  248.         prt(2,get_string(130));
  249.         input(s,2);
  250.         i=atoi(s);
  251.         if ((s[0]!=0) && (i>=0) && (i<numchain))
  252.           modify_chain(i);
  253.         break;
  254.       case 'I':
  255.         if (numchain<50) {
  256.           nl();
  257.           prt(2,get_string(131));
  258.           input(s,2);
  259.           i=atoi(s);
  260.           if ((s[0]!=0) && (i>=0) && (i<=numchain))
  261.             insert_chain(i);
  262.         }
  263.         break;
  264.       case 'D':
  265.         nl();
  266.         prt(2,get_string(132));
  267.         input(s,2);
  268.         i=atoi(s);
  269.         if ((s[0]!=0) && (i>=0) && (i<numchain)) {
  270.           nl();
  271.           ansic(5);
  272.           outstr(get_string(87));
  273.           outstr(chains[i].description);
  274.           outstr("? ");
  275.           if (yn())
  276.             delete_chain(i);
  277.         }
  278.         break;
  279.     }
  280.   } while ((!done) && (!hangup));
  281.   sprintf(s,"%sCHAINS.DAT",syscfg.datadir);
  282.   f=open(s,O_RDWR | O_BINARY | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
  283.   write(f,(void *)chains, numchain * sizeof(chainfilerec));
  284.   close(f);
  285. }
  286.  
  287.