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

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

unix.superglobalmegacorp.com

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