summaryrefslogtreecommitdiffstats
path: root/tools/mkcatdirs
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mkcatdirs')
-rwxr-xr-xtools/mkcatdirs114
1 files changed, 114 insertions, 0 deletions
diff --git a/tools/mkcatdirs b/tools/mkcatdirs
new file mode 100755
index 0000000..d470d36
--- /dev/null
+++ b/tools/mkcatdirs
@@ -0,0 +1,114 @@
+#! /bin/sh
+#
+# Copyright (C) 1995 Graeme Wilford.
+#
+# This file is part of man-db.
+#
+# man-db is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# man-db is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with man-db; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+# Mon Mar 13 17:46:22 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk):
+
+#PATH=.:/usr/local/bin:/usr/bin:/bin
+
+progname=$(basename "$0")
+test_only=
+
+# sort out the command line options
+
+if test "$1" = "-t" || test "$1" = "--test"
+then
+ test_only=yes
+else
+ if test "$1" && test "$2" && test "$3"
+ then
+ test_only=no
+ owner=$1
+ group=$2
+ mode=$3
+ fi
+fi
+
+{ test "$1" = "-h" || test "$1" = "--help"; } && help=yes || help=
+
+if test "$help" || test -z "$test_only"
+then
+ cat << EOF
+usage: $progname -h | -t | owner group mode
+ -h --help this usage message
+ -t --test don't create anything
+
+This utility will use the information supplied in your manpath
+configuration file to determine which cat directories you require. It
+will then create them as the supplied <owner> and <group> and with
+access permissions of <mode>. <mode> can be any mode accepted by chmod.
+
+A mode of 0755 is recommended in most cases.
+
+The man-db package must be _installed_ for this script to work.
+EOF
+ exit 0
+fi
+
+for manpath in $(manpath -qg | tr ':' ' ')
+do
+ [ -d "$manpath" ] || continue
+ echo "Manual page hierarchy: $manpath"
+ catdir=$(MANPATH=$manpath manpath -qc 2>/dev/null)
+
+ subdirs=
+ for subdir in $(cd "$manpath" && echo man?*)
+ do
+ test -d "$manpath/$subdir" &&
+ subdirs="$subdirs $(echo "$subdir" | sed -e 's,man,cat,')"
+ done
+
+ echo "Cat page hierarchy: $catdir"
+ echo "Cat sections: $subdirs"
+
+ if test -d "$catdir"
+ then
+ subs_needed=
+ subs_ok=
+ for subdir in $subdirs
+ do
+ test -d "$catdir/$subdir" &&
+ subs_ok="$subs_ok $subdir" ||
+ subs_needed="$subs_needed $subdir"
+ done
+
+ echo " already present: $subs_ok"
+ echo " need to be created: $subs_needed"
+
+ catdirs=
+ for subdir in $subs_needed
+ do
+ catdirs="$catdirs ${catdir}/${subdir}"
+ done
+ else
+ echo " Cat directory not present, no subdirectories will be created"
+ catdirs=
+ fi
+
+ if test "$test_only" = "no" && test "$catdirs"
+ then
+ echo " "
+ # shellcheck disable=SC2086
+ echo "install -d -o $owner -g $group -m $mode $catdirs" &&
+ install -d -o "$owner" -g "$group" -m "$mode" $catdirs ||
+ exit $?
+ fi
+
+ echo " "
+done