[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