Use dot at beginning of temporary file name.
diff --git a/lib/zip_source_file_stdio_named.c b/lib/zip_source_file_stdio_named.c index 974bf52..2bed74a 100644 --- a/lib/zip_source_file_stdio_named.c +++ b/lib/zip_source_file_stdio_named.c
@@ -291,6 +291,7 @@ int mode; struct stat st; int fd; + const char *file_name; char *start, *end; if (stat(ctx->fname, &st) == 0) { @@ -300,11 +301,20 @@ mode = -1; } - if ((temp = (char *)malloc(strlen(ctx->fname) + 13)) == NULL) { + if ((temp = (char *)malloc(strlen(ctx->fname) + 14)) == NULL) { zip_error_set(&ctx->error, ZIP_ER_MEMORY, 0); return -1; } - sprintf(temp, "%s.XXXXXX.part", ctx->fname); + + file_name = strrchr(ctx->fname, '/'); + if (file_name == NULL) { + file_name = ctx->fname; + } + else { + file_name += 1; + } + sprintf(temp, "%.*s.%s.XXXXXX.part", (int)(file_name - ctx->fname), ctx->fname, file_name); + end = temp + strlen(temp) - 5; start = end - 6;