fat16copy: Allow to copy files to an existing directory.
This patch re-uses existing directories when copying directories, allowing to copy files to a directory previously created. Bug: 34811400 Test: fat16copy.py fat.bin a/b/foo; fat16copy.py fat.bin c/d/foo (cherry-picked from 0af24a27a8d0dc7e1782f36a5a9963021ff8b3f6) Change-Id: I283184da18f3c4951d6c84aafa4185074791acd2
This commit is contained in:
parent
b99df8d27d
commit
9a535b5188
|
@ -234,11 +234,16 @@ class fat_dir(object):
|
|||
data.seek(0)
|
||||
data_file.write(data.read())
|
||||
|
||||
def new_subdirectory(self, name):
|
||||
def open_subdirectory(self, name):
|
||||
"""
|
||||
Create a new subdirectory of this directory with the given name.
|
||||
Open a subdirectory of this directory with the given name. If the
|
||||
subdirectory doesn't exist, a new one is created instead.
|
||||
Returns a fat_dir().
|
||||
"""
|
||||
for dent in self.dentries:
|
||||
if dent.longname == name:
|
||||
return dent.open_directory()
|
||||
|
||||
chunk = self.backing.fs.allocate(1)
|
||||
(shortname, ext) = self.make_short_name(name)
|
||||
new_dentry = self.add_dentry(ATTRIBUTE_SUBDIRECTORY, shortname,
|
||||
|
@ -751,7 +756,7 @@ def add_item(directory, item):
|
|||
base = os.path.basename(item)
|
||||
if len(base) == 0:
|
||||
base = os.path.basename(item[:-1])
|
||||
sub = directory.new_subdirectory(base)
|
||||
sub = directory.open_subdirectory(base)
|
||||
for next_item in sorted(os.listdir(item)):
|
||||
add_item(sub, os.path.join(item, next_item))
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue