diff -r fda83d91e600 -r c903635ae422 librazor/razor.c --- a/librazor/razor.c Fri Jul 03 19:06:29 2009 +0100 +++ b/librazor/razor.c Mon Jul 06 18:19:13 2009 +0100 @@ -489,13 +489,28 @@ 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_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); - retval = razor_run_script(root, RAZOR_PROPERTY_POSTUN, program, script); - - environment_unset(&env); environment_release(&env); return retval;