B /nU@shddlZddlZddlZddlTddlZejjZeZej jZ ddZ ddZ dZ dd Zd d Zd d ZdZdZdZdZdZdZdZdZededeZdZdedZdeZedeZedeZeeeeefZdd edZ!e"e!Z#eeefZ$dd e$dZ%e"e%Z&ddZ'dd Z(da)d!d"Z*da+d#d$Z,iZ-iZ.d%d&Z/e0d'krde dS)(N)*cCsntjd}td|dtdtdtdtdtdtdtd td td td dS) NrzUsage: z/ [-c] [-r] [-s file] ... file-or-directory ...  z*-c : substitute inside comments z:-r : reverse direction for following -s options z+-s substfile : add a file of substitutions zcontain exactly two words: an identifier and its replacement. z:Comments start with a # character and end at end of line. z=If an identifier is preceded with a *, it is not substituted z,inside a comment even when -c is specified. )sysargverr)Zprognamer9/opt/alt/python37/lib64/python3.7/Tools/scripts/fixcid.pyusage/s r c Cs yttjddd\}}WnHtjk rf}z(tdt|dttdWdd}~XYnXd}|sttdx<|D]4\}}|dkrt|dkrt |d krt |qWxR|D]J}t j |rt|rd}qt j |rt|d d}qt|rd}qWt|dS) Nzcrs:zOptions error: rrz-cz-rz-sz": will not process symbolic links )getoptrrerrorrstrr exit setdocomments setreverseaddsubstospathisdir recursedownislinkfix)ZoptsargsmsgbadZoptargrrrmain>s6     rz^[a-zA-Z0-9_]+\.[ch]$cCs tt|S)N)rematchWanted)namerrrwanted\sr"c Cstd|fd}yt|}Wn:tk rZ}zt|dt|ddSd}~XYnX|g}xf|D]^}|tjtjfkrqntj ||}tj |rqntj |r| |qnt|rnt|rnd}qnWx|D]}t|rd}qW|S)Nzrecursedown(%r) rz: cannot list directory: rr )dbgrlistdirOSErrorrrsortcurdirpardirrjoinrrappendr"rr)dirnamernamesrZsubdirsr!fullnamerrrr_s0     rc Cs|dkrtj}tj}npyt|d}Wn:tk r^}zt|dt|ddSd}~XYnXtj |\}}tj |d|}d}d}t x| }|sP|d}x2|ddd kr| } | sP|| }|d}qWt |} | |kr|dkrpyt|d }WnDtk rL}z$|t|d t|ddSd}~XYnX|dd}t t|d qtt|dtd |td| |dk r|| qW|dkrdS||sdS|y"t|} t|| td@Wn<tk r4}zt|dt|dWdd}~XYnXyt||dWn<tk r}zt|dt|dWdd}~XYnXyt||Wn<tk r}zt|dt|ddSd}~XYnXdS)N-rz: cannot open: rr @rz\ wz: cannot create: z: z< z> iz: warning: chmod failed (z) ~z: warning: backup failed (z: rename failed ()rstdinstdoutopenIOErrorrrrrsplitr) initfixlinereadlinefixlinecloseseekrepreprwritestatchmodST_MODEr%rename) filenamefgrheadtailZtempnamelinenolineZnextlinenewlineZstatbufrrrrus         **rz (struct )?[a-zA-Z_][a-zA-Z0-9_]+z"([^\n\\"]|\\.)*"z'([^\n\\']|\\.)*'z/\*z\*/z0[xX][0-9a-fA-F]*[uUlL]*z0[0-7]*[uUlL]*z[1-9][0-9]*[uUlL]*|z[eE][-+]?[0-9]+z([0-9]+\.[0-9]*|\.[0-9]+)(z)?z[0-9]+()cCstadS)N)OutsideCommentProgramProgramrrrrr9sr9cCsd}x|t|krt||}|dkr(P|}|d}t|dkr`|dkrTtan |dkr`tat|}|tkrt|}ttkrtst d|||}q|t kr|}|d|||||d}t|}||}qW|S)Nrr z/*z*/zFound in comment:) lenrQsearchstartgroupInsideCommentProgramrPDict Docommentsprint NotInComment)rKirfoundnZsubstrrrr;s4      r;cCsdadS)Nr )rXrrrrr srcCs t adS)N)Reverserrrrrsrc Csyt|d}WnDtk rR}z&t|dt|dtdWdd}~XYnXd}xF|}|sjP|d}y|d}Wntk rd}YnX|d| }|sq\t |dkr|dd kr|dd |dg|dd <n&t |d krt|d |||fq\t r|\}}n|\}}|dd kr@|dd}|dd krb|dd}|t |<|t krtd||||ftd||t |f|t |<q\W|dS)Nr/z: cannot read substfile: rr r#Zstruct r z%s:%r: warning: bad line: %rrz"%s:%r: warning: overriding: %r %r z%s:%r: warning: previous: %r )r6r7rrrrr:index ValueErrorr8rRr^rZrWr<) Z substfilefprrJrKr[ZwordsvaluekeyrrrrsH       r__main__)1rrrrAr stderrr@rr#r5r>r rr r"rrZ IdentifierStringZCharZ CommentStartZ CommentEnd Hexnumber Octnumber Decnumber IntnumberExponent PointfloatExpfloat FloatnumberNumberZOutsideCommentr)ZOutsideCommentPatterncompilerPZ InsideCommentZInsideCommentPatternrVr9r;rXrr^rrWrZr__name__rrrr%sXP      '%