Module Name: src
Committed By: christos
Date: Tue May 7 20:30:33 UTC 2024
Added Files:
src/etc: makespec
Log Message:
Simple script to create an mtree spec file from a directory tree with
fixed default owner/group/perms.
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/etc/makespec
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Added files:
Index: src/etc/makespec
diff -u /dev/null src/etc/makespec:1.1
--- /dev/null Tue May 7 16:30:33 2024
+++ src/etc/makespec Tue May 7 16:30:33 2024
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+# Copyright (c) 2024 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Christos Zoulas.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# Create an mtree spec file with per file type defaults
+
+TYPES="b c d f l p s"
+
+getmode() {
+ case $1 in
+ b|c) echo 0600;;
+ d) echo 0755;;
+ f) echo 0644;;
+ l) echo 0777;;
+ p|s) echo 0666;;
+ *) echo "*error $1*";;
+ esac
+}
+
+gettype() {
+ case $1 in
+ b) echo block;;
+ c) echo char;;
+ d) echo dir;;
+ f) echo file;;
+ l) echo link;;
+ p) echo fifo;;
+ s) echo socket;;
+ *) echo "*error $1*";;
+ esac
+}
+
+if [ -z "$1" ]; then
+ echo "Usage: $0 <dir>" 1>&2
+ exit 1
+fi
+
+cd "$1"
+for i in $TYPES; do
+
+ t=$(gettype $i)
+ m=$(getmode $i)
+ find . -type $i -exec \
+ printf "%s type=$t uname=root gname=wheel mode=$m\n" {} \;
+
+done | sort