
    nj!                         S SK r S SKrS SKrS SKrS SKJr  S rS r " S S\5      r	S r
S rS	 rSS
 jr\R                  4S jr\S:X  a#  \R"                  " \" \R                  5      5        gg)    N)gdalc                     U R                  S5      =(       d)    U R                  S5      =(       d    U R                  S5      $ )Nzhttp://zhttps://zftp://)
startswith)filenames    W/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/samples/gdal_cp.pyneedsVSICurlr   '   s;    I& 	)z*	)x(    c                      [        S5        g)NzGUsage: gdal_cp [-progress] [-r] [-skipfailures] source_file target_file   )print r	   r   Usager   /   s    	
STr	   c                        \ rS rSrS rS rSrg)ScaledProgress4   c                 (    Xl         X l        X0l        g N)dfMindfMaxUnderlyingProgress)selfr   r   r   s       r   __init__ScaledProgress.__init__5   s    

"4r	   c                 r    U R                  XR                  U R                  -
  -  U R                  -   X#5      $ r   r   r   r   )r   
dfCompletemessage	user_datas       r   ProgressScaledProgress.Progress:   s3    &&**tzz12TZZ?
 	
r	   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r   r	   r   r   r   4   s    5

r	   r   c                 D   UR                  S5      (       a  [        R                  " U5      nO[        R                  " US-   5      nUc  UR                  S5      (       d(  Ubi  [        R                  " UR
                  5      (       aD  [        R                  R                  U 5      u  pEUR                  S5      (       a  X-   nOUS-   U-   n[        R                  " U S5      nUc  [        SU -  5        g[        R                  " XXbS9n[        R                  " U5        U$ )N/rbzCannot open %s)callback)endswithr   VSIStatLstatS_ISDIRmodeospathsplit	VSIFOpenLr   CopyFile
VSIFCloseL)srcfile
targetfileprogressstat_res_tailfinrets           r   gdal_cp_singler>   @   s    3==,==c!12Z0055hmm!<!<GGMM'*	s###*J#c)D0J
..$
'C
{()
--S
DCOOCJr	   c                 <   U S   S:X  a  U S[        U 5      S-
   n [        R                  " U 5      nUc  [        SU -  5        g[        R                  " U5      c!  [        R
                  " U[        SS5      5        U H  nUS:X  d  US	:X  a  M  U S-   U-   n[        R                  " U[        R                  [        R                  -  5      nUR                  5       (       a  [        XaS-   U-   X#5      nO[        XaU5      nUS
:X  d  US:X  d  M  U(       a  M  Us  $    g)Nr)   r'   r      z%s is not a directory0755   ...)lenr   ReadDirr   r,   MkdirintVSI_STAT_EXISTS_FLAGVSI_STAT_NATURE_FLAGIsDirectorygdal_cp_recurser>   )	srcdir	targetdirr8   skip_failurelstr6   fullsrcfilestatBufr=   s	            r   rM   rM   [   s   bzSCK!O,
,,v
C
{%./}}Y'

9c&!n-c>W_slW,--22T5N5NN
   !_w6C !BC"9<<J  r	   c                    U S:X  a  Sn [         R                  " U 5      n/ nUc  [        SU -  5        gU HA  nUS:X  d  US:X  a  M  U S:w  a  UR                  U S-   U-   5        M0  UR                  U5        MC     UGb  Sn/ n	U H  n
Sn[        R                  " X5      (       a^  [         R
                  " U
S5      nUbD  [         R                  " USS	5        [         R                  " U5      n[         R                  " U5        U	R                  U5        X-   nM     US:X  a  gSnSnU Hf  n
X   S:w  aV  US
-  U-  nXU   -   S
-  U-  n[        UUU5      n[        XUR                  5      nUS:X  d  US:X  a  U(       d  Us  $ XU   -  nUS-   nMh     gU HE  n
[        R                  " X5      (       d  M   [        XU5      nUS:X  d  US:X  d  M:  U(       a  MC  Us  $    g)N rC   zCannot read directory %sr)   rD   r'   r   r(   r   g      ?rE   r@   )r   rG   r   appendfnmatchr3   	VSIFSeekL	VSIFTellLr5   r   r>   r   )rN   patternr7   r8   rP   rQ   lst2r   
total_sizefilesizelstr6   filesizer<   cursizeir   r   scaled_progressr=   s                      r   gdal_cp_pattern_matchrb   y   s   |
,,v
CD
{(612s?h$.S=KKx/0KK!  
GHw00nnWd3?NN31-#~~c2HOOC(x(#.J  ?G~"#
2 q>1S8:E"0x"H$W/:R:RS"9<Jq>)AA (  Gw00$W(C"9<<J	 
 r	   c                    S nS nSnSn[         R                  " U 5      n U c  g[        S[        U 5      5       H  nX   S:X  a  [         R                  nM  X   S:X  a  SnM)  [        X   5      S:  a  X   SS S	:X  a  SnMI  X   S   S
:X  a  [        SX   -  5        [        5       s  $ Uc  X   nMy  Uc  X   nM  [        SX   -  5        [        5       s  $    Ub  Uc
  [        5       $ [        U5      (       a  SU-   nU(       Gax  US   S:X  a  US[        U5      S-
   n[         R                  " U[         R                  [         R                  -  5      nUc9  [         R                  " US-   [         R                  [         R                  -  5      n[         R                  " U[         R                  [         R                  -  5      nUb  UR                  5       (       a  Ub  UR                  5       (       az  US   S:X  a  USS nUR                  S5      S:w  a  X2UR                  S5      S  -   nOUS-   U-   n[         R                  " U5      c!  [         R                  " U[        SS5      5        [        X#X5      $ [         R"                  R%                  U5      u  pU	R'                  S5      (       d  SU
;   d  SU
;   a  [)        XX1U5      $ [+        X#U5      $ )NFr)   r@   z	-progressz-rT   r   z-skip-zUnrecognized option : %szUnexpected option : %sz	/vsicurl/r'   rA   rB   z/vsi*?)r   GeneralCmdLineProcessorrangerF   TermProgress_nocbr   r   r   r,   rJ   rK   rL   rfindrH   rI   rM   r0   r1   r2   r   rb   r>   )argvr8   r6   r7   recurserP   r`   
statBufSrc
statBufDstrN   rZ   s              r   gdal_cprp      s   GJGL''-D|1c$i 7k!--HW_G\Q471Q<7#:LWQZ3,tw677N_gGJ*TW457N! !$ *,wG' 2;#a#g,"23G]]T..1J1JJ

 #t884;T;TTJ ]]11D4M4MM

 "&&((&&&(("~$'"-
}}S!R'''--2D2F*GG
'#-7
}}Z(0

:s61~6wHKKg.VV$$#.C7N$Z<
 	
 'x88r	   c                     [        U 5      $ r   )rp   )rl   s    r   mainrr     s    4=r	   __main__r   )rW   r0   r-   sysosgeor   r   r   objectr   r>   rM   rb   rp   rl   rr   r!   exitr   r	   r   <module>rx      st   >  	  
 
	
V 	
6<;|H9V hh  zHHT#((^ r	   