home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / BBS / MISC / XSRC_117.ZIP / XSYSVAL.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-09-09  |  15.1 KB  |  428 lines

  1. /*--------------------------------------------------------------------------*/
  2. /*                                                                          */
  3. /*   XBBS SOURCE CODE copyright (c) 1990 by M. Kimes                        */
  4. /*   All Rights Reserved                                                    */
  5. /*                                                                          */
  6. /*    For complete details of the licensing restrictions, please refer      */
  7. /*    to the License agreement, which is published in its entirety in       */
  8. /*    the in the file LICENSE.XBS.                                          */
  9. /*                                                                          */
  10. /*    USE OF THIS FILE IS SUBJECT TO THE RESTRICTIONS CONTAINED IN THE      */
  11. /*    XBBS LICENSING  AGREEMENT.  IF YOU DO NOT FIND THE TEXT OF            */
  12. /*    THIS AGREEMENT IN ANY OF THE AFOREMENTIONED FILES, OR IF YOU DO       */
  13. /*    NOT HAVE THESE FILES, YOU SHOULD IMMEDIATELY CONTACT M. KIMES         */
  14. /*    AT THE ADDRESS LISTED BELOW.  IN NO EVENT SHOULD YOU PROCEED TO USE   */
  15. /*    THIS FILE WITHOUT HAVING ACCEPTED THE TERMS OF THE XBBS LICENSING     */
  16. /*    AGREEMENT, OR SUCH OTHER AGREEMENT AS YOU ARE ABLE TO REACH WITH      */
  17. /*    M. KIMES                                                              */
  18. /*                                                                          */
  19. /*                                                                          */
  20. /* You can contact M. Kimes at the following address:                       */
  21. /*                                                                          */
  22. /* M. Kimes                         1:380/16.0@FidoNet                      */
  23. /* 542 Merrick                      (318)222-3455 data                      */
  24. /* Shreveport, LA  71104                                                    */
  25. /*                                                                          */
  26. /*                                                                          */
  27. /* Please feel free to contact me at any time to share your comments about  */
  28. /* my software and/or licensing policies.                                   */
  29. /*                                                                          */
  30. /*--------------------------------------------------------------------------*/
  31. /***************************************************************************/
  32. /* Get values of XBBS system variables                                     */
  33. /***************************************************************************/
  34.  
  35. #include "msg.h"
  36. #include "xext.h"
  37.  
  38.  
  39.  
  40. /* Get system variables */
  41. char * pascal sysval (char *rest) {
  42.  
  43.     long i1,result;
  44.     char *p;
  45.     static char pp[33];
  46.     struct _user *uuser;
  47.  
  48.     result=-2;     /* Error */
  49.     uuser=&user;
  50.     stripcr(rest);
  51.     p=strtok(rest,",");
  52.     p=var_trans(p);
  53.     i1=atol(p);
  54.     result=0;
  55.     if(i1>171L && i1<236L) {
  56.         i1-=93L;
  57.         uuser=&other;
  58.     }
  59.     switch((int)i1) {
  60.         case 0:        return msg.subj;
  61.         case 1:        return msg.to;
  62.         case 2:        return msg.from;
  63.         case 3:     return msg.date;
  64.         case 4:     result=(long)msg.attr;
  65.                     break;
  66.         case 5:     result=(long)msg.m_attr;
  67.                     break;
  68.         case 6:     result=(long)msg.times;
  69.                     break;
  70.         case 7:     result=(long)msg.cost;
  71.                     break;
  72.         case 8:     result=(long)msg.orig;
  73.                     break;
  74.         case 9:     result=(long)msg.orig_net;
  75.                     break;
  76.         case 10:    result=(long)msg.o_zone;
  77.                     break;
  78.         case 11:    result=(long)msg.o_point;
  79.                     break;
  80.         case 12:    result=(long)msg.dest;
  81.                     break;
  82.         case 13:    result=(long)msg.dest_net;
  83.                     break;
  84.         case 14:    result=(long)msg.d_zone;
  85.                     break;
  86.         case 15:    result=(long)msg.d_point;
  87.                     break;
  88.         case 16:    return msg.indate;
  89.         case 17:    return conf.system;
  90.         case 18:    return conf.sysop;
  91.         case 19:    return conf.logfile;
  92.         case 20:    result=(long)conf.commport;
  93.                     break;
  94.         case 21:    result=(long)conf.node;
  95.                     break;
  96.         case 22:    result=(long)conf.net;
  97.                     break;
  98.         case 23:    result=(long)conf.zone;
  99.                     break;
  100.         case 24:    result=(long)conf.alt_node;
  101.                     break;
  102.         case 25:    result=(long)conf.alt_net;
  103.                     break;
  104.         case 26:    result=(long)conf.alt_zone;
  105.                     break;
  106.         case 27:    return conf.homepath;
  107.         case 28:    return conf.menupath;
  108.         case 29:    return conf.messpath;
  109.         case 30:    result=(long)conf.idleseconds;
  110.                     break;
  111.         case 31:    result=(long)conf.pages;
  112.                     break;
  113.         case 32:    result=(long)conf.sysopin;
  114.                     break;
  115.         case 33:    result=(long)conf.touchup;
  116.                     break;
  117.         case 34:    result=(long)conf.uptime;
  118.                     break;
  119.         case 35:    result=(long)conf.downtime;
  120.                     break;
  121.         case 36:    result=(long)conf.dvideo;
  122.                     break;
  123.         case 37:    result=(long)conf.bvideo;
  124.                     break;
  125.         case 38:    result=(long)conf.bioswrites;
  126.                     break;
  127.         case 39:    result=(long)conf.debug;
  128.                     break;
  129.         case 40:    result=(long)conf.ansiavail;
  130.                     break;
  131.         case 41:    result=(long)conf.whichstat;
  132.                     break;
  133.         case 42:    result=(long)conf.promptsay;
  134.                     break;
  135.         case 43:    return conf.edansi;
  136.         case 44:    return conf.edline;
  137.         case 45:    return conf.edlocal;
  138.         case 46:    result=(long)conf.ansibaud;
  139.                     break;
  140.         case 47:    return conf.quotestring;
  141.         case 48:    result=(long)conf.callcount;
  142.                     break;
  143.         case 49:    return conf.lastcaller;
  144.         case 50:    result=(long)conf.netmailboard;
  145.                     break;
  146.         case 51:    result=(long)conf.altnetboard;
  147.                     break;
  148.         case 52:    return conf.origin;
  149.         case 53:    result=(long)conf.carbons;
  150.                     break;
  151.         case 54:    p=var_trans(strtok(0,",\n"));
  152.                     i1=atol(p);
  153.                     if((char)i1<0 || (char)i1>9) break;
  154.                     return conf.jumpfile[(char)i1];
  155.         case 55:    p=var_trans(strtok(0,",\n"));
  156.                     i1=atol(p);
  157.                     if((char)i1<0 || (char)i1>9) break;
  158.                     return conf.jumpkey[(char)i1];
  159.         case 56:    p=var_trans(strtok(0,",\n"));
  160.                     i1=atol(p);
  161.                     if((char)i1<0 || (char)i1>9) break;
  162.                     return conf.subfile[(char)i1];
  163.         case 57:    p=var_trans(strtok(0,",\n"));
  164.                     i1=atol(p);
  165.                     if((char)i1<0 || (char)i1>9) break;
  166.                     return conf.subkey[(char)i1];
  167.         case 58:    result=(long)conf.nolmrs;
  168.                     break;
  169.         case 59:    result=(long)conf.quote_pos;
  170.                     break;
  171.         case 60:    return conf.quote_file;
  172.         case 61:    result=(long)conf.startat;
  173.                     break;
  174.         case 62:    result=(long)conf.numcomps;
  175.                     break;
  176.         case 63:    return conf.edgraph;
  177.         case 64:    result=(long)conf.comments;
  178.                     break;
  179.         case 65:    result=(long)conf.purgebaud;
  180.                     break;
  181.         case 66:    result=(long)conf.genphone;
  182.                     break;
  183.         case 67:    result=(long)conf.genstatezip;
  184.                     break;
  185.         case 68:    result=(long)conf.share;
  186.                     break;
  187.         case 69:    result=(long)conf.fastANSI;
  188.                     break;
  189.         case 70:    result=(long)conf.logmenu;
  190.                     break;
  191.         case 71:    result=(long)conf.logfiles;
  192.                     break;
  193.         case 72:    result=(long)conf.logmsg;
  194.                     break;
  195.         case 73:    result=(long)conf.logtext;
  196.                     break;
  197.         case 74:    return conf.nodelist;
  198.         case 75:    result=(long)conf.lastusernum;
  199.                     break;
  200.         case 76:    *pp=conf.useswapdisk;
  201.                     pp[1]=0;
  202.                     return pp;
  203.         case 77:    result=(long)conf.LIMEMS;
  204.                     break;
  205.         case 78:    result=(long)conf.swap;
  206.                     break;
  207.         case 79:    return uuser->name;
  208.         case 80:    return uuser->handle;
  209.         case 81:    sprintf(pp,"%02hu/%02hu/%04u",uuser->birthdate.da_mon,uuser->birthdate.da_day,uuser->birthdate.da_year);
  210.                     return pp;
  211.         case 82:    return uuser->password;
  212.         case 83:    return uuser->city;
  213.         case 84:    return uuser->state;
  214.         case 85:    return uuser->zip;
  215.         case 86:    return uuser->phone1;
  216.         case 87:    return uuser->phone2;
  217.         case 88:    result=(long)uuser->length;
  218.                     break;
  219.         case 89:    result=(long)uuser->cold;
  220.                     break;
  221.         case 90:    result=(long)uuser->width;
  222.                     break;
  223.         case 91:    result=(long)uuser->graphics;
  224.                     break;
  225.         case 92:    result=(long)uuser->fullscreen;
  226.                     break;
  227.         case 93:    result=(long)uuser->scrnclr;
  228.                     break;
  229.         case 94:    result=(long)uuser->commodore;
  230.                     break;
  231.         case 95:    result=(long)uuser->expert;
  232.                     break;
  233.         case 96:    result=(long)uuser->more;
  234.                     break;
  235.         case 97:    result=(long)uuser->ignorehrs;
  236.                     break;
  237.         case 98:    result=(long)uuser->ignorerat;
  238.                     break;
  239.         case 99:    result=(long)uuser->nokill;
  240.                     break;
  241.         case 100:   result=(long)uuser->deleted;
  242.                     break;
  243.         case 101:   result=(long)uuser->arq;
  244.                     break;
  245.         case 102:   result=(long)uuser->twit;
  246.                     break;
  247.         case 103:   result=(long)uuser->ansimenus;
  248.                     break;
  249.         case 104:   result=(long)uuser->gen1;
  250.                     break;
  251.         case 105:   result=(long)uuser->gen2;
  252.                     break;
  253.         case 106:   result=(long)uuser->gen3;
  254.                     break;
  255.         case 107:   result=(long)uuser->attr2;
  256.                     break;
  257.         case 108:   p=var_trans(strtok(0,",\n"));
  258.                     i1=atol(p);
  259.                     if((char)i1<0 || (char)i1>9) break;
  260.                     result=(long)uuser->stat[(char)i1];
  261.                     break;
  262.         case 109:   result=(long)uuser->upk;
  263.                     break;
  264.         case 110:   result=(long)uuser->downk;
  265.                     break;
  266.         case 111:   result=(long)uuser->upno;
  267.                     break;
  268.         case 112:   result=(long)uuser->downno;
  269.                     break;
  270.         case 113:   result=(long)uuser->posts;
  271.                     break;
  272.         case 114:   result=(long)uuser->credit;
  273.                     break;
  274.         case 115:   result=(long)uuser->violations;
  275.                     break;
  276.         case 116:   sprintf(pp,"%02hu/%02hu/%04u",uuser->lastdate.da_mon,uuser->lastdate.da_day,uuser->lastdate.da_year);
  277.                     return pp;
  278.         case 117:    sprintf(pp,"%02hu/%02hu/%04u",uuser->logondate.da_mon,uuser->logondate.da_day,uuser->logondate.da_year);
  279.                     return pp;
  280.         case 118:    sprintf(pp,"%02u:%02u:%02u",uuser->lasttime.ti_hour,uuser->lasttime.ti_min,uuser->lasttime.ti_sec);
  281.                     return pp;
  282.         case 119:    sprintf(pp,"%02u:%02u:%02u",uuser->logontime.ti_hour,uuser->logontime.ti_min,uuser->logontime.ti_sec);
  283.                     return pp;
  284.         case 120:   result=(long)uuser->times;
  285.                     break;
  286.         case 121:   result=(long)uuser->callsperday;
  287.                     break;
  288.         case 122:   result=(long)uuser->timepercall;
  289.                     break;
  290.         case 123:   result=(long)uuser->totaltime;
  291.                     break;
  292.         case 124:   result=(long)uuser->callstoday;
  293.                     break;
  294.         case 125:   result=(long)uuser->timetoday;
  295.                     break;
  296.         case 126:   result=(long)uuser->comptype;
  297.                     break;
  298.         case 127:   result=(long)uuser->uktoday;
  299.                     break;
  300.         case 128:   result=(long)uuser->dktoday;
  301.                     break;
  302.         case 129:   p=var_trans(strtok(0,",\n"));
  303.                     i1=atol(p);
  304.                     if((char)i1<0 || (char)i1>4) break;
  305.                     return uuser->variable[(char)i1];
  306.         case 130:   p=var_trans(strtok(0,",\n"));
  307.                     i1=atol(p);
  308.                     if((char)i1<0 || (char)i1>9) break;
  309.                     result=(long)uuser->numvars[(char)i1];
  310.                     break;
  311.         case 131:   return mboard.name;
  312.         case 132:    return mboard.forceto;
  313.         case 133:   result=(long)mboard.attr;
  314.                     break;
  315.         case 134:   result=(long)mboard.max;
  316.                     break;
  317.         case 135:   result=(long)mboard.number;
  318.                     break;
  319.         case 136:   result=(long)mboard.substat1;
  320.                     break;
  321.         case 137:   result=(long)mboard.substat2;
  322.                     break;
  323.         case 138:    return fboard.name;
  324.         case 139:   result=(long)fboard.flags;
  325.                     break;
  326.         case 140:    return fboard.dpath;
  327.         case 141:    return fboard.upath;
  328.         case 142:   if(uuser==&user)result=(long)userno;
  329.                     else result=(long)tempuserno;
  330.                     break;
  331.         case 143:   result=(long)baud;
  332.                     break;
  333.         case 144:   result=(long)pages;
  334.                     break;
  335.         case 145:   result=(long)age;
  336.                     break;
  337.         case 146:   result=(long)timer_off;
  338.                     break;
  339.         case 147:   p=var_trans(strtok(0,",\n"));
  340.                     i1=atol(p);
  341.                     if((char)i1<0 || (char)i1>9) break;
  342.                     return variable[(char)i1];
  343.         case 148:   p=var_trans(strtok(0,",\n"));
  344.                     i1=atol(p);
  345.                     if((char)i1<0 || (char)i1>9) break;
  346.                     result=(long)event[(char)i1].secsleft;
  347.                     return event[(char)i1].filename;
  348.         case 149:   p=var_trans(strtok(0,",\n"));
  349.                     i1=atol(p);
  350.                     if((word)i1>conf.nolmrs) break;
  351.                     result=(long)lastread[(word)i1];
  352.                     break;
  353. /*      case 150:   return aftertimeout;
  354.         case 151:    return aftercarrierloss;
  355.         case 152:    return afternotime;
  356.         case 153:   return afterlogoff;
  357.         case 154:    return aftererror;
  358.         case 155:    return promptfile;
  359.         case 156:   result=(long)nid.node;
  360.                     break;
  361.         case 157:   result=(long)nid.net;
  362.                     break;
  363.         case 158:   result=(long)nid.zone;
  364.                     break;
  365.         case 159:   result=(long)nid.type;
  366.                     break;
  367.         case 160:   result=(long)nif.node;
  368.                     break;
  369.         case 161:   result=(long)nif.net;
  370.                     break;
  371.         case 162:   result=(long)nif.zone;
  372.                     break;
  373.         case 163:   result=(long)nif.type;
  374.                     break;
  375.         case 164:   result=(long)nif.flags;
  376.                     break;
  377.         case 165:   result=(long)nif.baud;
  378.                     break;
  379.         case 166:   result=(long)nif.cost;
  380.                     break;
  381.         case 167:    return nif.name;
  382.         case 168:    return nif.city;
  383.         case 169:    return nif.phone;
  384.         case 170:   return nif.password;    */
  385.         case 171:   return messpath;
  386.         case 236:   return "";                /* RESERVED */
  387.         case 237:   return conf.domain;
  388.         case 238:    return conf.alt_domain;
  389.         case 239:   return to_domain;
  390.         case 240:   result=(long)nodenumber;
  391.                     break;
  392.         case 241:   result=(long)user.id;
  393.                     break;
  394.         case 242:   result=(long)user.node;
  395.                     break;
  396.         case 243:   result=(long)other.id;
  397.                     break;
  398.         case 244:   result=(long)other.node;
  399.                     break;
  400.         case 245:   result=(long)conf.nextid;
  401.                     break;
  402.         case 246:   result=(long)conf.RBBSorQBBS;
  403.                     break;
  404.         case 247:   result=(long)user.hiok;
  405.                     break;
  406.         case 248:   result=(long)other.hiok;
  407.                     break;
  408. /*      case 249:   return memoname;
  409.         case 250:   result=(long)blksize;
  410.                     break;
  411.         case 251:   return lastmsgid;
  412.         case 252:   return lastreply;       */
  413.         case 253:   return msginfo;
  414.         case 254:   return assocfile;
  415.         case 255:   result=(long)user.lastmsgarea;
  416.                     break;
  417.         case 256:   result=(long)other.lastmsgarea;
  418.                     break;
  419.         case 257:   result=(long)user.pointid;
  420.                     break;
  421.         case 258:   result=(long)other.pointid;
  422.                     break;
  423.     }
  424.     sprintf(pp,"%lu",result);
  425.     return pp;
  426. }
  427.  
  428.