o
    >I¼c²  ã                   @   s.   d dl Z d dlZG dd„ deƒZddd„ZdS )é    Nc                   @   s   e Zd ZdZdS )Ú
PatchErrorz  Error during the patch process N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   ú@/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradePatcher.pyr      s    r   c                 C   s<  t dƒ\}}t| dd��}| ¡ }W d  ƒ n1 sw   Y  d }}|}	t|dd��}| ¡ }
W d  ƒ n1 s;w   Y  |
D ]ž}|	|krË| ¡ }| d¡r|dd… }| dd¡\}}|retd	ƒ‚| d¡\}}}tj	|||| dd
�\}}|||< qB|d }|dd…  d¡\}}}t
|ƒ}|d8 }|dkr |d }nt
|ƒ}|dkr´|||…= |}	|d8 }qB|dkr»|}	qB|dkrÅ|||…= qBtd| ƒ‚|	|krà|dkrÖ|}	qB|d7 }| ||¡ qBd |¡}|rþt ¡ }| | d¡¡ | ¡ |krþtdƒ‚t| ddd��}| |¡ W d  ƒ dS 1 �sw   Y  dS )zš python implementation of enough "ed" to apply ed-style
        patches. Note that this patches in memory so its *not*
        suitable for big files
    é   zUTF-8)ÚencodingNr   zs/ú/é   zflags for s// not supported yet)Úcountéÿÿÿÿú,Ú ÚcÚaÚdzunknown command: '%s'z.
z(the md5sum after patching is not correctÚwT)ÚrangeÚopenÚ	readlinesÚstripÚ
startswithÚrsplitr   Ú	partitionÚreÚsubnÚintÚinsertÚjoinÚhashlibÚmd5ÚupdateÚencodeÚ	hexdigestÚwrite)ÚorigÚedpatchÚresult_md5sumÚSTATE_EXPECT_COMMANDÚSTATE_EXPECT_DATAÚfÚ
orig_linesÚstartÚendÚstateÚlinesÚlineÚsubsÚflagsÚregexpÚsepÚreplÚnewr   ÚcommandÚ	start_strÚend_strÚresultr"   r   r   r   Úpatch   sr   ÿ
ÿ
ÿ



€

ÿþr=   )N)r!   r   Ú	Exceptionr   r=   r   r   r   r   Ú<module>   s   