home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / UTIL / WWIVSOR / MULTINST.C < prev    next >
Text File  |  1996-12-01  |  8KB  |  293 lines

  1. #include "vars.h"
  2.  
  3. #pragma hdrstop
  4.  
  5. #include <dir.h>
  6. #include <math.h>
  7.  
  8. /****************************************************************************/
  9.  
  10. void make_inst_str(short wi, unsigned char *ss)
  11. /*
  12.  * Builds a string (in ss) like:
  13.  *
  14.  * Instance   1: Offline
  15.  *     LastUser: Sysop #1
  16.  *
  17.  * or
  18.  *
  19.  * Instance  22: Network transmission
  20.  *     CurrUser: Sysop #1
  21.  */
  22.  
  23. {
  24.   instancerec ir;
  25.   userrec ur;
  26.   unsigned char s[161],s1[81],s2[81];
  27.  
  28.   get_inst_info(wi, &ir);
  29.   strcpy(s,"1");
  30. /*  strncat(s, get_string(1206),sizeof(s));*/
  31.   ansic(1);
  32.   strncat(s, "Instance ",sizeof(s));
  33.   sprintf(s1,"1%-3d",wi);
  34.   strncat(s,s1,sizeof(s));
  35.   strncat(s,": 1",sizeof(s));
  36.  
  37.   switch (ir.loc) {
  38.     case INST_LOC_DOWN:
  39.       sprintf(s1,"1%-25.25s",get_string(1207));
  40.       break;
  41.     case INST_LOC_INIT:
  42.       sprintf(s1,"1%-25.25s",get_string(1208));
  43.       break;
  44.     case INST_LOC_EMAIL:
  45.       sprintf(s1,"1%-25.25s",get_string(1209));
  46.       if (so() && (ir.subloc>0) && (ir.subloc<syscfg.maxusers)) {
  47.       }
  48.       break;
  49.     case INST_LOC_MAIN:
  50.       sprintf(s1,"1%-25.25s",get_string(1210));
  51.       if ((so()) && (ir.subloc < num_subs)) {
  52.         sprintf(s2,"1%s: %s",get_string(1398),
  53.           stripcolors(subboards[ir.subloc].name));
  54.         strncat(s1,s2,sizeof(s1));
  55.       }
  56.       break;
  57.     case INST_LOC_XFER:
  58.       sprintf(s1,"1%-25.25s",get_string(1211));
  59.       if ((so()) && (ir.subloc < num_dirs)) {
  60.         sprintf(s2,"1%s: %s",get_string(1399),
  61.           stripcolors(directories[ir.subloc].name));
  62.         strncat(s1,s2,sizeof(s1));
  63.       }
  64.       break;
  65.     case INST_LOC_CHAINS:
  66.       sprintf(s1,"1%-25.25s",get_string(1212));
  67.       break;
  68.     case INST_LOC_NET:
  69.       sprintf(s1,"1%-25.25s",get_string(1213));
  70.       break;
  71.     case INST_LOC_GFILES:
  72.       sprintf(s1,"1%-25.25s",get_string(1214));
  73.       break;
  74.     case INST_LOC_BEGINDAY:
  75.       sprintf(s1,"1%-25.25s",get_string(1215));
  76.       break;
  77.     case INST_LOC_EVENT:
  78.       sprintf(s1,"1%-25.25s",get_string(1216));
  79.       break;
  80.     case INST_LOC_CHAT:
  81.       sprintf(s1,"1%-25.25s",get_string(1218));
  82.       break;
  83.     case INST_LOC_CHAT2:
  84.       sprintf(s1,"1%-25.25s",get_string(1217));
  85.       break;
  86.     case INST_LOC_CHATROOM:
  87.       sprintf(s1,"1%-25.25s",get_string(1219));
  88.       break;
  89.     case INST_LOC_LOGON:
  90.       sprintf(s1,"1%-25.25s",get_string(1220));
  91.       break;
  92.     case INST_LOC_LOGOFF:
  93.       sprintf(s1,"1%-25.25s",get_string(1221));
  94.       break;
  95.     case INST_LOC_FSED:
  96.       sprintf(s1,"1%-25.25s",get_string(1222));
  97.       break;
  98.     case INST_LOC_UEDIT:
  99.       sprintf(s1,"1%-25.25s",get_string(1223));
  100.       break;
  101.     case INST_LOC_CHAINEDIT:
  102.       sprintf(s1,"1%-25.25s",get_string(1224));
  103.       break;
  104.     case INST_LOC_BOARDEDIT:
  105.       sprintf(s1,"1%-25.25s",get_string(1225));
  106.       break;
  107.     case INST_LOC_DIREDIT:
  108.       sprintf(s1,"1%-25.25s",get_string(1226));
  109.       break;
  110.     case INST_LOC_GFILEEDIT:
  111.       sprintf(s1,"1%-25.25s",get_string(1227));
  112.       break;
  113.     case INST_LOC_CONFEDIT:
  114.       sprintf(s1,"1%-25.25s",get_string(1228));
  115.       break;
  116.     case INST_LOC_DOS:
  117.       sprintf(s1,"1%-25.25s",get_string(1229));
  118.       break;
  119.     case INST_LOC_DEFAULTS:
  120.       sprintf(s1,"1%-25.25s",get_string(1230));
  121.       break;
  122.     case INST_LOC_REBOOT:
  123.       sprintf(s1,"1%-25.25s",get_string(1231));
  124.       break;
  125.     case INST_LOC_RELOAD:
  126.       sprintf(s1,"1%-25.25s",get_string(1232));
  127.       break;
  128.     case INST_LOC_VOTE:
  129.       sprintf(s1,"1%-25.25s",get_string(1233));
  130.       break;
  131.     case INST_LOC_BANK:
  132.       sprintf(s1,"1%-25.25s",get_string(1234));
  133.       break;
  134.     case INST_LOC_AMSG:
  135.       sprintf(s1,"1%-25.25s",get_string(1235));
  136.       break;
  137.     case INST_LOC_SUBS:
  138.       sprintf(s1,"1%-25.25s",get_string(1236));
  139.       if ((so()) && (ir.subloc < num_subs)) {
  140.         sprintf(s2,"1%s: %s",get_string(1398),
  141.           stripcolors(subboards[ir.subloc].name));
  142.         strncat(s1,s2,sizeof(s1));
  143.       }
  144.       break;
  145.     case INST_LOC_CHUSER:
  146.       sprintf(s1,"1%-25.25s",get_string(1237));
  147.       break;
  148.     case INST_LOC_TEDIT:
  149.       sprintf(s1,"1%-25.25s",get_string(1238));
  150.       break;
  151.     case INST_LOC_MAILR:
  152.       sprintf(s1,"1%-25.25s",get_string(1239));
  153.       break;
  154.     case INST_LOC_RESETQSCAN:
  155.       sprintf(s1,"1%-25.25s",get_string(1240));
  156.       break;
  157.     case INST_LOC_VOTEEDIT:
  158.       sprintf(s1,"1%-25.25s",get_string(1241));
  159.       break;
  160.     case INST_LOC_VOTEPRINT:
  161.       sprintf(s1,"1%-25.25s",get_string(1401));
  162.       break;
  163.     case INST_LOC_RESETF:
  164.       sprintf(s1,"1%-25.25s",get_string(1406));
  165.       break;
  166.     case INST_LOC_FEEDBACK:
  167.       sprintf(s1,"1%-25.25s",get_string(1407));
  168.       break;
  169.     case INST_LOC_KILLEMAIL:
  170.       sprintf(s1,"1%-25.25s",get_string(1408));
  171.       break;
  172.     case INST_LOC_POST:
  173.       sprintf(s1,"1%-25.25s",get_string(1409));
  174.       if ((so()) && (ir.subloc < num_subs)) {
  175.         sprintf(s2,"1%s: %s",get_string(1398),
  176.           stripcolors(subboards[ir.subloc].name));
  177.         strncat(s1,s2,sizeof(s1));
  178.       }
  179.       break;
  180.     case INST_LOC_NEWUSER:
  181.       sprintf(s1,"1%-25.25s",get_string(1423));
  182.       break;
  183.     case INST_LOC_RMAIL:
  184.       sprintf(s1,"1%-25.25s",get_string(1424));
  185.       break;
  186.     case INST_LOC_DOWNLOAD:
  187.       sprintf(s1,"1%-25.25s",get_string(1425));
  188.       break;
  189.     case INST_LOC_UPLOAD:
  190.       sprintf(s1,"1%-25.25s",get_string(1426));
  191.       break;
  192.     case INST_LOC_BIXFER:
  193.       sprintf(s1,"1%-25.25s",get_string(1427));
  194.       break;
  195.     case INST_LOC_NETLIST:
  196.       sprintf(s1,"1%-25.25s",get_string(1428));
  197.       break;
  198.     case INST_LOC_TERM:
  199.       sprintf(s1,"1%-25.25s",get_string(1519));
  200.       break;
  201.     case INST_LOC_QWK:
  202.       sprintf(s1,"1%-25.25s",get_string(1639));
  203.       break;
  204.     case INST_LOC_WFC:
  205.       sprintf(s1,"1%-25.25s",get_string(1402));
  206.       break;
  207.     default:
  208.       sprintf(s1,"1%-25.25s",get_string(1403));
  209.       break;
  210.   }
  211.   strncat(s,s1,sizeof(s));
  212.   strncat(s,"\r\n1",sizeof(s));
  213.  
  214.   if (ir.flags & INST_FLAGS_ONLINE)
  215.     strncat(s,get_string(1404),sizeof(s));
  216.   else
  217.     strncat(s,get_string(1405),sizeof(s));
  218.  
  219.   strncat(s,": 1",sizeof(s));
  220.  
  221.   if ((ir.user < syscfg.maxusers) && (ir.user > 0)) {
  222.     read_user(ir.user,&ur);
  223.     sprintf(s1,"1%-30.30s",nam(&ur,ir.user));
  224.     strncat(s,s1,sizeof(s));
  225.   } else {
  226.     sprintf(s1,"1%-30.30s",get_string(1410));
  227.     strncat(s,s1,sizeof(s));
  228.   }
  229.  
  230.   strcpy(ss,s);
  231. }
  232.  
  233. /****************************************************************************/
  234.  
  235. void multi_instance(void)
  236. {
  237.   char s[161];
  238.   int i1,ni;
  239.  
  240.   nl();
  241.   ni=num_instances();
  242.   if (ni<1) {
  243.     ansic(6);
  244.     pl(get_string(1205));
  245.     return;
  246.   }
  247.   for (i1=1;i1<=ni;i1++) {
  248.     make_inst_str(i1,s);
  249.     if (E_C) {
  250.       pl(s);
  251.     } else {
  252.       pl(s);
  253. /*      pl(stripcolors(s));*/
  254.     }
  255.     nl();
  256.   }
  257. }
  258.  
  259. /****************************************************************************/
  260.  
  261. int inst_ok(unsigned short loc, unsigned short subloc)
  262. {
  263.   char s[81];
  264.   int i, i1, f, ok;
  265.   instancerec instance_temp;
  266.  
  267.   if (loc==INST_LOC_FSED)
  268.     return(0);
  269.  
  270.   ok=0;
  271.   sprintf(s,"%sINSTANCE.DAT",syscfg.datadir);
  272.   f=sh_open1(s,O_RDONLY | O_BINARY);
  273.   if (f<0)
  274.     return(0);
  275.   i=(int)(filelength(f)/sizeof(instancerec));
  276.   f=sh_close(f);
  277.   for (i1=1;i1<i;i1++) {
  278.     f=sh_open1(s,O_RDONLY | O_BINARY);
  279.     if (f>0) {
  280.       sh_lseek(f,(long) i1 * sizeof(instancerec),SEEK_SET);
  281.       sh_read(f,(void *)&instance_temp,sizeof(instancerec));
  282.       f=sh_close(f);
  283.       if ((instance_temp.loc == loc)
  284.         && (instance_temp.subloc == subloc)
  285.         && (instance_temp.number != instance)) {
  286.         ok=instance_temp.number;
  287.       }
  288.     }
  289.   }
  290.   return(ok);
  291. }
  292.  
  293.