From: J. Ali Harlow Date: Mon, 6 Jul 2009 17:19:13 +0000 (+0100) Subject: Set RPM_INSTALL_PREFIX{n} in preun as well X-Git-Tag: 0.1~3 X-Git-Url: http://project.juiblex.co.uk/git/?a=commitdiff_plain;h=8af30e942ac1ef347345ce554743a15f7ea0ea8c;p=razor2.git%2F.git Set RPM_INSTALL_PREFIX{n} in preun as well --- diff --git a/librazor/razor.c b/librazor/razor.c index 434c1bf..f2fd53d 100644 --- a/librazor/razor.c +++ b/librazor/razor.c @@ -489,13 +489,28 @@ razor_package_remove(struct razor_set *set, struct razor_package *package, struct list *link; const char *prefix; + environment_init(&env); + link = list_first(&package->install_prefixes, &set->prefix_pool); + for (i = 0; link; i++) { + prefix = (const char *)set->string_pool.data + link->data; + sprintf(buffer, "RPM_INSTALL_PREFIX%d", i); + environment_add_variable(&env, buffer, prefix); + link = list_next(link); + } + razor_package_get_details(set, package, RAZOR_DETAIL_PREUNPROG, &program, RAZOR_DETAIL_PREUN, &script, RAZOR_DETAIL_LAST); - if (razor_run_script(root, RAZOR_PROPERTY_PREUN, program, script)) + environment_set(&env); + retval = razor_run_script(root, RAZOR_PROPERTY_PREUN, program, script); + environment_unset(&env); + + if (retval) { + environment_release(&env); return -1; + } fi = razor_file_iterator_create(set, package); @@ -513,27 +528,20 @@ razor_package_remove(struct razor_set *set, struct razor_package *package, razor_file_iterator_destroy(fi); - if (retval) + if (retval) { + environment_release(&env); return retval; + } razor_package_get_details(set, package, RAZOR_DETAIL_POSTUNPROG, &program, RAZOR_DETAIL_POSTUN, &script, RAZOR_DETAIL_LAST); - environment_init(&env); - link = list_first(&package->install_prefixes, &set->prefix_pool); - for (i = 0; link; i++) { - prefix = (const char *)set->string_pool.data + link->data; - sprintf(buffer, "RPM_INSTALL_PREFIX%d", i); - environment_add_variable(&env, buffer, prefix); - link = list_next(link); - } environment_set(&env); - retval = razor_run_script(root, RAZOR_PROPERTY_POSTUN, program, script); - environment_unset(&env); + environment_release(&env); return retval;