aboutsummaryrefslogtreecommitdiffhomepage
path: root/init/functions/umask.fish
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-02-17 20:13:39 +1000
committerGravatar axel <axel@liljencrantz.se>2006-02-17 20:13:39 +1000
commit343cafef346543282b5b6e825bc8f9dd10028a48 (patch)
tree1bcf221ecb525c7aeadc8325e7b780d3656e544b /init/functions/umask.fish
parent95a01f3c8f15034433ffce368d8f2d13d925139c (diff)
Redo installation file structure, move lots of things to $PREFIX/share/fish
darcs-hash:20060217101339-ac50b-d93d2c620a4b7f75f05ff461a6edbee001da7613.gz
Diffstat (limited to 'init/functions/umask.fish')
-rw-r--r--init/functions/umask.fish206
1 files changed, 0 insertions, 206 deletions
diff --git a/init/functions/umask.fish b/init/functions/umask.fish
deleted file mode 100644
index afca8f5f..00000000
--- a/init/functions/umask.fish
+++ /dev/null
@@ -1,206 +0,0 @@
-
-function __fish_umask_parse -d "Internal umask function"
- # Test if already a valid octal mask, and pad it with zeros
- if echo $argv | grep -E '^(0|)[0-7]{1,3}$' >/dev/null
- for i in (seq (echo 5-(echo $argv|wc -c)|bc)); set argv 0$argv; end
- echo $argv
- else
- # Test if argument really is a valid symbolic mask
- if not echo $argv | grep -E '^(((u|g|o|a|)(=|\+|-)|)(r|w|x)*)(,(((u|g|o|a|)(=|\+|-)|)(r|w|x)*))*$' >/dev/null
- printf (_ "%s: Invalid mask '%s'\n") umask $argv >&2
- return 1
- end
-
- set -l implicit_all
-
- # Insert inverted umask into res variable
-
- set -l mode
- set -l val
- set -l tmp $umask
- set -l res
-
- for i in 1 2 3
- set tmp (echo $tmp|cut -c 2-)
- set res[$i] (echo 7-(echo $tmp|cut -c 1)|bc)
- end
-
- set -l el (echo $argv|tr , \n)
- for i in $el
- switch $i
- case 'u*'
- set idx 1
- set i (echo $i| cut -c 2-)
-
- case 'g*'
- set idx 2
- set i (echo $i| cut -c 2-)
-
- case 'o*'
- set idx 3
- set i (echo $i| cut -c 2-)
-
- case 'a*'
- set idx 1 2 3
- set i (echo $i| cut -c 2-)
-
- case '*'
- set implicit_all 1
- set idx 1 2 3
- end
-
- switch $i
- case '=*'
- set mode set
- set i (echo $i| cut -c 2-)
-
- case '+*'
- set mode add
- set i (echo $i| cut -c 2-)
-
- case '-*'
- set mode remove
- set i (echo $i| cut -c 2-)
-
- case '*'
- if not count $implicit_all >/dev/null
- printf (_ "%s: Invalid mask '%s'\n") umask $argv >&2
- return
- end
- set mode set
- end
-
- if not echo $perm|grep -E '^(r|w|x)*$' >/dev/null
- printf (_ "%s: Invalid mask '%s'\n") umask $argv >&2
- return
- end
-
- set val 0
- if echo $i |grep 'r' >/dev/null
- set val 4
- end
- if echo $i |grep 'w' >/dev/null
- set val (echo $val + 2|bc)
- end
- if echo $i |grep 'x' >/dev/null
- set val (echo $val + 1|bc)
- end
-
- for j in $idx
- switch $mode
- case set
- set res[$j] $val
-
- case add
- set res[$j] (perl -e 'print( ( '$res[$j]'|'$val[$j]' )."\n" )')
-
- case remove
- set res[$j] (perl -e 'print( ( (7-'$res[$j]')&'$val[$j]' )."\n" )')
- end
- end
- end
-
- for i in 1 2 3
- set res[$i] (echo 7-$res[$i]|bc)
- end
- echo 0$res[1]$res[2]$res[3]
- end
-end
-
-function __fish_umask_print_symbolic
- set -l res ""
- set -l letter a u g o
-
- for i in 2 3 4
- set res $res,$letter[$i]=
- set val (echo $umask|cut -c $i)
-
- if contains $val 0 1 2 3
- set res {$res}r
- end
-
- if contains $val 0 1 4 5
- set res {$res}w
- end
-
- if contains $val 0 2 4 6
- set res {$res}x
- end
-
- end
-
- echo $res|cut -c 2-
-end
-
-function umask -d (_ "Set default file permission mask")
-
- set -l as_command 0
- set -l symbolic 0
-
- set -l shortopt -o pSh
- set -l longopt
- if not getopt -T >/dev/null
- set longopt -l as-command,symbolic,help
- end
-
- if not getopt -n umask -Q $shortopt $longopt -- $argv
- return 1
- end
-
- set -l tmp (getopt $shortopt $longopt -- $argv)
-
- eval set opt $tmp
-
- while count $opt >/dev/null
-
- switch $opt[1]
- case -h --help
- help umask
- return 0
-
- case -p --as-command
- set as_command 1
-
- case -S --symbolic
- set symbolic 1
-
- case --
- set -e opt[1]
- break
-
- end
-
- set -e opt[1]
-
- end
-
- switch (count $opt)
-
- case 0
- if not set -q umask
- set -g umask 113
- end
- if test $as_command -eq 1
- echo umask $umask
- else
- if test $symbolic -eq 1
- __fish_umask_print_symbolic $umask
- else
- echo $umask
- end
- end
-
- case 1
- set -l parsed (__fish_umask_parse $opt)
- if test (count $parsed) -eq 1
- set -g umask $parsed
- return 0
- end
- return 1
-
- case '*'
- printf (_ '%s: Too many arguments\n') umask >&2
-
- end
-
-end