Abort if scripts return value != 0

This commit is contained in:
Glenn L McGrath 2001-10-23 17:52:28 +00:00
parent c2e5b977ab
commit 6ccdd8c122
2 changed files with 6 additions and 20 deletions

View File

@ -1232,7 +1232,7 @@ void purge_package(const unsigned int package_num)
char list_name[strlen(package_name) + 25]; char list_name[strlen(package_name) + 25];
/* run prerm script */ /* run prerm script */
if (run_package_script(package_name, "prerm") == -1) { if (run_package_script(package_name, "prerm") != 0) {
error_msg_and_die("script failed, prerm failure"); error_msg_and_die("script failed, prerm failure");
} }
@ -1269,7 +1269,6 @@ void unpack_package(deb_file_t *deb_file)
FILE *out_stream; FILE *out_stream;
char *info_prefix; char *info_prefix;
int return_value;
/* If existing version, remove it first */ /* If existing version, remove it first */
if (strcmp(name_hashtable[get_status(status_num, 3)], "installed") == 0) { if (strcmp(name_hashtable[get_status(status_num, 3)], "installed") == 0) {
@ -1288,11 +1287,7 @@ void unpack_package(deb_file_t *deb_file)
deb_extract(deb_file->filename, stdout, (extract_quiet | extract_control_tar_gz | extract_all_to_fs | extract_unconditional), info_prefix, NULL); deb_extract(deb_file->filename, stdout, (extract_quiet | extract_control_tar_gz | extract_all_to_fs | extract_unconditional), info_prefix, NULL);
/* Run the preinst prior to extracting */ /* Run the preinst prior to extracting */
return_value = run_package_script(package_name, "preinst"); if (run_package_script(package_name, "preinst") != 0) {
if (return_value == -1) {
error_msg_and_die("could not execute pre-installation script.");
}
if (return_value != 0) {
/* when preinst returns exit code != 0 then quit installation process */ /* when preinst returns exit code != 0 then quit installation process */
error_msg_and_die("subprocess pre-installation script returned error."); error_msg_and_die("subprocess pre-installation script returned error.");
} }
@ -1318,13 +1313,11 @@ void configure_package(deb_file_t *deb_file)
const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name]; const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name];
const char *package_version = name_hashtable[package_hashtable[deb_file->package]->version]; const char *package_version = name_hashtable[package_hashtable[deb_file->package]->version];
const int status_num = search_status_hashtable(package_name); const int status_num = search_status_hashtable(package_name);
int return_value;
printf("Setting up %s (%s)\n", package_name, package_version); printf("Setting up %s (%s)\n", package_name, package_version);
/* Run the postinst script */ /* Run the postinst script */
return_value = run_package_script(package_name, "postinst"); if (run_package_script(package_name, "postinst") != 0) {
if (return_value == -1) {
/* TODO: handle failure gracefully */ /* TODO: handle failure gracefully */
error_msg_and_die("postrm failure.. set status to what?"); error_msg_and_die("postrm failure.. set status to what?");
} }

13
dpkg.c
View File

@ -1232,7 +1232,7 @@ void purge_package(const unsigned int package_num)
char list_name[strlen(package_name) + 25]; char list_name[strlen(package_name) + 25];
/* run prerm script */ /* run prerm script */
if (run_package_script(package_name, "prerm") == -1) { if (run_package_script(package_name, "prerm") != 0) {
error_msg_and_die("script failed, prerm failure"); error_msg_and_die("script failed, prerm failure");
} }
@ -1269,7 +1269,6 @@ void unpack_package(deb_file_t *deb_file)
FILE *out_stream; FILE *out_stream;
char *info_prefix; char *info_prefix;
int return_value;
/* If existing version, remove it first */ /* If existing version, remove it first */
if (strcmp(name_hashtable[get_status(status_num, 3)], "installed") == 0) { if (strcmp(name_hashtable[get_status(status_num, 3)], "installed") == 0) {
@ -1288,11 +1287,7 @@ void unpack_package(deb_file_t *deb_file)
deb_extract(deb_file->filename, stdout, (extract_quiet | extract_control_tar_gz | extract_all_to_fs | extract_unconditional), info_prefix, NULL); deb_extract(deb_file->filename, stdout, (extract_quiet | extract_control_tar_gz | extract_all_to_fs | extract_unconditional), info_prefix, NULL);
/* Run the preinst prior to extracting */ /* Run the preinst prior to extracting */
return_value = run_package_script(package_name, "preinst"); if (run_package_script(package_name, "preinst") != 0) {
if (return_value == -1) {
error_msg_and_die("could not execute pre-installation script.");
}
if (return_value != 0) {
/* when preinst returns exit code != 0 then quit installation process */ /* when preinst returns exit code != 0 then quit installation process */
error_msg_and_die("subprocess pre-installation script returned error."); error_msg_and_die("subprocess pre-installation script returned error.");
} }
@ -1318,13 +1313,11 @@ void configure_package(deb_file_t *deb_file)
const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name]; const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name];
const char *package_version = name_hashtable[package_hashtable[deb_file->package]->version]; const char *package_version = name_hashtable[package_hashtable[deb_file->package]->version];
const int status_num = search_status_hashtable(package_name); const int status_num = search_status_hashtable(package_name);
int return_value;
printf("Setting up %s (%s)\n", package_name, package_version); printf("Setting up %s (%s)\n", package_name, package_version);
/* Run the postinst script */ /* Run the postinst script */
return_value = run_package_script(package_name, "postinst"); if (run_package_script(package_name, "postinst") != 0) {
if (return_value == -1) {
/* TODO: handle failure gracefully */ /* TODO: handle failure gracefully */
error_msg_and_die("postrm failure.. set status to what?"); error_msg_and_die("postrm failure.. set status to what?");
} }