From b3b0753593abaf307c961bd45f5e2385a852a076 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sun, 17 Feb 2008 14:29:25 +0000 Subject: [PATCH] dpkg: fix bug where existence check was reversed --- archival/dpkg.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/archival/dpkg.c b/archival/dpkg.c index 1db53f494..e90e82b64 100644 --- a/archival/dpkg.c +++ b/archival/dpkg.c @@ -913,20 +913,16 @@ static void write_status_file(deb_file_t **deb_file) fclose(old_status_file); fclose(new_status_file); - /* Create a separate backfile to dpkg */ if (rename("/var/lib/dpkg/status", "/var/lib/dpkg/status.udeb.bak") == -1) { - struct stat stat_buf; - xstat("/var/lib/dpkg/status", &stat_buf); + if (errno != ENOENT) + bb_error_msg_and_die("cannot create backup status file"); /* Its ok if renaming the status file fails because status * file doesnt exist, maybe we are starting from scratch */ bb_error_msg("no status file found, creating new one"); } - if (rename("/var/lib/dpkg/status.udeb", "/var/lib/dpkg/status") == -1) { - bb_error_msg_and_die("DANGER: cannot create status file, " - "you need to manually repair your status file"); - } + xrename("/var/lib/dpkg/status.udeb", "/var/lib/dpkg/status"); } /* This function returns TRUE if the given package can satisfy a @@ -1344,7 +1340,7 @@ static void remove_package(const unsigned package_num, int noisy) free_array(exclude_files); /* rename .conffile to .list */ - rename(conffile_name, list_name); + xrename(conffile_name, list_name); /* Change package status */ set_status(status_num, "config-files", 3);