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

Ka-Ping Yee ping@users.sourceforge.net
Fri, 13 Apr 2001 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):