|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.