Annotation of sbbs/sbbs2/atcodes.c, revision 1.1.1.1

1.1       root        1: #line 1 "ATCODES.C"
                      2: 
                      3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
                      4: 
                      5: #include "sbbs.h"
                      6: #include "cmdshell.h"
                      7: 
                      8: extern char *wday[];    /* 3 char days of week */
                      9: char question[128];
                     10: 
                     11: int syncatcodes(char *sp, int len)
                     12: {
                     13:        char str2[128],*tp;
                     14: 
                     15: /* Synchronet Specific */
                     16: 
                     17: if(!strncmp(sp,"SETSTR:",7))
                     18:     strcpy(main_csi.str,sp+7);
                     19: 
                     20: else if(!strncmp(sp,"EXEC:",5))
                     21:        exec_bin(sp+5,&main_csi);
                     22: 
                     23: else if(!strncmp(sp,"MENU:",5))
                     24:     menu(sp+5);
                     25: 
                     26: else if(!strncmp(sp,"TYPE:",5))
                     27:     printfile(cmdstr(sp+5,nulstr,nulstr,str2),0);
                     28: 
                     29: else if(!strcmp(sp,"QUESTION"))
                     30:     bputs(question);
                     31: 
                     32: else if(!strncmp(sp,"NAME-L",6))
                     33:     bprintf("%-*.*s",len,len,useron.alias);
                     34: 
                     35: else if(!strncmp(sp,"NAME-R",6))
                     36:     bprintf("%*.*s",len,len,useron.alias);
                     37: 
                     38: else if(!strcmp(sp,"HANDLE"))
                     39:     bputs(useron.handle);
                     40: 
                     41: else if(!strcmp(sp,"GRP"))
                     42:     bputs(usrgrps ? grp[usrgrp[curgrp]]->sname : nulstr);
                     43: 
                     44: else if(!strncmp(sp,"GRP-L",5))
                     45:     bprintf("%-*.*s",len,len,usrgrps ? grp[usrgrp[curgrp]]->sname : nulstr);
                     46: 
                     47: else if(!strncmp(sp,"GRP-R",5))
                     48:     bprintf("%*.*s",len,len,usrgrps ? grp[usrgrp[curgrp]]->sname : nulstr);
                     49: 
                     50: else if(!strcmp(sp,"GRPL"))
                     51:     bputs(usrgrps ? grp[usrgrp[curgrp]]->lname : nulstr);
                     52: 
                     53: else if(!strncmp(sp,"GRPL-L",6))
                     54:     bprintf("%-*.*s",len,len,usrgrps ? grp[usrgrp[curgrp]]->lname : nulstr);
                     55: 
                     56: else if(!strncmp(sp,"GRPL-R",6))
                     57:     bprintf("%*.*s",len,len,usrgrps ? grp[usrgrp[curgrp]]->lname : nulstr);
                     58: 
                     59: else if(!strcmp(sp,"GN"))
                     60:     bprintf("%u",usrgrps ? curgrp+1 : 0);
                     61: 
                     62: else if(!strcmp(sp,"GL"))
                     63:     bprintf("%-4u",usrgrps ? curgrp+1 : 0);
                     64: 
                     65: else if(!strcmp(sp,"GR"))
                     66:     bprintf("%4u",usrgrps ? curgrp+1 : 0);
                     67: 
                     68: else if(!strcmp(sp,"SUB"))
                     69:     bputs(usrgrps ? sub[usrsub[curgrp][cursub[curgrp]]]->sname : nulstr);
                     70: 
                     71: else if(!strncmp(sp,"SUB-L",5))
                     72:     bprintf("%-*.*s",len,len,usrgrps
                     73:         ? sub[usrsub[curgrp][cursub[curgrp]]]->sname : nulstr);
                     74: 
                     75: else if(!strncmp(sp,"SUB-R",5))
                     76:     bprintf("%*.*s",len,len,usrgrps
                     77:         ? sub[usrsub[curgrp][cursub[curgrp]]]->sname : nulstr);
                     78: 
                     79: else if(!strcmp(sp,"SUBL"))
                     80:     bputs(usrgrps  ? sub[usrsub[curgrp][cursub[curgrp]]]->lname : nulstr);
                     81: 
                     82: else if(!strncmp(sp,"SUBL-L",6))
                     83:     bprintf("%-*.*s",len,len,usrgrps
                     84:         ? sub[usrsub[curgrp][cursub[curgrp]]]->lname : nulstr);
                     85: 
                     86: else if(!strncmp(sp,"SUBL-R",6))
                     87:     bprintf("%*.*s",len,len,usrgrps
                     88:         ? sub[usrsub[curgrp][cursub[curgrp]]]->lname : nulstr);
                     89: 
                     90: else if(!strcmp(sp,"SN"))
                     91:     bprintf("%u",usrgrps ? cursub[curgrp]+1 : 0);
                     92: 
                     93: else if(!strcmp(sp,"SL"))
                     94:     bprintf("%-4u",usrgrps ? cursub[curgrp]+1 : 0);
                     95: 
                     96: else if(!strcmp(sp,"SR"))
                     97:     bprintf("%4u",usrgrps ? cursub[curgrp]+1 : 0);
                     98: 
                     99: else if(!strcmp(sp,"LIB"))
                    100:     bputs(usrlibs ? lib[usrlib[curlib]]->sname : nulstr);
                    101: 
                    102: else if(!strncmp(sp,"LIB-L",5))
                    103:     bprintf("%-*.*s",len,len,usrlibs ? lib[usrlib[curlib]]->sname : nulstr);
                    104: 
                    105: else if(!strncmp(sp,"LIB-R",5))
                    106:     bprintf("%*.*s",len,len,usrlibs ? lib[usrlib[curlib]]->sname : nulstr);
                    107: 
                    108: else if(!strcmp(sp,"LIBL"))
                    109:     bputs(usrlibs ? lib[usrlib[curlib]]->lname : nulstr);
                    110: 
                    111: else if(!strncmp(sp,"LIBL-L",6))
                    112:     bprintf("%-*.*s",len,len,usrlibs ? lib[usrlib[curlib]]->lname : nulstr);
                    113: 
                    114: else if(!strncmp(sp,"LIBL-R",6))
                    115:     bprintf("%*.*s",len,len,usrlibs ? lib[usrlib[curlib]]->lname : nulstr);
                    116: 
                    117: else if(!strcmp(sp,"LN"))
                    118:     bprintf("%u",usrlibs ? curlib+1 : 0);
                    119: 
                    120: else if(!strcmp(sp,"LL"))
                    121:     bprintf("%-4u",usrlibs ? curlib+1 : 0);
                    122: 
                    123: else if(!strcmp(sp,"LR"))
                    124:     bprintf("%4u",usrlibs  ? curlib+1 : 0);
                    125: 
                    126: else if(!strcmp(sp,"DIR"))
                    127:     bputs(usrlibs ? dir[usrdir[curlib][curdir[curlib]]]->sname :nulstr);
                    128: 
                    129: else if(!strncmp(sp,"DIR-L",5))
                    130:     bprintf("%-*.*s",len,len,usrlibs
                    131:         ? dir[usrdir[curlib][curdir[curlib]]]->sname : nulstr);
                    132: 
                    133: else if(!strncmp(sp,"DIR-R",5))
                    134:     bprintf("%*.*s",len,len,usrlibs
                    135:         ? dir[usrdir[curlib][curdir[curlib]]]->sname : nulstr);
                    136: 
                    137: else if(!strcmp(sp,"DIRL"))
                    138:     bputs(usrlibs ? dir[usrdir[curlib][curdir[curlib]]]->lname : nulstr);
                    139: 
                    140: else if(!strncmp(sp,"DIRL-L",6))
                    141:     bprintf("%-*.*s",len,len,usrlibs
                    142:         ? dir[usrdir[curlib][curdir[curlib]]]->lname : nulstr);
                    143: 
                    144: else if(!strncmp(sp,"DIRL-R",6))
                    145:     bprintf("%*.*s",len,len,usrlibs
                    146:         ? dir[usrdir[curlib][curdir[curlib]]]->lname : nulstr);
                    147: 
                    148: else if(!strcmp(sp,"DN"))
                    149:     bprintf("%u",usrlibs ? curdir[curlib]+1 : 0);
                    150: 
                    151: else if(!strcmp(sp,"DL"))
                    152:     bprintf("%-4u",usrlibs ? curdir[curlib]+1 : 0);
                    153: 
                    154: else if(!strcmp(sp,"DR"))
                    155:     bprintf("%4u",usrlibs ? curdir[curlib]+1 : 0);
                    156: 
                    157: else if(!strcmp(sp,"NOACCESS")) {
                    158:     if(noaccess_str==text[NoAccessTime])
                    159:         bprintf(noaccess_str,noaccess_val/60,noaccess_val%60);
                    160:     else if(noaccess_str==text[NoAccessDay])
                    161:         bprintf(noaccess_str,wday[noaccess_val]);
                    162:     else
                    163:         bprintf(noaccess_str,noaccess_val); }
                    164: 
                    165: else if(!strcmp(sp,"LAST")) {
                    166:     tp=strrchr(useron.alias,SP);
                    167:     if(tp) tp++;
                    168:     else tp=useron.alias;
                    169:     bputs(tp); }
                    170: 
                    171: else if(!strcmp(sp,"REAL")) {
                    172:     strcpy(str2,useron.name);
                    173:     tp=strchr(str2,SP);
                    174:     if(tp) *tp=0;
                    175:     bputs(str2); }
                    176: 
                    177: else if(!strcmp(sp,"FIRSTREAL")) {
                    178:     strcpy(str2,useron.name);
                    179:     tp=strchr(str2,SP);
                    180:     if(tp) *tp=0;
                    181:     bputs(str2); }
                    182: 
                    183: else if(!strcmp(sp,"LASTREAL")) {
                    184:     tp=strrchr(useron.name,SP);
                    185:     if(tp) tp++;
                    186:     else tp=useron.name;
                    187:     bputs(tp); }
                    188: 
                    189: else if(!strcmp(sp,"MAILW"))
                    190:        bprintf("%u",getmail(useron.number,0));
                    191: 
                    192: else if(!strcmp(sp,"MAILP"))
                    193:        bprintf("%u",getmail(useron.number,1));
                    194: 
                    195: else if(!strncmp(sp,"MAILW:",6))
                    196:        bprintf("%u",getmail(atoi(sp+6),0));
                    197: 
                    198: else if(!strncmp(sp,"MAILP:",6))
                    199:        bprintf("%u",getmail(atoi(sp+6),1));
                    200: 
                    201: else return(0);
                    202: 
                    203: return(len);
                    204: }
                    205: 
                    206: /****************************************************************************/
                    207: /* Returns 0 if invalid @ code. Returns length of @ code if valid.          */
                    208: /****************************************************************************/
                    209: int atcodes(char *instr)
                    210: {
                    211:        char    str[64],str2[64],*p,*tp,*sp;
                    212:     int     i,len;
                    213:        long    l;
                    214:     stats_t stats;
                    215:     node_t  node;
                    216:     struct  dfree d;
                    217: 
                    218: sprintf(str,"%.40s",instr);
                    219: tp=strchr(str+1,'@');
                    220: if(!tp)                 /* no terminating @ */
                    221:     return(0);
                    222: sp=strchr(str+1,SP);
                    223: if(sp && sp<tp)         /* space before terminating @ */
                    224:     return(0);
                    225: len=(tp-str)+1;
                    226: (*tp)=0;
                    227: sp=(str+1);
                    228: 
                    229: if(!strcmp(sp,"VER"))
                    230:     bputs(VERSION);
                    231: 
                    232: else if(!strcmp(sp,"BBS") || !strcmp(sp,"BOARDNAME"))
                    233:     bputs(sys_name);
                    234: 
                    235: else if(!strcmp(sp,"BAUD") || !strcmp(sp,"BPS"))
                    236:        bprintf("%lu",cur_rate);
                    237: 
                    238: else if(!strcmp(sp,"SYSOP"))
                    239:     bputs(sys_op);
                    240: 
                    241: else if(!strcmp(sp,"NODE"))
                    242:     bprintf("%u",node_num);
                    243: 
                    244: else if(!strcmp(sp,"TIME") || !strcmp(sp,"SYSTIME")) {
                    245:     now=time(NULL);
                    246:     unixtodos(now,&date,&curtime);
                    247:     bprintf("%02d:%02d %s"
                    248:         ,curtime.ti_hour==0 ? 12
                    249:         : curtime.ti_hour>12 ? curtime.ti_hour-12
                    250:         : curtime.ti_hour, curtime.ti_min, curtime.ti_hour>11 ? "pm":"am"); }
                    251: 
                    252: else if(!strcmp(sp,"DATE") || !strcmp(sp,"SYSDATE")) {
                    253:     now=time(NULL);
                    254:     bputs(unixtodstr(now,str2)); }
                    255: 
                    256: else if(!strcmp(sp,"TMSG")) {
                    257:        l=0;
                    258:     for(i=0;i<total_subs;i++)
                    259:                l+=getposts(i);                 /* l=total posts */
                    260:     bprintf("%lu",l); }
                    261: 
                    262: else if(!strcmp(sp,"TUSER"))
                    263:     bprintf("%u",lastuser());
                    264: 
                    265: else if(!strcmp(sp,"TFILE")) {
                    266:        l=0;
                    267:     for(i=0;i<total_dirs;i++)
                    268:         l+=getfiles(i);
                    269:     bprintf("%lu",l); }
                    270: 
                    271: else if(!strcmp(sp,"TCALLS") || !strcmp(sp,"NUMCALLS")) {
                    272:     getstats(0,&stats);
                    273:     bprintf("%lu",stats.logons); }
                    274: 
                    275: else if(!strcmp(sp,"PREVON") || !strcmp(sp,"LASTCALLERNODE")
                    276:     || !strcmp(sp,"LASTCALLERSYSTEM"))
                    277:     bputs(lastuseron);
                    278: 
                    279: else if(!strcmp(sp,"CLS"))
                    280:     CLS;
                    281: 
                    282: else if(!strcmp(sp,"PAUSE") || !strcmp(sp,"MORE"))
                    283:     pause();
                    284: 
                    285: else if(!strcmp(sp,"NOPAUSE") || !strcmp(sp,"POFF"))
                    286:     sys_status^=SS_PAUSEOFF;
                    287: 
                    288: else if(!strcmp(sp,"PON") || !strcmp(sp,"AUTOMORE"))
                    289:     sys_status^=SS_PAUSEON;
                    290: 
                    291: /* NOSTOP */
                    292: 
                    293: /* STOP */
                    294: 
                    295: else if(!strcmp(sp,"BELL") || !strcmp(sp,"BEEP"))
                    296:     outchar(7);
                    297: 
                    298: // else if(!strcmp(sp,"EVENT"))
                    299: //       bputs(sectostr(sys_eventtime,str2));
                    300: 
                    301: /* LASTCALL */
                    302: 
                    303: else if(!strncmp(sp,"NODE",4)) {
                    304:     i=atoi(sp+4);
                    305:     if(i && i<=sys_nodes) {
                    306:         getnodedat(i,&node,0);
                    307:         printnodedat(i,node); } }
                    308: 
                    309: else if(!strcmp(sp,"WHO"))
                    310:     whos_online(1);
                    311: 
                    312: /* User Codes */
                    313: 
                    314: else if(!strcmp(sp,"USER") || !strcmp(sp,"ALIAS") || !strcmp(sp,"NAME"))
                    315:     bputs(useron.alias);
                    316: 
                    317: else if(!strcmp(sp,"FIRST")) {
                    318:     strcpy(str2,useron.alias);
                    319:     tp=strchr(str2,SP);
                    320:     if(tp) *tp=0;
                    321:     bputs(str2); }
                    322: 
                    323: else if(!strcmp(sp,"PHONE") || !strcmp(sp,"HOMEPHONE")
                    324:     || !strcmp(sp,"DATAPHONE") || !strcmp(sp,"DATA"))
                    325:     bputs(useron.phone);
                    326: 
                    327: else if(!strcmp(sp,"ADDR1"))
                    328:     bputs(useron.address);
                    329: 
                    330: else if(!strcmp(sp,"FROM"))
                    331:     bputs(useron.location);
                    332: 
                    333: else if(!strcmp(sp,"CITY")) {
                    334:     strcpy(str2,useron.location);
                    335:     p=strchr(str2,',');
                    336:     if(p) {
                    337:         *p=0;
                    338:         bputs(str2); } }
                    339: 
                    340: else if(!strcmp(sp,"STATE")) {
                    341:     p=strchr(useron.location,',');
                    342:     if(p) {
                    343:         p++;
                    344:         if(*p==SP)
                    345:             p++;
                    346:         bputs(p); } }
                    347: 
                    348: else if(!strcmp(sp,"CPU"))
                    349:     bputs(useron.comp);
                    350: 
                    351: else if(!strcmp(sp,"BDATE"))
                    352:     bputs(useron.birth);
                    353: 
                    354: else if(!strcmp(sp,"CALLS") || !strcmp(sp,"NUMTIMESON"))
                    355:     bprintf("%u",useron.logons);
                    356: 
                    357: else if(!strcmp(sp,"MEMO"))
                    358:     bputs(unixtodstr(useron.pwmod,str2));
                    359: 
                    360: else if(!strcmp(sp,"SEC") || !strcmp(sp,"SECURITY"))
                    361:     bprintf("%u",useron.level);
                    362: 
                    363: else if(!strcmp(sp,"SINCE"))
                    364:     bputs(unixtodstr(useron.firston,str2));
                    365: 
                    366: else if(!strcmp(sp,"TIMEON") || !strcmp(sp,"TIMEUSED")) {
                    367:        now=time(NULL);
                    368:        bprintf("%u",(now-logontime)/60); }
                    369: 
                    370: else if(!strcmp(sp,"TUSED")) {              /* Synchronet only */
                    371:        now=time(NULL);
                    372:        bputs(sectostr(now-logontime,str2)+1); }
                    373: 
                    374: else if(!strcmp(sp,"TLEFT")) {              /* Synchronet only */
                    375:        gettimeleft();
                    376:        bputs(sectostr(timeleft,str2)+1); }
                    377: 
                    378: else if(!strcmp(sp,"TPERD"))                /* Synchronet only */
                    379:     bputs(sectostr(level_timeperday[useron.level],str)+1);
                    380: 
                    381: else if(!strcmp(sp,"TPERC"))                /* Synchronet only */
                    382:     bputs(sectostr(level_timepercall[useron.level],str)+1);
                    383: 
                    384: else if(!strcmp(sp,"TIMELIMIT"))
                    385:     bprintf("%u",level_timepercall[useron.level]);
                    386: 
                    387: else if(!strcmp(sp,"MINLEFT") || !strcmp(sp,"LEFT") || !strcmp(sp,"TIMELEFT")) {
                    388:        gettimeleft();
                    389:        bprintf("%u",timeleft/60); }
                    390: 
                    391: else if(!strcmp(sp,"LASTON"))
                    392:     bputs(timestr(&useron.laston));
                    393: 
                    394: else if(!strcmp(sp,"LASTDATEON"))
                    395:     bputs(unixtodstr(useron.laston,str2));
                    396: 
                    397: else if(!strcmp(sp,"LASTTIMEON")) {
                    398:     unixtodos(useron.laston,&date,&curtime);
                    399:     bprintf("%02d:%02d %s"
                    400:         ,curtime.ti_hour==0 ? 12
                    401:         : curtime.ti_hour>12 ? curtime.ti_hour-12
                    402:         : curtime.ti_hour, curtime.ti_min, curtime.ti_hour>11 ? "pm":"am"); }
                    403: 
                    404: else if(!strcmp(sp,"MSGLEFT") || !strcmp(sp,"MSGSLEFT"))
                    405:     bprintf("%u",useron.posts);
                    406: 
                    407: else if(!strcmp(sp,"MSGREAD"))
                    408:     bprintf("%u",posts_read);
                    409: 
                    410: else if(!strcmp(sp,"FREESPACE")) {
                    411:     if(temp_dir[1]==':')
                    412:         i=temp_dir[0]-'A'+1;
                    413:     else i=0;
                    414:     getdfree(i,&d);
                    415:     if(d.df_sclus!=0xffff)
                    416:         bprintf("%lu",(ulong)d.df_bsec*(ulong)d.df_sclus*(ulong)d.df_avail); }
                    417: 
                    418: else if(!strcmp(sp,"UPBYTES"))
                    419:     bprintf("%lu",useron.ulb);
                    420: 
                    421: else if(!strcmp(sp,"UPK"))
                    422:     bprintf("%lu",useron.ulb/1024L);
                    423: 
                    424: else if(!strcmp(sp,"UPS") || !strcmp(sp,"UPFILES"))
                    425:     bprintf("%u",useron.uls);
                    426: 
                    427: else if(!strcmp(sp,"DLBYTES"))
                    428:     bprintf("%lu",useron.dlb);
                    429: 
                    430: else if(!strcmp(sp,"DOWNK"))
                    431:     bprintf("%lu",useron.dlb/1024L);
                    432: 
                    433: else if(!strcmp(sp,"DOWNS") || !strcmp(sp,"DLFILES"))
                    434:     bprintf("%u",useron.dls);
                    435: 
                    436: else if(!strcmp(sp,"LASTNEW"))
                    437:     bputs(unixtodstr(ns_time,str2));
                    438: 
                    439: else if(!strcmp(sp,"NEWFILETIME"))
                    440:        bputs(timestr(&ns_time));
                    441: 
                    442: /* MAXDL */
                    443: 
                    444: else if(!strcmp(sp,"MAXDK") || !strcmp(sp,"DLKLIMIT") || !strcmp(sp,"KBLIMIT"))
                    445:     bprintf("%lu",level_freecdtperday[useron.level]/1024L);
                    446: 
                    447: else if(!strcmp(sp,"DAYBYTES"))     /* amt of free cdts used today */
                    448:     bprintf("%lu",level_freecdtperday[useron.level]-useron.freecdt);
                    449: 
                    450: else if(!strcmp(sp,"BYTELIMIT"))
                    451:     bprintf("%lu",level_freecdtperday[useron.level]);
                    452: 
                    453: else if(!strcmp(sp,"KBLEFT"))
                    454:     bprintf("%lu",(useron.cdt+useron.freecdt)/1024L);
                    455: 
                    456: else if(!strcmp(sp,"BYTESLEFT"))
                    457:     bprintf("%lu",useron.cdt+useron.freecdt);
                    458: 
                    459: else if(!strcmp(sp,"CONF"))
                    460:     bprintf("%s %s"
                    461:                ,usrgrps ? grp[usrgrp[curgrp]]->sname :nulstr
                    462:                ,usrgrps ? sub[usrsub[curgrp][cursub[curgrp]]]->sname : nulstr);
                    463: 
                    464: else if(!strcmp(sp,"CONFNUM"))
                    465:     bprintf("%u %u",curgrp+1,cursub[curgrp]+1);
                    466: 
                    467: else if(!strcmp(sp,"NUMDIR"))
                    468:        bprintf("%u %u",usrlibs ? curlib+1 : 0,usrlibs ? curdir[curlib]+1 : 0);
                    469: 
                    470: else if(!strcmp(sp,"EXDATE") || !strcmp(sp,"EXPDATE"))
                    471:     bputs(unixtodstr(useron.expire,str2));
                    472: 
                    473: else if(!strcmp(sp,"EXPDAYS")) {
                    474:     now=time(NULL);
                    475:        l=useron.expire-now;
                    476:        if(l<0)
                    477:                l=0;
                    478:        bprintf("%u",l/(1440L*60L)); }
                    479: 
                    480: else if(!strcmp(sp,"MEMO1"))
                    481:     bputs(useron.note);
                    482: 
                    483: else if(!strcmp(sp,"MEMO2") || !strcmp(sp,"COMPANY"))
                    484:     bputs(useron.name);
                    485: 
                    486: else if(!strcmp(sp,"ZIP"))
                    487:        bputs(useron.zipcode);
                    488: 
                    489: else if(!strcmp(sp,"HANGUP"))
                    490:     hangup();
                    491: 
                    492: else
                    493:        return(syncatcodes(sp,len));
                    494: 
                    495: return(len);
                    496: }
                    497: 
                    498: 
                    499: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.