Annotation of sbbs/sbbs2/atcodes.c, revision 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.