Set RPM_INSTALL_PREFIX{n} in preun as well
authorJ. Ali Harlow <ali@juiblex.co.uk>
Mon, 6 Jul 2009 17:19:13 +0000 (18:19 +0100)
committerJ. Ali Harlow <ali@juiblex.co.uk>
Mon, 6 Jul 2009 17:19:13 +0000 (18:19 +0100)
librazor/razor.c

index 434c1bf..f2fd53d 100644 (file)
@@ -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;