summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/rwx-to-mode16
1 files changed, 10 insertions, 6 deletions
diff --git a/tests/rwx-to-mode b/tests/rwx-to-mode
index 39e1500b9..95a512167 100755
--- a/tests/rwx-to-mode
+++ b/tests/rwx-to-mode
@@ -6,15 +6,19 @@
# FIXME: handle special bits, too.
case $# in
- 1) ;;
+ 1) rwx=$1;;
*) echo "$0: wrong number of arguments" 1>&2
echo "Usage: $0 ls-style-mode-string" 1>&2
exit 1;;
esac
-rwx=$1
-u=`echo $rwx|sed 's/^.\(...\).*/\1/;s/-//g'`
-g=`echo $rwx|sed 's/^....\(...\).*/\1/;s/-//g'`
-o=`echo $rwx|sed 's/^.......\(...\).*/\1/;s/-//g'`
-echo "=,u=$u,g=$g,o=$o"
+case $rwx in
+ [ld-][rwx-][rwx-][rwxs-][rwx-][rwx-][rwxs-][rwx-][rwx-][rwxt-]) ;;
+ *) echo "$0: invalid mode string: $rwx";;
+esac
+
+u=`echo $rwx|sed 's/^.\(...\).*/,u=\1/;s/-//g;s/^,u=$//'`
+g=`echo $rwx|sed 's/^....\(...\).*/,g=\1/;s/-//g;s/^,g=$//'`
+o=`echo $rwx|sed 's/^.......\(...\).*/,o=\1/;s/-//g;s/^,o=$//'`
+echo "=$u$g$o"
exit 0