diff --git a/unix/uxsftp.c b/unix/uxsftp.c index 0afd2a13..1c48e0d5 100644 --- a/unix/uxsftp.c +++ b/unix/uxsftp.c @@ -436,7 +436,10 @@ bool create_directory(const char *name) char *dir_file_cat(const char *dir, const char *file) { - return dupcat(dir, "/", file, NULL); + ptrlen dir_pl = ptrlen_from_asciz(dir); + return dupcat( + dir, ptrlen_endswith(dir_pl, PTRLEN_LITERAL("/"), NULL) ? "" : "/", + file, NULL); } /* diff --git a/windows/winsftp.c b/windows/winsftp.c index 45d38d57..adea38c8 100644 --- a/windows/winsftp.c +++ b/windows/winsftp.c @@ -451,7 +451,11 @@ bool create_directory(const char *name) char *dir_file_cat(const char *dir, const char *file) { - return dupcat(dir, "\\", file, NULL); + ptrlen dir_pl = ptrlen_from_asciz(dir); + return dupcat( + dir, (ptrlen_endswith(dir_pl, PTRLEN_LITERAL("\\"), NULL) || + ptrlen_endswith(dir_pl, PTRLEN_LITERAL("/"), NULL)) ? "" : "\\", + file, NULL); } /* ----------------------------------------------------------------------