diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2001-10-23 17:52:28 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2001-10-23 17:52:28 +0000 |
commit | 6ccdd8c122ea6ccfc1360d19c0066c1037d8ac02 (patch) | |
tree | 577bbbe77cca3c88f926cf9d3262971789d2dca8 | |
parent | c2e5b977ab85739ae33536b90237a11802abefe5 (diff) | |
download | busybox-w32-6ccdd8c122ea6ccfc1360d19c0066c1037d8ac02.tar.gz busybox-w32-6ccdd8c122ea6ccfc1360d19c0066c1037d8ac02.tar.bz2 busybox-w32-6ccdd8c122ea6ccfc1360d19c0066c1037d8ac02.zip |
Abort if scripts return value != 0
-rw-r--r-- | archival/dpkg.c | 13 | ||||
-rw-r--r-- | dpkg.c | 13 |
2 files changed, 6 insertions, 20 deletions
diff --git a/archival/dpkg.c b/archival/dpkg.c index d566bfe5b..bf0dcf3c3 100644 --- a/archival/dpkg.c +++ b/archival/dpkg.c | |||
@@ -1232,7 +1232,7 @@ void purge_package(const unsigned int package_num) | |||
1232 | char list_name[strlen(package_name) + 25]; | 1232 | char list_name[strlen(package_name) + 25]; |
1233 | 1233 | ||
1234 | /* run prerm script */ | 1234 | /* run prerm script */ |
1235 | if (run_package_script(package_name, "prerm") == -1) { | 1235 | if (run_package_script(package_name, "prerm") != 0) { |
1236 | error_msg_and_die("script failed, prerm failure"); | 1236 | error_msg_and_die("script failed, prerm failure"); |
1237 | } | 1237 | } |
1238 | 1238 | ||
@@ -1269,7 +1269,6 @@ void unpack_package(deb_file_t *deb_file) | |||
1269 | 1269 | ||
1270 | FILE *out_stream; | 1270 | FILE *out_stream; |
1271 | char *info_prefix; | 1271 | char *info_prefix; |
1272 | int return_value; | ||
1273 | 1272 | ||
1274 | /* If existing version, remove it first */ | 1273 | /* If existing version, remove it first */ |
1275 | if (strcmp(name_hashtable[get_status(status_num, 3)], "installed") == 0) { | 1274 | if (strcmp(name_hashtable[get_status(status_num, 3)], "installed") == 0) { |
@@ -1288,11 +1287,7 @@ void unpack_package(deb_file_t *deb_file) | |||
1288 | deb_extract(deb_file->filename, stdout, (extract_quiet | extract_control_tar_gz | extract_all_to_fs | extract_unconditional), info_prefix, NULL); | 1287 | deb_extract(deb_file->filename, stdout, (extract_quiet | extract_control_tar_gz | extract_all_to_fs | extract_unconditional), info_prefix, NULL); |
1289 | 1288 | ||
1290 | /* Run the preinst prior to extracting */ | 1289 | /* Run the preinst prior to extracting */ |
1291 | return_value = run_package_script(package_name, "preinst"); | 1290 | if (run_package_script(package_name, "preinst") != 0) { |
1292 | if (return_value == -1) { | ||
1293 | error_msg_and_die("could not execute pre-installation script."); | ||
1294 | } | ||
1295 | if (return_value != 0) { | ||
1296 | /* when preinst returns exit code != 0 then quit installation process */ | 1291 | /* when preinst returns exit code != 0 then quit installation process */ |
1297 | error_msg_and_die("subprocess pre-installation script returned error."); | 1292 | error_msg_and_die("subprocess pre-installation script returned error."); |
1298 | } | 1293 | } |
@@ -1318,13 +1313,11 @@ void configure_package(deb_file_t *deb_file) | |||
1318 | const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name]; | 1313 | const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name]; |
1319 | const char *package_version = name_hashtable[package_hashtable[deb_file->package]->version]; | 1314 | const char *package_version = name_hashtable[package_hashtable[deb_file->package]->version]; |
1320 | const int status_num = search_status_hashtable(package_name); | 1315 | const int status_num = search_status_hashtable(package_name); |
1321 | int return_value; | ||
1322 | 1316 | ||
1323 | printf("Setting up %s (%s)\n", package_name, package_version); | 1317 | printf("Setting up %s (%s)\n", package_name, package_version); |
1324 | 1318 | ||
1325 | /* Run the postinst script */ | 1319 | /* Run the postinst script */ |
1326 | return_value = run_package_script(package_name, "postinst"); | 1320 | if (run_package_script(package_name, "postinst") != 0) { |
1327 | if (return_value == -1) { | ||
1328 | /* TODO: handle failure gracefully */ | 1321 | /* TODO: handle failure gracefully */ |
1329 | error_msg_and_die("postrm failure.. set status to what?"); | 1322 | error_msg_and_die("postrm failure.. set status to what?"); |
1330 | } | 1323 | } |
@@ -1232,7 +1232,7 @@ void purge_package(const unsigned int package_num) | |||
1232 | char list_name[strlen(package_name) + 25]; | 1232 | char list_name[strlen(package_name) + 25]; |
1233 | 1233 | ||
1234 | /* run prerm script */ | 1234 | /* run prerm script */ |
1235 | if (run_package_script(package_name, "prerm") == -1) { | 1235 | if (run_package_script(package_name, "prerm") != 0) { |
1236 | error_msg_and_die("script failed, prerm failure"); | 1236 | error_msg_and_die("script failed, prerm failure"); |
1237 | } | 1237 | } |
1238 | 1238 | ||
@@ -1269,7 +1269,6 @@ void unpack_package(deb_file_t *deb_file) | |||
1269 | 1269 | ||
1270 | FILE *out_stream; | 1270 | FILE *out_stream; |
1271 | char *info_prefix; | 1271 | char *info_prefix; |
1272 | int return_value; | ||
1273 | 1272 | ||
1274 | /* If existing version, remove it first */ | 1273 | /* If existing version, remove it first */ |
1275 | if (strcmp(name_hashtable[get_status(status_num, 3)], "installed") == 0) { | 1274 | if (strcmp(name_hashtable[get_status(status_num, 3)], "installed") == 0) { |
@@ -1288,11 +1287,7 @@ void unpack_package(deb_file_t *deb_file) | |||
1288 | deb_extract(deb_file->filename, stdout, (extract_quiet | extract_control_tar_gz | extract_all_to_fs | extract_unconditional), info_prefix, NULL); | 1287 | deb_extract(deb_file->filename, stdout, (extract_quiet | extract_control_tar_gz | extract_all_to_fs | extract_unconditional), info_prefix, NULL); |
1289 | 1288 | ||
1290 | /* Run the preinst prior to extracting */ | 1289 | /* Run the preinst prior to extracting */ |
1291 | return_value = run_package_script(package_name, "preinst"); | 1290 | if (run_package_script(package_name, "preinst") != 0) { |
1292 | if (return_value == -1) { | ||
1293 | error_msg_and_die("could not execute pre-installation script."); | ||
1294 | } | ||
1295 | if (return_value != 0) { | ||
1296 | /* when preinst returns exit code != 0 then quit installation process */ | 1291 | /* when preinst returns exit code != 0 then quit installation process */ |
1297 | error_msg_and_die("subprocess pre-installation script returned error."); | 1292 | error_msg_and_die("subprocess pre-installation script returned error."); |
1298 | } | 1293 | } |
@@ -1318,13 +1313,11 @@ void configure_package(deb_file_t *deb_file) | |||
1318 | const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name]; | 1313 | const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name]; |
1319 | const char *package_version = name_hashtable[package_hashtable[deb_file->package]->version]; | 1314 | const char *package_version = name_hashtable[package_hashtable[deb_file->package]->version]; |
1320 | const int status_num = search_status_hashtable(package_name); | 1315 | const int status_num = search_status_hashtable(package_name); |
1321 | int return_value; | ||
1322 | 1316 | ||
1323 | printf("Setting up %s (%s)\n", package_name, package_version); | 1317 | printf("Setting up %s (%s)\n", package_name, package_version); |
1324 | 1318 | ||
1325 | /* Run the postinst script */ | 1319 | /* Run the postinst script */ |
1326 | return_value = run_package_script(package_name, "postinst"); | 1320 | if (run_package_script(package_name, "postinst") != 0) { |
1327 | if (return_value == -1) { | ||
1328 | /* TODO: handle failure gracefully */ | 1321 | /* TODO: handle failure gracefully */ |
1329 | error_msg_and_die("postrm failure.. set status to what?"); | 1322 | error_msg_and_die("postrm failure.. set status to what?"); |
1330 | } | 1323 | } |