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

1.1       root        1: #line 1 "XFER_SEC.C"
                      2: 
                      3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
                      4: 
                      5: /*****************************************************/
                      6: /* This file contains the single function xfer_sec() */
                      7: /*****************************************************/
                      8: 
                      9: #include "sbbs.h"
                     10: 
                     11: void xfer_cfg_cmd();
                     12: void xfer_ext_cmd(char ch);
                     13: void xfer_str_cmd(char *str);
                     14: 
                     15: void scandirs(char mode);
                     16: 
                     17: extern char no_rip_menu;
                     18: 
                     19: /****************************************************************************/
                     20: /* Used to scan single or multiple directories. 'mode' is the scan type.    */
                     21: /****************************************************************************/
                     22: void scandirs(char mode)
                     23: {
                     24:        char ch,str[256];
                     25:        int s;
                     26:        uint i,k;
                     27: 
                     28: if(!usrlibs) return;
                     29: mnemonics(text[DirLibOrAll]);
                     30: ch=getkeys("DLA\r",0);
                     31: if(sys_status&SS_ABORT || ch==CR) {
                     32:        lncntr=0;
                     33:        return; }
                     34: if(ch!='A') {
                     35:        if(mode&FL_ULTIME) {                    /* New file scan */
                     36:                bprintf(text[NScanHdr],timestr(&ns_time));
                     37:                str[0]=0; }
                     38:        else if(mode==FL_NO_HDR) {              /* Search for a string */
                     39:                if(!getfilespec(tmp))
                     40:                        return;
                     41:                padfname(tmp,str); }
                     42:        else if(mode==FL_FINDDESC) {    /* Find text in description */
                     43:                if(!noyes(text[SearchExtendedQ]))
                     44:                        mode=FL_EXFIND;
                     45:                if(sys_status&SS_ABORT) {
                     46:                        lncntr=0;
                     47:                        return; }
                     48:                bputs(text[SearchStringPrompt]);
                     49:                if(!getstr(str,40,K_LINE|K_UPPER)) {
                     50:                        lncntr=0;
                     51:                        return; } } }
                     52: if(ch=='D') {
                     53:        if((s=listfiles(usrdir[curlib][curdir[curlib]],str,0,mode))==-1)
                     54:                return;
                     55:        bputs("\r\1>");
                     56:        if(s>1)
                     57:                bprintf(text[NFilesListed],s);
                     58:        else if(!s && !(mode&FL_ULTIME))
                     59:                bputs(text[FileNotFound]);
                     60:        return; }
                     61: if(ch=='L') {
                     62:        k=0;
                     63:        for(i=0;i<usrdirs[curlib] && !msgabort();i++) {
                     64:                attr(LIGHTGRAY);
                     65:                outchar('.');
                     66:                if(i && !(i%5))
                     67:                        bputs("\b\b\b\b\b     \b\b\b\b\b");
                     68:                if(mode&FL_ULTIME       /* New-scan */
                     69:                        && (lib[usrlib[curlib]]->offline_dir==usrdir[curlib][i]
                     70:                        || dir[usrdir[curlib][i]]->misc&DIR_NOSCAN))
                     71:                        continue;
                     72:                else if((s=listfiles(usrdir[curlib][i],str,0,mode))==-1)
                     73:                        return;
                     74:                else k+=s; }
                     75:        bputs("\r\1>");
                     76:        if(k>1)
                     77:                bprintf(text[NFilesListed],k);
                     78:        else if(!k && !(mode&FL_ULTIME))
                     79:                bputs(text[FileNotFound]);
                     80:        return; }
                     81: 
                     82: scanalldirs(mode);
                     83: }
                     84: 
                     85: /****************************************************************************/
                     86: /* Scan all directories in all libraries for files                                                     */
                     87: /****************************************************************************/
                     88: void scanalldirs(char mode)
                     89: {
                     90:        char str[256];
                     91:        int s;
                     92:        uint i,j,k,d;
                     93: 
                     94: if(!usrlibs) return;
                     95: k=0;
                     96: if(mode&FL_ULTIME) {                   /* New file scan */
                     97:        bprintf(text[NScanHdr],timestr(&ns_time));
                     98:        str[0]=0; }
                     99: else if(mode==FL_NO_HDR) {             /* Search for a string */
                    100:        if(!getfilespec(tmp))
                    101:                return;
                    102:        padfname(tmp,str); }
                    103: else if(mode==FL_FINDDESC) {   /* Find text in description */
                    104:        if(!noyes(text[SearchExtendedQ]))
                    105:                mode=FL_EXFIND;
                    106:        if(sys_status&SS_ABORT) {
                    107:                lncntr=0;
                    108:                return; }
                    109:        bputs(text[SearchStringPrompt]);
                    110:        if(!getstr(str,40,K_LINE|K_UPPER)) {
                    111:                lncntr=0;
                    112:                return; } }
                    113: for(i=d=0;i<usrlibs;i++) {
                    114:        for(j=0;j<usrdirs[i] && !msgabort();j++,d++) {
                    115:                attr(LIGHTGRAY);
                    116:                outchar('.');
                    117:                if(d && !(d%5))
                    118:                        bputs("\b\b\b\b\b     \b\b\b\b\b");
                    119:                if(mode&FL_ULTIME /* New-scan */
                    120:                        && (lib[usrlib[i]]->offline_dir==usrdir[i][j]
                    121:                        || dir[usrdir[i][j]]->misc&DIR_NOSCAN))
                    122:                        continue;
                    123:                else if((s=listfiles(usrdir[i][j],str,0,mode))==-1)
                    124:                        return;
                    125:                else k+=s; }
                    126:        if(j<usrdirs[i])   /* aborted */
                    127:                break; }
                    128: bputs("\r\1>");
                    129: if(k>1)
                    130:        bprintf(text[NFilesListed],k);
                    131: else if(!k && !(mode&FL_ULTIME))
                    132:        bputs(text[FileNotFound]);
                    133: }
                    134: 

unix.superglobalmegacorp.com

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