home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / W / WWIVSOR.ZIP / MULTINST.C < prev    next >
Text File  |  1995-05-21  |  8KB  |  304 lines

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