comparison libpurple/plugins/autoaccept.c @ 21783:3b1d7caddc27

Do not overwrite an existing file. Closes #3982.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Wed, 05 Dec 2007 07:34:11 +0000
parents bacb8c59230a
children ad0d0efa30dd
comparison
equal deleted inserted replaced
21782:bacb8c59230a 21783:3b1d7caddc27
112 case FT_ASK: 112 case FT_ASK:
113 break; 113 break;
114 case FT_ACCEPT: 114 case FT_ACCEPT:
115 if (ensure_path_exists(pref)) 115 if (ensure_path_exists(pref))
116 { 116 {
117 int count = 1;
118 const char *escape;
117 dirname = g_build_filename(pref, purple_normalize(account, xfer->who), NULL); 119 dirname = g_build_filename(pref, purple_normalize(account, xfer->who), NULL);
118 120
119 if (!ensure_path_exists(dirname)) 121 if (!ensure_path_exists(dirname))
120 { 122 {
121 g_free(dirname); 123 g_free(dirname);
122 break; 124 break;
123 } 125 }
124 126
125 filename = g_build_filename(dirname, 127 escape = purple_escape_filename(xfer->filename);
126 purple_escape_filename(xfer->filename), NULL); 128 filename = g_build_filename(dirname, escape, NULL);
129
130 /* Make sure the file doesn't exist. Do we want some better checking than this? */
131 while (g_file_test(filename, G_FILE_TEST_EXISTS)) {
132 char *file = g_strdup_printf("%s-%d", escape, count++);
133 g_free(filename);
134 filename = g_build_filename(dirname, file, NULL);
135 g_free(file);
136 }
127 137
128 purple_xfer_request_accepted(xfer, filename); 138 purple_xfer_request_accepted(xfer, filename);
129 139
130 g_free(dirname); 140 g_free(dirname);
131 g_free(filename); 141 g_free(filename);