Revision 1832
| trunk/nntpgrab_core/queue_rawfile.c (revision 1832) | ||
|---|---|---|
| 118 | 118 |
char *tmp = g_strdup_printf("%s%s", filename, ".new");
|
| 119 | 119 |
|
| 120 | 120 |
if (g_rename(tmp, filename) == -1) {
|
| 121 |
#ifdef WIN32 |
|
| 122 |
/* The rename can fail on Win32 if the dest file already exists or some virus scanner is claiming the file */ |
|
| 123 |
/* Try removing the dest file first and try to rename again afterwards */ |
|
| 124 |
if (!g_file_test(filename, G_FILE_TEST_EXISTS)) {
|
|
| 125 |
if (errmsg) {
|
|
| 126 |
*errmsg = g_strdup_printf(_("Unable to rename temporary download queue file '%s' to '%s': %s"), tmp, filename, strerror(errno));
|
|
| 127 |
} else {
|
|
| 128 |
g_warning(_("Unable to rename temporary download queue file '%s' to '%s': %s"), tmp, filename, strerror(errno));
|
|
| 129 |
} |
|
| 130 |
|
|
| 131 |
ret = FALSE; |
|
| 132 |
} else {
|
|
| 133 |
/* Dest file exists, try to remove the dest file */ |
|
| 134 |
if (g_unlink(filename) == -1) {
|
|
| 135 |
if (errmsg) {
|
|
| 136 |
*errmsg = g_strdup_printf(_("Unable to remove existing download queue '%s': %s"), filename, strerror(errno));
|
|
| 137 |
} else {
|
|
| 138 |
g_warning(_("Unable to remove existing download queue '%s': %s"), filename, strerror(errno));
|
|
| 139 |
} |
|
| 140 |
|
|
| 141 |
ret = FALSE; |
|
| 142 |
} else {
|
|
| 143 |
/* Remove failed, try to rename again */ |
|
| 144 |
if (g_rename(tmp, filename) == -1) {
|
|
| 145 |
if (errmsg) {
|
|
| 146 |
*errmsg = g_strdup_printf(_("Unable to rename temporary download queue file '%s' to '%s': %s"), tmp, filename, strerror(errno));
|
|
| 147 |
} else {
|
|
| 148 |
g_warning(_("Unable to rename temporary download queue file '%s' to '%s': %s"), tmp, filename, strerror(errno));
|
|
| 149 |
} |
|
| 150 |
|
|
| 151 |
ret = FALSE; |
|
| 152 |
} |
|
| 153 |
} |
|
| 154 |
} |
|
| 155 |
#else |
|
| 121 | 156 |
if (errmsg) {
|
| 122 | 157 |
*errmsg = g_strdup_printf(_("Unable to rename temporary download queue file '%s' to '%s': %s"), tmp, filename, strerror(errno));
|
| 123 | 158 |
} else {
|
| ... | ... | |
| 125 | 160 |
} |
| 126 | 161 |
|
| 127 | 162 |
ret = FALSE; |
| 163 |
#endif |
|
| 128 | 164 |
} |
| 129 | 165 |
g_free(tmp); |
| 130 | 166 |
g_free(filename); |
Also available in: Unified diff
NNTPGrab

