[Midnightbsd-cvs] CVS Commit: pkg_install/lib: MFC: Added native support for @dirrmtry

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Thu Aug 9 18:40:37 EDT 2007


Log Message:
-----------
MFC: Added native support for @dirrmtry

Tags:
----
RELENG_0_1

Modified Files:
--------------
    src/usr.sbin/pkg_install/lib:
        lib.h (r1.1.1.2 -> r1.1.1.2.2.1)
        plist.c (r1.2 -> r1.2.2.1)

-------------- next part --------------
Index: plist.c
===================================================================
RCS file: /home/cvs/src/usr.sbin/pkg_install/lib/plist.c,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -Lusr.sbin/pkg_install/lib/plist.c -Lusr.sbin/pkg_install/lib/plist.c -u -r1.2 -r1.2.2.1
--- usr.sbin/pkg_install/lib/plist.c
+++ usr.sbin/pkg_install/lib/plist.c
@@ -249,6 +249,8 @@
 	return PLIST_MTREE;
     else if (!strcmp(cmd, "dirrm"))
 	return PLIST_DIR_RM;
+    else if (!strcmp(cmd, "dirrmtry"))
+        return PLIST_DIR_RM_TRY;
     else if (!strcmp(cmd, "option"))
 	return PLIST_OPTION;
     else
@@ -383,7 +385,9 @@
 	case PLIST_DIR_RM:
 	    fprintf(fp, "%cdirrm %s\n", CMD_CHAR, plist->name);
 	    break;
-
+        case PLIST_DIR_RM_TRY:
+            fprintf(fp, "%cdirrmtry %s\n", CMD_CHAR, plist->name);
+            break;
 	case PLIST_OPTION:
 	    fprintf(fp, "%coption %s\n", CMD_CHAR, plist->name);
 	    break;
@@ -511,7 +515,7 @@
 		}
 	    }
 	    break;
-
+        
 	case PLIST_DIR_RM:
 	    if (snprintf(tmp, FILENAME_MAX, "%s/%s", Where, p->name) >= FILENAME_MAX) {
 	        warnx("Filename too long: %s", p->name);
@@ -531,7 +535,24 @@
 	    }
 	    last_file = p->name;
 	    break;
-
+        case PLIST_DIR_RM_TRY:
+            if (snprintf(tmp, FILENAME_MAX, "%s/%s", Where, p->name) >= FILENAME_MAX) {
+	        warnx("Filename too long: %s", p->name);
+	        fail = FAIL;
+            }
+            else if (!isdir(tmp) && fexists(tmp)) {
+		warnx("cannot delete specified directory '%s' - it is a file!\n"
+	"this packing list is incorrect - ignoring delete request", tmp);
+	    }
+	    else {
+		if (Verbose)
+		    printf("Delete directory %s\n", tmp);
+		if (!Fake && delete_hierarchy(tmp, ign_err, FALSE)) {
+		    /* we don't care if we fail */
+		}
+	    }
+	    last_file = p->name;
+	    break;
 	default:
 	    break;
 	}
Index: lib.h
===================================================================
RCS file: /home/cvs/src/usr.sbin/pkg_install/lib/lib.h,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -Lusr.sbin/pkg_install/lib/lib.h -Lusr.sbin/pkg_install/lib/lib.h -u -r1.1.1.2 -r1.1.1.2.2.1
--- usr.sbin/pkg_install/lib/lib.h
+++ usr.sbin/pkg_install/lib/lib.h
@@ -109,7 +109,7 @@
     PLIST_NAME, PLIST_UNEXEC, PLIST_SRC, PLIST_DISPLAY,
     PLIST_PKGDEP, PLIST_CONFLICTS, PLIST_MTREE, PLIST_DIR_RM, 
     PLIST_IGNORE_INST, PLIST_OPTION, PLIST_ORIGIN, PLIST_DEPORIGIN,
-    PLIST_NOINST
+    PLIST_NOINST, PLIST_DIR_RM_TRY
 };
 typedef enum _plist_t plist_t;
 


More information about the Midnightbsd-cvs mailing list