libalpm: move sig files when download is unnamed

This commit is contained in:
morganamilo 2025-05-16 23:59:34 +01:00 committed by Allan McRae
parent f722b86990
commit e392f01a94

View file

@ -1104,31 +1104,34 @@ static int finalize_download_locations(alpm_list_t *payloads, const char *localp
int returnvalue = 0; int returnvalue = 0;
for(p = payloads; p; p = p->next) { for(p = payloads; p; p = p->next) {
struct dload_payload *payload = p->data; struct dload_payload *payload = p->data;
if(payload->tempfile_name) { const char *filename;
move_file(payload->tempfile_name, localpath);
}
if(payload->destfile_name) { if(payload->destfile_name) {
int ret = move_file(payload->destfile_name, localpath); filename = payload->destfile_name;
} else {
filename = payload->tempfile_name;
}
if(ret == -1) { int ret = move_file(filename, localpath);
/* ignore error if the file already existed - only signature file was downloaded */
if(payload->mtime_existing_file == 0) {
_alpm_log(payload->handle, ALPM_LOG_ERROR, _("could not move %s into %s (%s)\n"),
payload->destfile_name, localpath, strerror(errno));
returnvalue = -1;
}
}
if (payload->download_signature) { if(ret == -1) {
const char sig_suffix[] = ".sig"; /* ignore error if the file already existed - only signature file was downloaded */
char *sig_filename = NULL; if(payload->mtime_existing_file == 0) {
size_t sig_filename_len = strlen(payload->destfile_name) + sizeof(sig_suffix); _alpm_log(payload->handle, ALPM_LOG_ERROR, _("could not move %s into %s (%s)\n"),
MALLOC(sig_filename, sig_filename_len, continue); filename, localpath, strerror(errno));
snprintf(sig_filename, sig_filename_len, "%s%s", payload->destfile_name, sig_suffix); returnvalue = -1;
move_file(sig_filename, localpath);
FREE(sig_filename);
} }
} }
if (payload->download_signature) {
const char sig_suffix[] = ".sig";
char *sig_filename = NULL;
size_t sig_filename_len = strlen(filename) + sizeof(sig_suffix);
MALLOC(sig_filename, sig_filename_len, continue);
snprintf(sig_filename, sig_filename_len, "%s%s", filename, sig_suffix);
move_file(sig_filename, localpath);
FREE(sig_filename);
}
} }
return returnvalue; return returnvalue;
} }