diff -r 33b825d3128d -r 6112bcc5d1cf librazor/razor.c --- a/librazor/razor.c Thu Feb 09 20:45:27 2012 +0000 +++ b/librazor/razor.c Sat Feb 11 23:50:26 2012 +0000 @@ -635,7 +635,7 @@ struct razor_package *p; char *buffer, buf[32]; const char *name, *program, *script; - int i, count; + int i, count, retval = 0; struct environment env; struct list *link; const char *prefix; @@ -660,11 +660,11 @@ RAZOR_DETAIL_PREUN, &script, RAZOR_DETAIL_LAST); - razor_run_script(root, RAZOR_PROPERTY_PREUN, program, - script, install_count); + retval = razor_run_script(root, RAZOR_PROPERTY_PREUN, program, + script, install_count); } - if (stage & RAZOR_STAGE_FILES) { + if (!retval && (stage & RAZOR_STAGE_FILES)) { fi = razor_file_iterator_create(prev, package, 1); while (razor_file_iterator_next(fi, &name)) { @@ -682,16 +682,18 @@ } razor_file_iterator_destroy(fi); + + retval = razor_atomic_in_error_state(atomic); } - if (stage & RAZOR_STAGE_SCRIPTS_POST) { + if (!retval && (stage & RAZOR_STAGE_SCRIPTS_POST)) { razor_package_get_details(prev, package, RAZOR_DETAIL_POSTUNPROG, &program, RAZOR_DETAIL_POSTUN, &script, RAZOR_DETAIL_LAST); - razor_run_script(root, RAZOR_PROPERTY_POSTUN, program, script, - install_count); + retval |= razor_run_script(root, RAZOR_PROPERTY_POSTUN, program, + script, install_count); } if (stage & RAZOR_STAGE_SCRIPTS) { @@ -699,7 +701,7 @@ environment_release(&env); } - return razor_atomic_in_error_state(atomic); + return retval; } RAZOR_EXPORT const char *