diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2001-10-06 02:27:36 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2001-10-06 02:27:36 +0000 |
commit | f28d8195540cad33b455e4b2bce385003a40eb04 (patch) | |
tree | f2ae1ac791bf60eded1d6298161b81efb925e110 | |
parent | 3550753445939316b00d5dde8e94137ef9c44a71 (diff) | |
download | busybox-f28d8195540cad33b455e4b2bce385003a40eb04.tar.gz |
status_package_num should refer to package not status.
Only initialise a new entry in the status hashtable if it really is a new entry.
-rw-r--r-- | archival/dpkg.c | 5 | ||||
-rw-r--r-- | dpkg.c | 5 |
2 files changed, 6 insertions, 4 deletions
diff --git a/archival/dpkg.c b/archival/dpkg.c index 9c8fffa9c..845cfa67b 100644 --- a/archival/dpkg.c +++ b/archival/dpkg.c @@ -1262,7 +1262,7 @@ void unpack_package(deb_file_t *deb_file) { const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name]; const unsigned int status_num = search_status_hashtable(package_name); - const unsigned int status_package_num = status_hashtable[status_num]->status; + const unsigned int status_package_num = status_hashtable[status_num]->package; FILE *out_stream; char *info_prefix; @@ -1413,13 +1413,14 @@ extern int dpkg_main(int argc, char **argv) /* Try and find a currently installed version of this package */ status_num = search_status_hashtable(name_hashtable[package_hashtable[deb_file[deb_count]->package]->name]); + /* If no previous entry was found initialise a new entry */ if ((status_hashtable[status_num] == NULL) || (status_hashtable[status_num]->status == 0)) { /* reinstreq isnt changed to "ok" until the package control info * is written to the status file*/ status_node->status = search_name_hashtable("install reinstreq not-installed"); + status_hashtable[status_num] = status_node; } - status_hashtable[status_num] = status_node; } } else if (dpkg_opt & dpkg_opt_package_name) { @@ -1262,7 +1262,7 @@ void unpack_package(deb_file_t *deb_file) { const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name]; const unsigned int status_num = search_status_hashtable(package_name); - const unsigned int status_package_num = status_hashtable[status_num]->status; + const unsigned int status_package_num = status_hashtable[status_num]->package; FILE *out_stream; char *info_prefix; @@ -1413,13 +1413,14 @@ extern int dpkg_main(int argc, char **argv) /* Try and find a currently installed version of this package */ status_num = search_status_hashtable(name_hashtable[package_hashtable[deb_file[deb_count]->package]->name]); + /* If no previous entry was found initialise a new entry */ if ((status_hashtable[status_num] == NULL) || (status_hashtable[status_num]->status == 0)) { /* reinstreq isnt changed to "ok" until the package control info * is written to the status file*/ status_node->status = search_name_hashtable("install reinstreq not-installed"); + status_hashtable[status_num] = status_node; } - status_hashtable[status_num] = status_node; } } else if (dpkg_opt & dpkg_opt_package_name) { |