From 1e3b7eee3b9ff9830a760b376ebd8b8862bfcded Mon Sep 17 00:00:00 2001 From: ed Date: Sun, 26 Feb 2023 18:28:37 +0000 Subject: [PATCH] dont rmdir volume top on cleanup --- copyparty/up2k.py | 4 ++-- copyparty/util.py | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/copyparty/up2k.py b/copyparty/up2k.py index 0286c2d5..e6d2f603 100644 --- a/copyparty/up2k.py +++ b/copyparty/up2k.py @@ -2921,7 +2921,7 @@ class Up2k(object): if is_dir: ok, ng = rmdirs(self.log_func, scandir, True, atop, 1) - ok2, ng2 = rmdirs_up(os.path.dirname(atop)) + ok2, ng2 = rmdirs_up(os.path.dirname(atop), ptop) return n_files, ok + ok2, ng + ng2 @@ -2980,7 +2980,7 @@ class Up2k(object): curs.clear() rmdirs(self.log_func, scandir, True, sabs, 1) - rmdirs_up(os.path.dirname(sabs)) + rmdirs_up(os.path.dirname(sabs), svn.realpath) return "k" def _mv_file( diff --git a/copyparty/util.py b/copyparty/util.py index ab193183..60c3b0e0 100644 --- a/copyparty/util.py +++ b/copyparty/util.py @@ -2278,18 +2278,21 @@ def rmdirs( return ok, ng -def rmdirs_up(top: str) -> tuple[list[str], list[str]]: +def rmdirs_up(top: str, stop: str) -> tuple[list[str], list[str]]: """rmdir on self, then all parents""" + if top == stop: + return [], [top] + try: os.rmdir(fsenc(top)) except: return [], [top] par = os.path.dirname(top) - if not par: + if not par or par == stop: return [top], [] - ok, ng = rmdirs_up(par) + ok, ng = rmdirs_up(par, stop) return [top] + ok, ng