[Python-checkins] CVS: python/dist/src/Lib dospath.py,1.23,1.24 macpath.py,1.29,1.30 ntpath.py,1.41,1.42 posixpath.py,1.43,1.44

Guido van Rossum gvanrossum@users.sourceforge.net
2001年9月17日 08:16:11 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv22193/Lib
Modified Files:
	dospath.py macpath.py ntpath.py posixpath.py 
Log Message:
SF patch #461781 by Chris Lawrence: os.path.realpath - Resolve symlinks:
 Once upon a time, I put together a little function 
 that tries to find the canonical filename for a given 
 pathname on POSIX. I've finally gotten around to 
 turning it into a proper patch with documentation. 
 On non-POSIX, I made it an alias for 'abspath', as 
 that's the behavior on POSIX when no symlinks are 
 encountered in the path.
 Example:
 >>> os.path.realpath('/usr/bin/X11/X')
 '/usr/X11R6/bin/X'
Index: dospath.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/dospath.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** dospath.py	2001年07月20日 18:54:44	1.23
--- dospath.py	2001年09月17日 15:16:09	1.24
***************
*** 331,332 ****
--- 331,335 ----
 path = join(os.getcwd(), path)
 return normpath(path)
+ 
+ # realpath is a no-op on systems without islink support
+ realpath = abspath
Index: macpath.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/macpath.py,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** macpath.py	2001年08月08日 20:55:10	1.29
--- macpath.py	2001年09月17日 15:16:09	1.30
***************
*** 226,227 ****
--- 226,230 ----
 path = join(os.getcwd(), path)
 return normpath(path)
+ 
+ # realpath is a no-op on systems without islink support
+ realpath = abspath
Index: ntpath.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/ntpath.py,v
retrieving revision 1.41
retrieving revision 1.42
diff -C2 -d -r1.41 -r1.42
*** ntpath.py	2001年08月30日 22:05:26	1.41
--- ntpath.py	2001年09月17日 15:16:09	1.42
***************
*** 452,453 ****
--- 452,456 ----
 path = os.getcwd()
 return normpath(path)
+ 
+ # realpath is a no-op on systems without islink support
+ realpath = abspath
Index: posixpath.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/posixpath.py,v
retrieving revision 1.43
retrieving revision 1.44
diff -C2 -d -r1.43 -r1.44
*** posixpath.py	2001年04月16日 18:12:04	1.43
--- posixpath.py	2001年09月17日 15:16:09	1.44
***************
*** 380,381 ****
--- 380,402 ----
 path = join(os.getcwd(), path)
 return normpath(path)
+ 
+ 
+ # Return a canonical path (i.e. the absolute location of a file on the
+ # filesystem).
+ 
+ def realpath(filename):
+ """Return the canonical path of the specified filename, eliminating any
+ symbolic links encountered in the path."""
+ filename = abspath(filename)
+ 
+ bits = ['/'] + filename.split('/')[1:]
+ for i in range(2, len(bits)+1):
+ component = join(*bits[0:i])
+ if islink(component):
+ resolved = os.readlink(component)
+ (dir, file) = split(component)
+ resolved = normpath(join(dir, resolved))
+ newpath = join(*([resolved] + bits[i:]))
+ return realpath(newpath)
+ 
+ return filename

AltStyle によって変換されたページ (->オリジナル) /