diff options
-rwxr-xr-x | tests/rwx-to-mode | 16 |
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 |