home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 September / PCO_0998.ISO / filesbbs / dos / sbbs_src.exe / SBBS / XFER_SEC.C < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-13  |  3.5 KB  |  135 lines

  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.  
  135.