[PATCH vd_agent_linux 7/7] file-xfer: Do not strip filename if file part has no extension

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]