Plan 9 from Bell Labs’s /usr/web/sources/contrib/jas/root/sys/lib/python2.7/site-packages/mercurial/posix.pyc

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


�8�c@sVddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZe
ZejjZejjZejZejZejZeZejd�Zeje�d�Zd�Zd�Zd�Zd�Zd	�Zd
�Zdd�Z!d�Z"d
�Z#d�Z$d�Z%d�Z&d�Z'd�Z(d�Z)d�Z*ej+dkr�ddl,Z,d�Z*d�Z-n'ej.d@kr�d�Z-nejj-Z-ej+dkr*e/dddgd e0�Z1d!�Z*d"�Z"d#�Z#nd$�Z2d%�Z3d&d'�Z4d(�Z5d)�Z6d*�Z7d+�Z8d,�Z9e:ej;ej<g�Z=d-�Z>d.�Z?dd/�Z@dd0�ZAd1�ZBd2�ZCd3�ZDd4�ZEd5�ZFed6�ZGddd7�ZHd8�ZId9eJfd:��YZKd;�ZLd<e
j
fd=��YZMd>�ZNd?�ZOdS(Ai�(t_NicCsk|jdd�}t|�dkr.d|fS|djd�}|rU||dfS|dd|dfS(s�Same as posixpath.split, but faster

    >>> import posixpath
    >>> for f in ['/absolute/path/to/file',
    ...           'relative/path/to/file',
    ...           'file_alone',
    ...           'path/to/directory/',
    ...           '/multiple/path//separators',
    ...           '/file_at_root',
    ...           '///multiple_leading_separators_at_root',
    ...           '']:
    ...     assert split(f) == posixpath.split(f), f
    t/iti(trsplittlentrstrip(tpthttnh((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytsplits
cCstS(s@return true if it is safe to hold open file handles to hardlinks(tTrue(((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
openhardlinks-scCstj|�jS(s-return number of hardlinks for the given file(tostlstattst_nlink(tname((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytnlinks1scCs}|d}tjjdkr?|ddkry|dd!}qyn:|jd�ry|jd�ryd|kry|dd!}n|S(	s<parses the output produced by patch and returns the filenameitOpenVMSit`ii�t't (Rtsystplatformt
startswithtendswith(toutput_linetpf((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytparsepatchoutput5s
*cCs6|rd||fp|}|r2d||fp5|S(sBuild argument list for sshs%s@%ss%s -p %s((tsshcmdthosttusertporttargs((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytsshargs@scCstj|�jd@dkS(s"check whether a file is executablei@i(RR
tst_mode(tf((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytisexecEscCsmtj|�j}|r�tj|�s�t|�}|j�}|j�tj|�ytj	||�Wq�t
k
r�t|d�}|j|�|j�q�XndStj|�r
tj|�}tj|�t|d�}|j|�|j�dt
@}n|d@}|rE|rEtj|||d@d?t
@B�n$|ri|ritj||d@�ndS(Ntwi�i@i$i(RR
R"tstattS_ISLNKtopentreadtclosetunlinktsymlinktOSErrortwritetreadlinktumasktchmod(R#tltxtstfptdatatsx((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytsetflagsIs4








$
cCs�ytj|�jd@}WnQtk
rm}|jtjkrD�n|}|dkr`t}n|dM}nXtj||�dS(s�Copy the file mode from the file at path src to dst.
    If src doesn't exist, we're using mode instead. If mode is None, we're
    using umask.i�i�N(	RR
R"R-terrnotENOENTtNoneR0R1(tsrctdsttmodeR"tinst((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytcopymodems
cCs�y�tjtjBtjB}tjd|dd�\}}zatj|�tj|�jd@}||@}tj	|||A�tj|�jd@|k}Wdtj
|�XWnttfk
r�t
SX|p�|S(s}
    Check whether the given path is on a filesystem with UNIX-like exec flags

    Requires a directory (like /foo/.hg)
    tdirtprefixs
hg-checkexec-i�N(R&tS_IXUSRtS_IXGRPtS_IXOTHttempfiletmkstempRR*R"R1R+tIOErrorR-tFalse(tpatht	EXECFLAGStfhtfntmtnew_file_has_exectexec_flags_cannot_flip((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	checkexec|s

 cCs\tjd|dd�}y%tjd|�tj|�tSWnttfk
rWtSXdS(s?check whether the given path is on a symlink-capable filesystemRARBs
hg-checklink-t.N(	RFtmktempRR,R+R
R-tAttributeErrorRI(RJR((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	checklink�s
cCsdS(s�Check that the base-relative path is a valid filename on this platform.
    Returns None if the path is ok, or a UI string describing the problem.N((RJ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytcheckosfilename�scCsdS(N((tfd((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	setbinary�scCs|S(N((RJ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytpconvert�scCs|S(N((RJ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	localpath�scCstjj||�S(swReturns whether path1 and path2 refer to the same file. This is only
    guaranteed to work for files, not directories.(RRJtsamefile(tfpath1tfpath2((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyR[�scCs.tj|�}tj|�}|j|jkS(syReturns whether fpath1 and fpath2 are on the same device. This is only
    guaranteed to work for files, not directories.(RR
tst_dev(R\R]tst1tst2((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
samedevice�scCs
|j�S(N(tlower(RJ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytnormcase�stdarwincCs,y|jd�|j�SWntk
r.nXy|jd�}Wn�tk
rd}d}d}xc|D][}t|�}|r�|dks�|dkr�|djg|D]}dt|�^q��7}d}d}n|dkr�dkr�|7}qk|dkr`d|ko"d	knr`|d
kr<d}n|dkrQd
}nd}|}qk|dkr�d|ko�dknr�||7}|d8}|s�||7}d}q�qk|d|7}qkW|djg|D]}dt|�^q��7}|jd�}nXtjd|�j�jd�S(s�
        Normalize a filename for OS X-compatible comparison:
        - escape-encode invalid characters
        - decompose to NFD
        - lowercase

        >>> normcase('UPPER')
        'upper'
        >>> normcase('Café')
        'cafe\xcc\x81'
        >>> normcase('É')
        'e\xcc\x81'
        >>> normcase('���.JPG') # issue3918
        '%b8%ca%c3\xca\xbe%c8.jpg'
        tasciisutf-8Rii�i�s%%%02Xi�i�i�ii�iitNFD(tdecodeRbtUnicodeDecodeErrortordtjointunicodedatat	normalizetencode(RJtuR4tgR2tctoR3((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyRc�sH



0	
(			(


0cCs�d}d}ytj||�}Wn,tk
rP}|jtjkrJ|S�nXz$tj||dd�jd�SWdtj|�XdS(sL
        Returns the true, canonical file system path equivalent to the given
        path.

        Equivalent means, in this case, resulting in the same, unique
        file system link to the path. Every file system entry, whether a file,
        directory, hard link or symbolic link or special, will have a single
        path preferred by the system, but may allow multiple, differing path
        lookups to point to it.

        Most regular UNIX file systems only allow a file system entry to be
        looked up by its distinct path. Obviously, this does not apply to case
        insensitive file systems, whether case preserving or not. The most
        complex issue to deal with is file systems transparently reencoding the
        path, such as the non-standard Unicode normalisation required for HFS+
        and HFSX.
        i2i tiN(RR(R-R9R:tfcntlRR*(RJt	F_GETPATHt	O_SYMLINKRWterr((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytrealpaths$iitfinalcCs:tjj|�r"tjj|�Stjjd|�SdS(Ns./(RRJtisabsRw(RJ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyRw*stcygwins/usr/bins/usr/libs	/cygdrivetreversecCs�t|�}|dks+|dtjkr8tj|�SxgtD]_}|j|�sZq?nt|�}||krv|S||tjkr?|tj||�Sq?Wtj|�S(Ni(RRtseptencodingtuppertcygwinmountpointsR(RJtpathlentmptmplen((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyRc@s

cCstS(N(RI(RJ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyRQWscCstS(N(RI(RJ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyRU]scCs2tjjdkrd|Sd|jdd�SdS(NRs"%s"s'%s'Rs'\''(RRRtreplace(R4((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
shellquote`scCs|S(N((tcmd((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytquotecommandfstrcCstj||�S(N(Rtpopen(tcommandR>((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyR�iscCsUtjjdkrtSytj|d�tSWn tk
rP}|jtjkSXdS(s5return False if pid dead, True if running or not sureRiN(RRRR
tkillR-R9tESRCH(tpidR?((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyttestpidlscCs6|dkr td�||fStd�||fS(s}return a 2-tuple (desc, code) describing a subprocess status
    (codes from kill are negative - not os.system/wait encoding)isexited with status %dskilled by signal %d(R(tcode((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytexplainexitvscCs|jtj�kS(s;Return True if the stat object st is from the current user.(tst_uidRtgetuid(tst((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytisowner}scCs�tjdkr|Sd�}tj|kr5||�Stjdkr]|tjjd|��SxTtjjdd�jtj	�D]1}|tjj||��}|dk	r|SqWdS(s�Find executable for command searching like which does.
    If command is a basename then PATH is searched for command.
    PATH isn't searched if command is an absolute or relative path.
    If command isn't found None is returned.RcSs/tjj|�r+tj|tj�r+|SdS(s'Will return executable if existing fileN(RRJtisfiletaccesstX_OKR;(t
executable((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytfindexisting�s'tplan9s/bintPATHRN(RRRR|RJRjtenvirontgetR	tpathsepR;(R�R�RJR�((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytfindexe�s	
(cCsdS(N((((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytsetsignalhandler�sccs�tj}tj}x~|D]v}y.||�}||j�tkrLd}nWn:tk
r�}|jtj	tj
fkr��nd}nX|VqWdS(sqStat each file in files. Yield each stat, or None if a file does not
    exist or has a type we don't care about.N(RR
R&tS_IFMTR"t_wantedkindsR;R-R9R:tENOTDIR(tfilesR
tgetkindtnfR�Rv((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	statfiles�s		


cCs
tj�S(sreturn name of current user(tgetpasstgetuser(((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyR��scCsO|dkrtj�}nytj|�dSWntk
rJt|�SXdS(siReturn the name of the user with the given uid.

    If uid is None, return the name of the current user.iN(R;RR�tpwdtgetpwuidtKeyErrortstr(tuid((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytusername�s
cCsO|dkrtj�}nytj|�dSWntk
rJt|�SXdS(skReturn the name of the group with the given gid.

    If gid is None, return the name of the current group.iN(R;RtgetgidtgrptgetgrgidR�R�(tgid((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	groupname�s
cCsttj|�j�S(skReturn the list of members of the group with the given
    name, KeyError if the group does not exist.
    (tlistR�tgetgrnamtgr_mem(R((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytgroupmembers�scCs*tjtjttdd�B|d|�S(NtP_DETACHi(RtspawnvptP_NOWAITtgetattr(R ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
spawndetached�scCstjd S(Ni(Rtargv(((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytgethgcmd�scCs8y ddl}ddl}ddl}x�jtjtjfD]�}y�y|j�}Wntk
row@nXt	j
|�s�w@nyB|j||jd�}|jd|�d}|dkr�|SWntk
r�nXWq@t
k
r�q@tk
r}|dtjkrq�q@Xq@WWntk
r3nXdS(	Ni�RrithiiiPt(ttermiostarrayRsRtstderrtstdouttstdintfilenoRTRtisattytioctlt
TIOCGWINSZt
ValueErrorRHR9tEINVALtImportError(R�R�RstdevRWtarritwidthte((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	termwidth�s4$



cCstj|�dS(N(Rtmkdir(RJt
notindexed((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytmakedir�scCszytj|�Wn1tk
rD}|o8|jtjksE�qEnXytjtjj|��Wntk
runXdS(s.unlink and remove the directory if it is emptyN(RR+R-R9R:t
removedirsRJtdirname(R#t
ignoremissingR�((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
unlinkpath�s

cCsdS(N(R;(tkeyRtscope((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	lookupregscCsdS(s�Hide current shell window.

    Used to hide the window opened when starting asynchronous
    child process under Windows, unneeded on other systems.
    N((((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
hidewindow	st	cachestatcBs5eZd�Zd�ZejZd�Zd�ZRS(cCstj|�|_dS(N(RR&(tselfRJ((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt__init__scCst|jj�S(N(tboolR&tst_ino(R�((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt	cacheablesc
Cs�y�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj|jjko�|jj	|jj	kSWnt
k
r�tSXdS(N(R&R"R�R^RR�tst_gidtst_sizetst_mtimetst_ctimeRTRI(R�tother((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt__eq__s
cCs||kS(N((R�R�((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt__ne__-s(t__name__t
__module__R�R�tobjectt__hash__R�R�(((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyR�s
				cCsdS(N(R;(((s3/sys/lib/python2.7/site-packages/mercurial/posix.pytexecutablepath0stunixdomainservercBseZd�Zd�ZRS(cCsgtt|�jtj�|d}||�|_|_tjj|j�r�tjj	|j�r{tj
|j�|_q�tj|j�ny|j|j�Wn�tj
k
rU}|jddkrOtjdd|�}tjj||�|_y*|j|j�tj|j|j�WqRttj
fk
rK|j��qRXqV�nX|jd�dS(s2Create a unix domain socket with the given prefix.s.sockisAF_UNIX path too longRBshg-%s-iN(tsuperR�R�tsockettAF_UNIXRwRJRtislinktexistsR/R+tbindterrorR RFtmkdtempRjR,R-tcleanuptlisten(R�Rjt	subsystemtsocknameRvttmpdir((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyR�4s*


cCsgd�}|tj|j�|j|jkrc|tj|j�|tjtjj|j��ndS(NcSs@y||�Wn+tk
r;}|jtjkr<�q<nXdS(N(R-R9R:(R#RJRv((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
okayifmissingOs
(RR+RJRwtrmdirR�(R�R�((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyR�Ns
	(R�R�R�R�(((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyR�3s	cCs|otj|j�S(s(check whether a stat result is a symlink(R&R'R"(R�((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
statislink[scCs|o|jd@dkS(s1check whether a stat result is an executable filei@i(R"(R�((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt
statisexec_s(iiisfinal(Pti18nRR}RRR9R&R�R�R�R�RFRkR(t	posixfileRJtnormpathtsamestattlinktoslinkR+trenameRItexpandglobsR0R	RRRR!R$R8R;R@RQRURVRXRYRZR[RaRcRRsRwtversion_infotsortedR
RR�R�R�R�R�R�R�R�tsettS_IFREGtS_IFLNKR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R(((s3/sys/lib/python2.7/site-packages/mercurial/posix.pyt<module>s�x			
							$										B!							
											
		(	

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].