Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- src/tests/test-file-xfers.c | 6 ++++++ src/vdagent/file-xfers.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/tests/test-file-xfers.c b/src/tests/test-file-xfers.c index 494adc9..e87efac 100644 --- a/src/tests/test-file-xfers.c +++ b/src/tests/test-file-xfers.c @@ -67,6 +67,12 @@ int main(int argc, char *argv[]) // try to create a file with a path where there's a file (should fail) test_file("test.txt/out", NULL); + // create a file without extension in a directory with extension + test_file("sub.dir/test", "./test-dir/sub.dir/test"); + + // create a file with same name above, should not strip the filename + test_file("sub.dir/test", "./test-dir/sub.dir/test (1)"); + assert(system("rm -rf test-dir") == 0); return 0; diff --git a/src/vdagent/file-xfers.c b/src/vdagent/file-xfers.c index a26ee46..3b431ee 100644 --- a/src/vdagent/file-xfers.c +++ b/src/vdagent/file-xfers.c @@ -206,7 +206,8 @@ vdagent_file_xfers_create_file(const char *save_dir, char **file_name_p) goto error; } g_free(path); - char *extension = strrchr(file_path, '.'); + char *extension = strrchr(file_path, '/'); + extension = strrchr(extension != NULL ? extension + 1 : file_path, '.'); int basename_len = extension != NULL ? extension - file_path : strlen(file_path); path = g_strdup_printf("%.*s (%i)%s", basename_len, file_path, i + 1, extension ? extension : ""); -- 2.20.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel