home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / p / pbc21fix.zip / FILECOPY.BAS < prev    next >
BASIC Source File  |  1993-02-21  |  2KB  |  68 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        PBClone  Copyright (c) 1990-1993  Thomas G. Hanlin III        |
  4. '   |                                                                      |
  5. '   +----------------------------------------------------------------------+
  6.  
  7.    DECLARE FUNCTION ForceMatch$(Pattern$, SourceFile$)
  8.    DECLARE FUNCTION GetNameFx$ (Buffer$)
  9.    DECLARE FUNCTION GetSizeFx& (Buffer$)
  10.    DECLARE SUB CopyFile (FromFile$, ToFile$, ErrCode%)
  11.    DECLARE SUB ExtendFSpec (File$, Ext$, FullFile$, ErrCode%)
  12.    DECLARE SUB FindFirstFx (Buffer$, FileName$, BYVAL Attr%, ErrCode%)
  13.    DECLARE SUB FindNextFx (Buffer$, ErrCode%)
  14.    DECLARE SUB ParseFSpec (FileSpec$, Drive$, DLen%, Subdir$, SLen%, File$, FLen%)
  15.  
  16. SUB FileCopy (Source$, Dest$, FileCount%, ByteCount&, ErrCode%)
  17.    FileCount% = 0
  18.    ByteCount& = 0
  19.  
  20.    ExtendFSpec Source$, ".", Src$, ErrCode%
  21.    IF ErrCode% THEN EXIT SUB
  22.    SDrv$ = " "
  23.    SDir$ = SPACE$(64)
  24.    SFile$ = SPACE$(12)
  25.    ParseFSpec Src$, SDrv$, D%, SDir$, S%, SFile$, F%
  26.    SDrv$ = LEFT$(SDrv$, D%)
  27.    SDir$ = LEFT$(SDir$, S%)
  28.    SFile$ = LEFT$(SFile$, F%)
  29.    SPath$ = SDrv$ + ":" + SDir$
  30.    IF RIGHT$(SPath$, 1) <> "\" THEN SPath$ = SPath$ + "\"
  31.  
  32.    ExtendFSpec Dest$, ".", Dst$, ErrCode%
  33.    IF ErrCode% THEN EXIT SUB
  34.    DDrv$ = " "
  35.    DDir$ = SPACE$(64)
  36.    DFile$ = SPACE$(12)
  37.    ParseFSpec Dst$, DDrv$, D%, DDir$, S%, DFile$, F%
  38.    DDrv$ = LEFT$(DDrv$, D%)
  39.    DDir$ = LEFT$(DDir$, S%)
  40.    DFile$ = LEFT$(DFile$, F%)
  41.    DPath$ = DDrv$ + ":" + DDir$
  42.    IF RIGHT$(DPath$, 1) <> "\" THEN DPath$ = DPath$ + "\"
  43.  
  44.    IF INSTR(SFile$, "*") OR INSTR(SFile$, "?") THEN
  45.       IF INSTR(DFile$, "*") = 0 AND INSTR(DFile$, "?") = 0 THEN
  46.          ErrCode% = -1
  47.          EXIT SUB
  48.       END IF
  49.    END IF
  50.  
  51.    Buffer$ = SPACE$(64)
  52.    FindFirstFx Buffer$, Src$, 0, ErrCode%
  53.    DO UNTIL ErrCode%
  54.       tmp$ = GetNameFx$(Buffer$)
  55.       FromFile$ = SPath$ + tmp$
  56.       ToFile$ = DPath$ + ForceMatch$(DFile$, tmp$)
  57.       IF FromFile$ = ToFile$ THEN ErrCode% = -2
  58.       IF ErrCode% = 0 THEN CopyFile FromFile$, ToFile$, ErrCode%
  59.       IF ErrCode% = 0 THEN
  60.          FileCount% = FileCount% + 1
  61.          ByteCount& = ByteCount& + GetSizeFx&(Buffer$)
  62.          FindNextFx Buffer$, ErrCode%
  63.       END IF
  64.    LOOP
  65.  
  66.    IF ErrCode% = &H12 THEN ErrCode% = 0
  67. END SUB
  68.