B ¥Þž«ŒÊ²aã@s¸dZdadadadtZddlZddlZddlZddlZddl m Z dd„Z ej fd d „Z ej fd d „Zejd d…ej fdd„Zedks˜eejdkr´e eejd d…ej ƒ¡dS)z9Python utility to print MD5 checksums of argument files. i NÚrbaD usage: md5sum.py [-b] [-t] [-l] [-s bufsize] [file ...] -b : read files in binary mode (default) -t : read files in text mode (you almost certainly don't want this!) -l : print last pathname component only -s bufsize: read buffer size (default %d) file ... : files to sum; '-' or no files means stdin é)Úmd5cGs®d}|r0t|dtjƒr0|d|dd…}}ntj}t|ƒdkrXt|dtƒsX|d}xP|D]H}t|tƒr˜|dkrˆttjd|ƒp„|}q¦t ||ƒp”|}q^t ||ƒp¤|}q^W|S)Nréÿÿÿÿéú-z) Ú isinstanceÚioÚIOBaseÚsysÚstdoutÚlenÚstrÚ printsumfpÚstdinÚprintsumÚsum)ÚfilesÚstsÚoutÚf©rú9/opt/alt/python37/lib64/python3.7/Tools/scripts/md5sum.pyrs  rc Csjyt|tƒ}Wn6tk rD}ztj d||f¡dSd}~XYnXtrRt|ƒ}t|||ƒ}| ¡|S)Nz%s: Can't open: %s r) ÚopenÚrmodeÚIOErrorr ÚstderrÚwriteÚfnfilterrÚclose)ÚfilenamerÚfpÚmsgrrrrr,s rc Cs’tƒ}y:x4| t¡}|sPt|tƒr0| |j¡}| |¡q WWn6tk rv}zt j   d||f¡dSd}~XYnX|  d|  ¡|f¡dS)Nz%s: I/O error: %s rz%s %s r) rÚreadÚbufsizerr ÚencodeÚencodingÚupdaterr rrZ hexdigest)r rrÚmÚdatar!rrrr8s   rrc Csºyt |d¡\}}Wn@tjk rT}z tj dtjd|tf¡dSd}~XYnXxN|D]F\}}|dkrvtjj a q\|dkr„da q\|dkr’d a q\|d kr\t |ƒa q\W|s°d g}t||ƒS) Nzblts:z %s: %s %sréz-lz-brz-tÚrz-sr)ÚgetoptÚerrorr rrÚargvÚusageÚosÚpathÚbasenamerrÚintr#r)ÚargsrZoptsr!ÚoÚarrrÚmainHs"  r6Ú__main__)Ú__doc__r#rrr.rr r/r+Zhashlibrrr rrr-r6Ú__name__ÚexitrrrrÚs