Make fat16copy.py add . and .. entries to directories am: df71efe378 am: 8cf11d1423

am: 70e24e55b3

Change-Id: Ib3b8a5e1145451ea52158a1ca23a62902f2794d4
This commit is contained in:
Casey Dahlin 2016-10-14 03:32:34 +00:00 committed by android-build-merger
commit 2ca8667d9e

View file

@ -222,7 +222,11 @@ class fat_dir(object):
data.seek(0, os.SEEK_END) data.seek(0, os.SEEK_END)
size = data.tell() size = data.tell()
chunk = self.backing.fs.allocate(size or 1) chunk = 0
if size > 0:
chunk = self.backing.fs.allocate(size)
(shortname, ext) = self.make_short_name(name) (shortname, ext) = self.make_short_name(name)
self.add_dentry(0, shortname, ext, name, chunk, size) self.add_dentry(0, shortname, ext, name, chunk, size)
@ -240,10 +244,19 @@ class fat_dir(object):
""" """
chunk = self.backing.fs.allocate(1) chunk = self.backing.fs.allocate(1)
(shortname, ext) = self.make_short_name(name) (shortname, ext) = self.make_short_name(name)
new_dentry = dentry(self.backing.fs, ATTRIBUTE_SUBDIRECTORY, new_dentry = self.add_dentry(ATTRIBUTE_SUBDIRECTORY, shortname,
shortname, ext, name, chunk, 0) ext, name, chunk, 0)
new_dentry.commit(self.backing) result = new_dentry.open_directory()
return new_dentry.open_directory()
parent_cluster = 0
if hasattr(self.backing, 'start_cluster'):
parent_cluster = self.backing.start_cluster
result.add_dentry(ATTRIBUTE_SUBDIRECTORY, '.', '', '', chunk, 0)
result.add_dentry(ATTRIBUTE_SUBDIRECTORY, '..', '', '', parent_cluster, 0)
return result
def lfn_checksum(name_data): def lfn_checksum(name_data):
""" """
@ -624,6 +637,9 @@ class fat(object):
Allocate a new cluster chain big enough to hold at least the given amount Allocate a new cluster chain big enough to hold at least the given amount
of bytes. of bytes.
""" """
assert amount > 0, "Must allocate a non-zero amount."
f = self.f f = self.f
f.seek(FAT_TABLE_START + 4) f.seek(FAT_TABLE_START + 4)
@ -708,8 +724,9 @@ class fat(object):
return_cluster = return_cluster or cluster return_cluster = return_cluster or cluster
position += 2 position += 2
self.write_cluster_entry(cluster) self.write_cluster_entry(cluster)
amount -= self.bytes_per_cluster
if amount < 0: if amount <= 0:
self.write_cluster_entry(0xFFFF) self.write_cluster_entry(0xFFFF)
return return_cluster return return_cluster