From 6528f95bb646cbc787f85474ebcc84afef756ccb Mon Sep 17 00:00:00 2001
From: Jeremy Hylton <jeremy@svn.zope.org>
Date: Wed, 23 Jan 2002 17:32:19 +0000
Subject: [PATCH] Just use the library.

---
 src/scripts/fsdump.py | 60 +++----------------------------------------
 1 file changed, 3 insertions(+), 57 deletions(-)

diff --git a/src/scripts/fsdump.py b/src/scripts/fsdump.py
index ce87767a..c4212e6f 100644
--- a/src/scripts/fsdump.py
+++ b/src/scripts/fsdump.py
@@ -1,64 +1,10 @@
 #! /usr/bin/env python
 """Print a text summary of the contents of a FileStorage."""
 
-from ZODB.FileStorage import FileIterator
-from ZODB.utils import U64
-from ZODB.tests.StorageTestBase import zodb_unpickle
-
-from cPickle import Unpickler
-from cStringIO import StringIO
-import md5
-import types
+#! /usr/bin/env python
 
-def get_pickle_metadata(data):
-    # ZODB's data records contain two pickles.  The first is the class
-    # of the object, the second is the object.
-    if data.startswith('(c'):
-        # Don't actually unpickle a class, because it will attempt to
-        # load the class.  Just break open the pickle and get the
-        # module and class from it.
-        modname, classname, rest = data.split('\n', 2)
-        modname = modname[2:]
-        return modname, classname
-    f = StringIO(data)
-    u = Unpickler(f)
-    try:
-        class_info = u.load()
-    except Exception, err:
-        print err
-        return '', ''
-    if isinstance(class_info, types.TupleType):
-        if isinstance(class_info[0], types.TupleType):
-            modname, classname = class_info[0]
-        else:
-            modname, classname = class_info
-    else:
-        # XXX not sure what to do here
-        modname = repr(class_info)
-        classname = ''
-    return modname, classname
+from ZODB.fsdump import fsdump
 
-def main(path):
-    i = 0
-    for trans in FileIterator(path):
-        print "T %6d %016x %s %s %s" % (i, U64(trans.tid), trans.status,
-                                        trans.user, trans.description)
-        j = 0
-        for rec in trans:
-            modname, classname = get_pickle_metadata(rec.data)
-            dig = md5.new(rec.data).hexdigest()
-            fullclass = "%s.%s" % (modname, classname)
-            # special case for testing purposes
-            if fullclass == "ZODB.tests.MinPO.MinPO":
-                obj = zodb_unpickle(rec.data)
-                fullclass = "%s %s" % (fullclass, obj.value)
-            print "D %6d %016x %016x %s %s" % (j, U64(rec.oid),
-                                               U64(rec.serial),
-                                               rec.version, fullclass)
-            j += 1
-        print
-        i += 1
-            
 if __name__ == "__main__":
     import sys
-    main(sys.argv[1])
+    fsdump(sys.argv[1])
-- 
2.30.9