[Python-checkins] CVS: python/dist/src/Lib pydoc.py,1.34,1.35

Ka-Ping Yee ping@users.sourceforge.net
2001年4月13日 06:53:10 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv31768
Modified Files:
	pydoc.py 
Log Message:
Add inode checks to detect circular symbolic links (so that the
 Tools/idle/idlelib link doesn't cause an infinite loop -- aack!)
Index: pydoc.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/pydoc.py,v
retrieving revision 1.34
retrieving revision 1.35
diff -C2 -r1.34 -r1.35
*** pydoc.py	2001年04月13日 12:11:19	1.34
--- pydoc.py	2001年04月13日 13:53:07	1.35
***************
*** 1459,1463 ****
 def __init__(self):
 roots = map(lambda dir: (dir, ''), pathdirs())
! Scanner.__init__(self, roots, self.submodules, self.ispackage)
 
 def submodules(self, (dir, package)):
--- 1459,1464 ----
 def __init__(self):
 roots = map(lambda dir: (dir, ''), pathdirs())
! Scanner.__init__(self, roots, self.submodules, self.isnewpackage)
! self.inodes = map(lambda (dir, pkg): os.stat(dir)[1], roots)
 
 def submodules(self, (dir, package)):
***************
*** 1472,1477 ****
 return children
 
! def ispackage(self, (dir, package)):
! return ispackage(dir)
 
 def run(self, callback, key=None, completer=None):
--- 1473,1481 ----
 return children
 
! def isnewpackage(self, (dir, package)):
! inode = os.stat(dir)[1] # detect circular symbolic links
! if not (os.path.islink(dir) and inode in self.inodes):
! self.inodes.append(inode)
! return ispackage(dir)
 
 def run(self, callback, key=None, completer=None):

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