summaryrefslogtreecommitdiff
path: root/utils/mount.sh
diff options
context:
space:
mode:
authorMiles Bader <miles@gnu.org>1995-04-04 17:24:25 +0000
committerMiles Bader <miles@gnu.org>1995-04-04 17:24:25 +0000
commite462c241597b4ab78412ac6369fe360ead4af24e (patch)
tree0dc17ce7e3bc1190763d590d4119c1f00d23a7a6 /utils/mount.sh
parent08c37e57274177500fd1bb3131bc0461dbac7d01 (diff)
Initial revision
Diffstat (limited to 'utils/mount.sh')
-rwxr-xr-xutils/mount.sh71
1 files changed, 71 insertions, 0 deletions
diff --git a/utils/mount.sh b/utils/mount.sh
new file mode 100755
index 00000000..667b0481
--- /dev/null
+++ b/utils/mount.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+# A simple version of mount for the hurd
+#
+
+USAGE="Usage: $0: [ -rnvf | -o DEVOPTS | -t TYPE ] ( DEVICE NODE | DEVICE | NODE )"
+
+PATH=/bin
+
+default_type=ufs
+type=-
+fstab=/etc/fstab
+exec=true
+echo=false
+
+while :; do
+ case $1 in
+ -v) echo=true; margs="$margs -v"; shift;;
+ -n) exec=false; margs="$margs -n"; shift;;
+ -r) targs="$targs -r"; shift;;
+ -t) case "$type" in
+ -|$2) type=$2; shift 2; margs="$margs -t $type";;
+ *) echo 1>&2 $0: filesystem type specified multiple times
+ exit 7;;
+ esac;;
+ -f) fstab=$2; shift 2;;
+ -o) targs="$targs $2"; shift 2;;
+ -*) echo 1>&2 $0: $1: unknown flag; echo 1>&2 "$USAGE"; exit 1;;
+ *) break;;
+ esac
+done
+
+case "$targs" in ?*)
+ # We embed quotes so that spaces are preserved in targs later on
+ margs="$margs -o \"$targs\""
+esac
+
+if [ X"$type" != X"-" && ! -x /hurd/$type ]; then
+ echo 1>&2 $0: $type: unknown filesystem type
+ exit 1
+fi
+
+case $# in
+ 1)
+ # Lookup the given single arg in /etc/fstab for the rest of the args
+ args=`gawk -f - $fstab <<END
+\\$1 == "$1" || \\$2 == "$1" {
+ for (i = 4; i <= NF; i++)
+ printf("%s ", \\$i);
+ printf("-t %s %s %s", \\$3, \\$1, \\$2);
+ exit(0);
+}
+END
+`
+ case "$args" in
+ "") echo 1>&2 $0: $1: not found in $fstab; exit 3;;
+ *) eval $0 $margs $args;;
+ esac
+ ;;
+
+ 2)
+ # Do the mount, by putting an active translator on the node
+ case "$type" in -) type=$default_type;; esac
+ $echo && echo settrans -a $2 -- /hurd/$type $targs $1
+ $exec && settrans -a $2 -- /hurd/$type $targs $1
+ ;;
+
+ *)
+ echo 1>&2 "$USAGE"; exit 1
+ ;;
+esac