Annotation of sbbs/sbbs2/sbl/sbl2txt.c, revision 1.1

1.1     ! root        1: /* SBL2TXT.C */
        !             2: 
        !             3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
        !             4: 
        !             5: /* Converts Synchronet BBS List (SBL.DAB) to text file */
        !             6: 
        !             7: #include "xsdk.h"
        !             8: #include "sbldefs.h"
        !             9: 
        !            10: char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
        !            11: char *mon[]={"Jan","Feb","Mar","Apr","May","Jun"
        !            12:             ,"Jul","Aug","Sep","Oct","Nov","Dec"};
        !            13: char *nulstr="";
        !            14: char tmp[256];
        !            15: struct date date;
        !            16: struct time curtime;
        !            17: 
        !            18: extern int daylight=0;
        !            19: extern long timezone=0L;
        !            20: 
        !            21: /****************************************************************************/
        !            22: /* Generates a 24 character ASCII string that represents the time_t pointer */
        !            23: /* Used as a replacement for ctime()                                                                           */
        !            24: /****************************************************************************/
        !            25: char *timestr(time_t *intime)
        !            26: {
        !            27:        static char str[256];
        !            28:     char mer[3],hour;
        !            29:     struct tm *gm;
        !            30: 
        !            31: gm=localtime(intime);
        !            32: if(gm->tm_hour>=12) {
        !            33:     if(gm->tm_hour==12)
        !            34:         hour=12;
        !            35:     else
        !            36:         hour=gm->tm_hour-12;
        !            37:     strcpy(mer,"pm"); }
        !            38: else {
        !            39:     if(gm->tm_hour==0)
        !            40:         hour=12;
        !            41:     else
        !            42:         hour=gm->tm_hour;
        !            43:     strcpy(mer,"am"); }
        !            44: sprintf(str,"%s %s %02d %4d %02d:%02d %s"
        !            45:     ,wday[gm->tm_wday],mon[gm->tm_mon],gm->tm_mday,1900+gm->tm_year
        !            46:     ,hour,gm->tm_min,mer);
        !            47: return(str);
        !            48: }
        !            49: 
        !            50: /****************************************************************************/
        !            51: /* Converts unix time format (long - time_t) into a char str MM/DD/YY          */
        !            52: /****************************************************************************/
        !            53: char *unixtodstr(time_t unix, char *str)
        !            54: {
        !            55: 
        !            56: if(!unix)
        !            57:        strcpy(str,"00/00/00");
        !            58: else {
        !            59:        unixtodos(unix,&date,&curtime);
        !            60:        if((unsigned)date.da_mon>12) {    /* DOS leap year bug */
        !            61:                date.da_mon=1;
        !            62:                date.da_year++; }
        !            63:        if((unsigned)date.da_day>31)
        !            64:                date.da_day=1;
        !            65:        sprintf(str,"%02u/%02u/%02u",date.da_mon,date.da_day
        !            66:                ,date.da_year>=2000 ? date.da_year-2000 : date.da_year-1900); }
        !            67: return(str);
        !            68: }
        !            69: 
        !            70: 
        !            71: void long_bbs_info(FILE *out, bbs_t bbs)
        !            72: {
        !            73:        int i;
        !            74: 
        !            75: fprintf(out,"BBS Name: %s since %s\r\n"
        !            76:        ,bbs.name,unixtodstr(bbs.birth,tmp));
        !            77: fprintf(out,"Operator: ");
        !            78: for(i=0;i<bbs.total_sysops;i++) {
        !            79:        if(i) {
        !            80:                if(bbs.total_sysops>2)
        !            81:                        fprintf(out,", ");
        !            82:                else
        !            83:                        fputc(SP,out);
        !            84:                if(!(i%4))
        !            85:                        fprintf(out,"\r\n          ");
        !            86:                if(i+1==bbs.total_sysops)
        !            87:                        fprintf(out,"and "); }
        !            88:        fprintf(out,"%s",bbs.sysop[i]); }
        !            89: fprintf(out,"\r\n");
        !            90: fprintf(out,"Software: %-15.15s Nodes: %-5u "
        !            91:        "Users: %-5u Doors: %u\r\n"
        !            92:        ,bbs.software,bbs.nodes,bbs.users,bbs.xtrns);
        !            93: fprintf(out,"Download: %lu files in %u directories of "
        !            94:        "%luMB total space\r\n"
        !            95:        ,bbs.files,bbs.dirs,bbs.megs);
        !            96: fprintf(out,"Messages: %lu messages in %u sub-boards\r\n"
        !            97:        ,bbs.msgs,bbs.subs);
        !            98: fprintf(out,"Networks: ");
        !            99: for(i=0;i<bbs.total_networks;i++) {
        !           100:        if(i) {
        !           101:                if(bbs.total_networks>2)
        !           102:                        fprintf(out,", ");
        !           103:                else
        !           104:                        fputc(SP,out);
        !           105:                if(!(i%3))
        !           106:                        fprintf(out,"\r\n          ");
        !           107:                if(i+1==bbs.total_networks)
        !           108:                        fprintf(out,"and "); }
        !           109:        fprintf(out,"%s [%s]",bbs.network[i],bbs.address[i]); }
        !           110: fprintf(out,"\r\n");
        !           111: fprintf(out,"Terminal: ");
        !           112: for(i=0;i<bbs.total_terminals;i++) {
        !           113:        if(i) {
        !           114:                if(bbs.total_terminals>2)
        !           115:                        fprintf(out,", ");
        !           116:                else
        !           117:                        fputc(SP,out);
        !           118:                if(i+1==bbs.total_terminals)
        !           119:                        fprintf(out,"and "); }
        !           120:        fprintf(out,"%s",bbs.terminal[i]); }
        !           121: fprintf(out,"\r\n\r\n");
        !           122: for(i=0;i<bbs.total_numbers;i++)
        !           123:        fprintf(out,"%-30.30s %12.12s %5u %-15.15s "
        !           124:                "Minimum: %u\r\n"
        !           125:                ,i && !strcmp(bbs.number[i].location,bbs.number[i-1].location)
        !           126:                        ? nulstr : bbs.number[i].location
        !           127:                ,bbs.number[i].number
        !           128:                ,bbs.number[i].max_rate,bbs.number[i].modem
        !           129:                ,bbs.number[i].min_rate);
        !           130: 
        !           131: fprintf(out,"\r\n");
        !           132: for(i=0;i<5;i++) {
        !           133:        if(!bbs.desc[i][0])
        !           134:                break;
        !           135:        fprintf(out,"%15s%s\r\n",nulstr,bbs.desc[i]); }
        !           136: 
        !           137: fprintf(out,"\r\n");
        !           138: fprintf(out,"Entry created on %s by %s\r\n"
        !           139:        ,timestr(&bbs.created),bbs.user);
        !           140: fprintf(out," Last updated on %s\r\n\r\n",timestr(&bbs.updated));
        !           141: }
        !           142: 
        !           143: 
        !           144: void main(int argc, char **argv)
        !           145: {
        !           146:        char software[16]="";
        !           147:        int i,in;
        !           148:        FILE *out;
        !           149:        bbs_t bbs;
        !           150: 
        !           151: for(i=1;i<argc;i++)
        !           152:        if(argv[i][0]=='s' && argv[i][1]=='=')
        !           153:                sprintf(software,"%.15s",argv[i]+2);
        !           154: 
        !           155: if((in=open("SBL.DAB",O_RDONLY|O_BINARY))==-1) {
        !           156:        printf("error opening SBL.DAB\n");
        !           157:        return; }
        !           158: 
        !           159: if((out=fopen("SBL.TXT","wb"))==NULL) {
        !           160:        printf("error opening/creating SBL.TXT\n");
        !           161:        return; }
        !           162: 
        !           163: while(!eof(in)) {
        !           164:        read(in,&bbs,sizeof(bbs_t));
        !           165:        if(!bbs.name[0])
        !           166:                continue;
        !           167:        if(software[0] && strnicmp(bbs.software,software,strlen(software)))
        !           168:                continue;
        !           169:        // long_bbs_info(out,bbs);
        !           170:        for(i=0;i<bbs.total_numbers;i++)
        !           171:                fprintf(out,"%-25.25s  %12.12s  %5u  %s\r\n"
        !           172:                        ,bbs.name,bbs.number[i].number
        !           173:                        ,bbs.number[i].max_rate
        !           174:                        ,bbs.number[i].modem);
        !           175:        }
        !           176: close(in);
        !           177: fclose(out);
        !           178: }

unix.superglobalmegacorp.com

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