瀏覽代碼

Fix flags data in index.

Jelmer Vernooij 16 年之前
父節點
當前提交
8f89049689
共有 1 個文件被更改,包括 5 次插入9 次删除
  1. 5 9
      dulwich/index.py

+ 5 - 9
dulwich/index.py

@@ -61,14 +61,10 @@ def read_cache_entry(f):
     mtime = read_cache_time(f)
     (dev, ino, mode, uid, gid, size, sha, flags, ) = \
         struct.unpack(">LLLLLL20sH", f.read(20 + 4 * 6 + 2))
-    name = ""
-    char = f.read(1)
-    while char != "\0":
-        name += char
-        char = f.read(1)
+    name = f.read((flags & 0x0fff))
     # Padding:
-    real_size = ((f.tell() - beginoffset + 7) & ~7)
-    f.read((beginoffset + real_size) - f.tell())
+    real_size = ((f.tell() - beginoffset + 8) & ~7)
+    data = f.read((beginoffset + real_size) - f.tell())
     return (name, ctime, mtime, dev, ino, mode, uid, gid, size, 
             sha_to_hex(sha), flags)
 
@@ -84,10 +80,10 @@ def write_cache_entry(f, entry):
     (name, ctime, mtime, dev, ino, mode, uid, gid, size, sha, flags) = entry
     write_cache_time(f, ctime)
     write_cache_time(f, mtime)
+    flags = len(name) & flags
     f.write(struct.pack(">LLLLLL20sH", dev, ino, mode, uid, gid, size, hex_to_sha(sha), flags))
     f.write(name)
-    f.write(chr(0))
-    real_size = ((f.tell() - beginoffset + 7) & ~7)
+    real_size = ((f.tell() - beginoffset + 8) & ~7)
     f.write("\0" * ((beginoffset + real_size) - f.tell()))