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

Reply via email to