[Pkg-bazaar-commits] ./bzr/unstable r202: Revfile:

mbp at sourcefrog.net mbp at sourcefrog.net
Fri Apr 10 07:44:03 UTC 2009


------------------------------------------------------------
revno: 202
committer: mbp at sourcefrog.net
timestamp: Sat 2005-04-09 13:44:13 +1000
message:
  Revfile:
  - better message when trying to get missing index
  - clean up last_idx stuff
  - todo
modified:
  bzrlib/revfile.py
-------------- next part --------------
=== modified file 'bzrlib/revfile.py'
--- a/bzrlib/revfile.py	2005-04-09 03:29:30 +0000
+++ b/bzrlib/revfile.py	2005-04-09 03:44:13 +0000
@@ -95,6 +95,12 @@
 
 class Revfile:
     def __init__(self, basename):
+        # TODO: Option to open readonly
+
+        # TODO: Lock file  while open
+
+        # TODO: advise of random access
+
         self.basename = basename
         
         idxname = basename + '.irev'
@@ -115,7 +121,7 @@
             self.idxfile.flush()
         else:
             self.idxfile = open(idxname, 'r+b')
-            self.dataname = open(dataname, 'r+b')
+            self.datafile = open(dataname, 'r+b')
             
             h = self.idxfile.read(_RECORDSIZE)
             if h != _HEADER:
@@ -130,7 +136,7 @@
             return -1
         if l % _RECORDSIZE:
             raise RevfileError("bad length %d on index of %r" % (l, self.basename))
-        return (l / _RECORDSIZE) - 1
+        return (l / _RECORDSIZE) - 2
 
 
     def revision(self, rev):
@@ -163,7 +169,7 @@
         idx = self.last_idx() + 1
         self.datafile.seek(0, 2)        # to end
         self.idxfile.seek(0, 2)
-        assert self.idxfile.tell() == _RECORDSIZE * idx
+        assert self.idxfile.tell() == _RECORDSIZE * (idx + 1)
         data_offset = self.datafile.tell()
 
         assert isinstance(t, str) # not unicode or anything wierd
@@ -202,7 +208,7 @@
 
 
     def __len__(self):
-        return int(self.last_idx())
+        return int(self.last_idx()) + 1
 
 
     def __getitem__(self, idx):
@@ -280,7 +286,11 @@
     elif argv[1] == 'dump':
         r.dump()
     elif argv[1] == 'get':
-        sys.stdout.write(r._get_full_text(int(argv[2])))
+        try:
+            sys.stdout.write(r._get_full_text(int(argv[2])))
+        except IndexError:
+            sys.stderr.write("no such record\n")
+            sys.exit(1)
     else:
         sys.stderr.write("unknown command %r\n" % argv[1])
         sys.exit(1)



More information about the Pkg-bazaar-commits mailing list