added support for INSTALL_NOSCRIPTS, UNINSTALL_NOSCRIPTS
authorewt <devnull@localhost>
Mon, 15 Apr 1996 22:23:46 +0000 (22:23 +0000)
committerewt <devnull@localhost>
Mon, 15 Apr 1996 22:23:46 +0000 (22:23 +0000)
changed test to use UNINSTALL_TEST flag

CVS patchset: 549
CVS date: 1996/04/15 22:23:46

lib/uninstall.c

index 5877f35..4c3559c 100644 (file)
@@ -174,7 +174,7 @@ static int handleSharedFiles(rpmdb db, int offset, char ** fileList,
     return rc;
 }
 
-int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, int test) {
+int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, int flags) {
     Header h;
     int i;
     int fileCount;
@@ -198,16 +198,16 @@ int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, int test) {
 
     /* dependency checking should go in here */
 
-    if (test) {
+    if (flags & UNINSTALL_TEST) {
        rmmess = "would remove";
     } else {
        rmmess = "removing";
     }
 
     message(MESS_DEBUG, "running preuninstall script (if any)\n");
-    runScript(prefix, h, RPMTAG_PREUN);
+    runScript(prefix, h, RPMTAG_PREUN, flags & UNINSTALL_NOSCRIPTS);
     
-    message(MESS_DEBUG, "%s files test = %d\n", rmmess, test);
+    message(MESS_DEBUG, "%s files test = %d\n", rmmess, flags & UNINSTALL_TEST);
     if (!getEntry(h, RPMTAG_FILENAMES, &type, (void **) &fileList, 
         &fileCount)) {
        puts("(contains no files)");
@@ -252,7 +252,7 @@ int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, int test) {
 
            removeFile(fnbuffer, fileStatesList[i], fileFlagsList[i],
                       fileMd5List[i], fileModesList[i], fileActions[i], 
-                      rmmess, test);
+                      rmmess, flags & UNINSTALL_TEST);
        }
 
        free(fileList);
@@ -260,18 +260,18 @@ int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, int test) {
     }
 
     message(MESS_DEBUG, "running postuninstall script (if any)\n");
-    runScript(prefix, h, RPMTAG_POSTUN);
+    runScript(prefix, h, RPMTAG_POSTUN, flags & UNINSTALL_NOSCRIPTS);
 
     freeHeader(h);
 
     message(MESS_DEBUG, "%s database entry\n", rmmess);
-    if (!test)
+    if (!(flags & UNINSTALL_TEST))
        rpmdbRemove(db, offset, 0);
 
     return 0;
 }
 
-int runScript(char * prefix, Header h, int tag) {
+int runScript(char * prefix, Header h, int tag, int norunScripts) {
     int count, type;
     char * script;
     char * fn;
@@ -280,13 +280,15 @@ int runScript(char * prefix, Header h, int tag) {
     int child;
     int status;
 
+    if (!norunScripts) return 0;
+    
     if (getEntry(h, tag, &type, (void **) &script, &count)) {
        fn = tmpnam(NULL);
        message(MESS_DEBUG, "script found - running from file %s\n", fn);
        fd = open(fn, O_CREAT | O_RDWR);
        unlink(fn);
        if (fd < 0) {
-            error(RPMERR_SCRIPT, "error creating file for (un)install script");
+           error(RPMERR_SCRIPT, "error creating file for (un)install script");
            return 1;
        }
        write(fd, SCRIPT_PATH, strlen(SCRIPT_PATH));