Skip to content

Commit

Permalink
fix wrong dst path for source path under '/'
Browse files Browse the repository at this point in the history
When a source file path is /FILE, its dest path would be dst/ILE.
This commit fixes this issue (#8).
  • Loading branch information
upa committed Jan 11, 2024
1 parent 76df611 commit f373783
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 6 deletions.
16 changes: 12 additions & 4 deletions src/path.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,18 @@ static int resolve_dst_path(const char *src_file_path, char *dst_file_path,
mscp_set_error("dirname: %s", strerrno());
return -1;
}
if (strlen(prefix) == 1 && prefix[0] == '.')
offset = 0;
else
offset = strlen(prefix) + 1;

offset = strlen(prefix) + 1;
if (strlen(prefix) == 1) { /* corner cases */
switch (prefix[0]) {
case '.':
offset = 0;
break;
case '/':
offset = 1;
break;
}
}

if (!a->src_path_is_dir && !a->dst_path_is_dir) {
/* src path is file. dst path is (1) file, or (2) does not exist.
Expand Down
2 changes: 1 addition & 1 deletion test/test_e2e.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ def test_copy_file_under_root_to_dir(mscp, src_prefix, dst_prefix):
dst_prefix + os.path.dirname(dst.path)])
assert check_same_md5sum(src, dst)
src.cleanup()
dst.cleanup()
dst.cleanup(preserve_dir = True)


@pytest.mark.parametrize("src_prefix, dst_prefix", param_remote_prefix)
Expand Down
4 changes: 3 additions & 1 deletion test/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,10 @@ def make_content_random(self):
with open(self.path, "wb") as f:
f.write(os.urandom(self.size))

def cleanup(self):
def cleanup(self, preserve_dir = False):
os.remove(self.path)
if preserve_dir:
return
tmp = os.path.dirname(self.path)
while tmp and not tmp in [".", "/"]:
if len(os.listdir(tmp)) == 0:
Expand Down

0 comments on commit f373783

Please sign in to comment.