]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Adapt to modern times...
authorGuido van Rossum <guido@python.org>
Thu, 10 Dec 1992 00:00:58 +0000 (00:00 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 10 Dec 1992 00:00:58 +0000 (00:00 +0000)
Tools/scripts/objgraph.py
Tools/scripts/pdeps.py

index a21797d6ff38b7339d8efd6b0c67697e1521f85f..c6bbe665a239f39b806d000b91940dd72c0d2e25 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/local/python
+#!/usr/local/bin/python
 
 # objgraph
 #
@@ -21,9 +21,9 @@
 
 import sys
 import string
-import path
+import os
 import getopt
-import regexp
+import regex
 
 # Types of symbols.
 #
@@ -33,7 +33,7 @@ ignore = 'Nntrgdsbavuc'
 
 # Regular expression to parse "nm -o" output.
 #
-matcher = regexp.compile('(.*):\t?........ (.) (.*)$')
+matcher = regex.compile('\(.*\):\t?........ \(.\) \(.*\)$')
 
 # Store "item" in "dict" under "key".
 # The dictionary maps keys to lists of items.
@@ -66,12 +66,13 @@ undef2file = {}
 #
 def readinput(file):
        while 1:
-               s = file.readline(200) # Arbitrary, but reasonable limit
+               s = file.readline()
                if not s:
                        break
-               # If you get an exception on this line,
+               # If you get any output from this line,
                # it is probably caused by an unexpected input line:
-               (ra, rb), (r1a, r1b), (r2a, r2b), (r3a, r3b) = matcher.exec(s)
+               if matcher.search(s) < 0: s; continue # Shouldn't happen
+               (ra, rb), (r1a, r1b), (r2a, r2b), (r3a, r3b) = matcher.regs[:4]
                fn, name, type = s[r1a:r1b], s[r3a:r3b], s[r2a:r2b]
                if type in definitions:
                        store(def2file, name, fn)
@@ -160,7 +161,8 @@ def main():
                optlist, args = getopt.getopt(sys.argv[1:], 'cdu')
        except getopt.error:
                sys.stdout = sys.stderr
-               print 'Usage:', path.basename(sys.argv[0]), '[-cdu] [file] ...'
+               print 'Usage:', os.path.basename(sys.argv[0]),
+               print           '[-cdu] [file] ...'
                print '-c: print callers per objectfile'
                print '-d: print callees per objectfile'
                print '-u: print usage of undefined symbols'
index df20894019ff709ae00574cfd1d069ea22b4e80e..8cf573fee322ca31098edf83f5ed391be27f2004 100755 (executable)
@@ -1,4 +1,4 @@
-#! /usr/local/python
+#! /usr/local/bin/python
 
 # pdeps
 #
@@ -21,8 +21,8 @@
 
 
 import sys
-import regexp
-import path
+import regex
+import os
 import string
 
 
@@ -58,15 +58,15 @@ def main():
 
 # Compiled regular expressions to search for import statements
 #
-m_import = regexp.compile('^[ \t]*from[ \t]+([^ \t]+)[ \t]+')
-m_from = regexp.compile('^[ \t]*import[ \t]+([^#]+)')
+m_import = regex.compile('^[ \t]*from[ \t]+\([^ \t]+\)[ \t]+')
+m_from = regex.compile('^[ \t]*import[ \t]+\([^#]+\)')
 
 
 # Collect data from one file
 #
 def process(filename, table):
        fp = open(filename, 'r')
-       mod = path.basename(filename)
+       mod = os.path.basename(filename)
        if mod[-3:] == '.py':
                mod = mod[:-3]
        table[mod] = list = []
@@ -77,17 +77,17 @@ def process(filename, table):
                        nextline = fp.readline()
                        if not nextline: break
                        line = line[:-1] + nextline
-               result = m_import.exec(line)
-               if not result:
-                       result = m_from.exec(line)
-               if result:
-                       (a, b), (a1, b1) = result
-                       words = string.splitfields(line[a1:b1], ',')
-                       # print '#', line, words
-                       for word in words:
-                               word = string.strip(word)
-                               if word not in list:
-                                       list.append(word)
+               if m_import.match(line) >= 0:
+                       (a, b), (a1, b1) = m_import.regs[:2]
+               elif m_from.match(line) >= 0:
+                       (a, b), (a1, b1) = m_from.regs[:2]
+               else: continue
+               words = string.splitfields(line[a1:b1], ',')
+               # print '#', line, words
+               for word in words:
+                       word = string.strip(word)
+                       if word not in list:
+                               list.append(word)
 
 
 # Compute closure (this is in fact totally general)