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;
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)) {
}
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) {
environment_release(&env);
}
- return razor_atomic_in_error_state(atomic);
+ return retval;
}
RAZOR_EXPORT const char *
/*
* Copyright (C) 2008 Kristian Høgsberg <krh@redhat.com>
* Copyright (C) 2008 Red Hat, Inc
- * Copyright (C) 2009, 2011 J. Ali Harlow <ali@juiblex.co.uk>
+ * Copyright (C) 2009, 2011, 2012 J. Ali Harlow <ali@juiblex.co.uk>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
const char *path, *name;
size_t filesize;
char *s;
+ int retval = 0;
assert (rpm != NULL);
assert (root != NULL);
razor_relocations_set_rpm(rpm->relocations, rpm);
if (stage & RAZOR_STAGE_SCRIPTS_PRE)
- run_script(&installer, RPMTAG_PREINPROG, RPMTAG_PREIN,
- install_count);
+ retval = run_script(&installer, RPMTAG_PREINPROG, RPMTAG_PREIN,
+ install_count);
- if (stage & RAZOR_STAGE_FILES) {
+ if (!retval && (stage & RAZOR_STAGE_FILES)) {
if (installer_init(&installer))
return -1;
if (installer_finish(&installer))
return -1;
+
+ retval = razor_atomic_in_error_state(atomic);
}
- if (stage & RAZOR_STAGE_SCRIPTS_POST)
- run_script(&installer, RPMTAG_POSTINPROG, RPMTAG_POSTIN,
- install_count);
+ if (!retval && (stage & RAZOR_STAGE_SCRIPTS_POST))
+ retval = run_script(&installer, RPMTAG_POSTINPROG,
+ RPMTAG_POSTIN, install_count);
- return 0;
+ return retval;
}
RAZOR_EXPORT int