Module Name:    src
Committed By:   apb
Date:           Mon Jun 16 08:59:13 UTC 2014

Modified Files:
        src/usr.sbin/postinstall: postinstall

Log Message:
Add a new obsolete_stand target, disabled by default,
to delete old files and subdirectories under /stand/${MACHINE}.


To generate a diff of this commit:
cvs rdiff -u -r1.171 -r1.172 src/usr.sbin/postinstall/postinstall

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/postinstall/postinstall
diff -u src/usr.sbin/postinstall/postinstall:1.171 src/usr.sbin/postinstall/postinstall:1.172
--- src/usr.sbin/postinstall/postinstall:1.171	Mon Jun 16 08:39:56 2014
+++ src/usr.sbin/postinstall/postinstall	Mon Jun 16 08:59:13 2014
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $NetBSD: postinstall,v 1.171 2014/06/16 08:39:56 apb Exp $
+# $NetBSD: postinstall,v 1.172 2014/06/16 08:59:13 apb Exp $
 #
 # Copyright (c) 2002-2008 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -590,6 +590,37 @@ function checklib(results, line, regex) 
 	)
 }
 
+# obsolete_stand dir
+#	Prints the names of all obsolete files and subdirs below the
+#	provided dir.  dir should be something like /stand/${MACHINE}.
+#	The input dir and all output paths are interpreted
+#	relative to ${DEST_DIR}.
+#
+#	Assumes that the numerically largest subdir is current, and all
+#	others are obsolete.
+#
+obsolete_stand()
+{
+	[ $# -eq 1 ] || err 3 "USAGE: obsolete_stand dir"
+	local dir="$1"
+	local subdir
+
+	if ! [ -d "${DEST_DIR}/${dir}" ]; then
+		msg "${DEST_DIR}${dir} doesn't exist; can't check for obsolete files"
+		return 1
+	fi
+
+	( cd "${DEST_DIR}${dir}" && ls -1d [0-9]*[0-9]/. ) \
+	| ${GREP} -v '[^0-9./]' \
+	| sort -t. -r -k1n -k2n -k3n \
+	| tail -n +2 \
+	| while read subdir ; do
+		subdir="${subdir%/.}"
+		find "${DEST_DIR}/${dir#/}/${subdir}" -depth -print
+	done \
+	| unprefix "${DEST_DIR}"
+}
+
 # modify_file op srcfile scratchfile awkprog
 #	Apply awkprog to srcfile sending output to scratchfile, and
 #	if appropriate replace srcfile with scratchfile.
@@ -1924,6 +1955,21 @@ do_varshm()
 	return ${failed}
 }
 
+#
+#	obsolete_stand
+#
+adddisableditem obsolete_stand "remove obsolete files from /stand"
+do_obsolete_stand()
+{
+	[ -n "$1" ] || err 3 "USAGE: do_obsolete_stnd  fix|check"
+	op="$1"
+	failed=0
+
+	obsolete_stand "/stand/${MACHINE}" | obsolete_paths "${op}"
+	failed=$(( ${failed} + $? ))
+
+	return ${failed}
+}
 
 #
 #	obsolete

Reply via email to