Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a535b51 authored by Alex Deymo's avatar Alex Deymo
Browse files

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
parent b99df8d2
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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: