mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-19 11:31:26 +01:00
39223: Introduce addflags function to reduce redundancy
This commit is contained in:
parent
5d24f6d9aa
commit
1f429c0668
1 changed files with 33 additions and 42 deletions
|
@ -2,55 +2,46 @@
|
|||
|
||||
local flags args own='-g *(-u$EUID)'
|
||||
|
||||
flags=(
|
||||
'(noopaque)opaque[set the opaque flag]'
|
||||
'(opaque)noopaque[unset the opaque flag]'
|
||||
'(dump)nodump[set the nodump flag]'
|
||||
'(nodump)dump[unset the nodump flag]'
|
||||
'(nouappnd)uappnd[set the user append-only flag]'
|
||||
'(uappnd)nouappnd[unset the user append-only flag]'
|
||||
'(nouchg)uchg[set the user immutable flag]'
|
||||
'(uchg)nouchg[unset the user immutable flag]'
|
||||
)
|
||||
addflags() {
|
||||
for 1 2; do
|
||||
if [[ $1 = no* ]]; then
|
||||
flags+=("(${1#no})$1[set the $2 flag]"
|
||||
"($1)${1#no}[unset the $2 flag]")
|
||||
else
|
||||
flags+=("(no$1)$1[set the $2 flag]"
|
||||
"($1)no$1[unset the $2 flag]")
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
addflags \
|
||||
nodump nodump \
|
||||
opaque opaque \
|
||||
uappnd 'user append-only' \
|
||||
uchg 'user immutable'
|
||||
|
||||
if (( ! EUID )); then
|
||||
flags+=(
|
||||
'(noarch)arch[set the archived flag]'
|
||||
'(arch)noarch[unset the archived flag]'
|
||||
'(nosappnd)sappnd[set the system append-only flag]'
|
||||
'(sappnd)nosappnd[unset the system append-only flag]'
|
||||
'(noschg)schg[set the system immutable flag]'
|
||||
'(schg)noschg[unset the system immutable flag]'
|
||||
)
|
||||
addflags \
|
||||
arch archived \
|
||||
sappnd 'system append-only' \
|
||||
schg 'system immutable'
|
||||
unset own
|
||||
fi
|
||||
|
||||
if [[ $OSTYPE = (freebsd|dragonfly|darwin)* ]]; then
|
||||
flags+=(
|
||||
'(nouunlnk)uunlnk[set the user undeletable flag]'
|
||||
'(uunlnk)nouunlnk[unset the user undeletable flag]'
|
||||
'(nohidden)hidden[set the hidden flag]'
|
||||
'(hidden)nohidden[unset the hidden flag]'
|
||||
)
|
||||
[[ $OSTYPE = freebsd* ]] && flags+=(
|
||||
'(uoffline)offline[set the offline attribute]'
|
||||
'(offline)uoffline[unset the offline attribute]'
|
||||
'(urdonly)rdonly[set readonly flag]'
|
||||
'(rdonly)urdonly[unset readonly flag]'
|
||||
'(usparse)sparse[set the sparse attribute]'
|
||||
'(sparse)usparse[unset the sparse attribute]'
|
||||
'(usystem)system[set system flag]'
|
||||
'(system)usystem[unset system flag]'
|
||||
'(ureparse)reparse[set the Windows reparse point attribute]'
|
||||
'(reparse)ureparse[unset the Windows reparse point attribute]'
|
||||
'(uunlnk)unlnk[set undeletable flag]'
|
||||
'(unlnk)uunlnk[unset undeletable flag]'
|
||||
)
|
||||
addflags \
|
||||
hidden hidden \
|
||||
uunlnk 'user undeletable'
|
||||
|
||||
[[ $OSTYPE = freebsd* ]] && addflags \
|
||||
offline offline \
|
||||
rdonly readonly \
|
||||
reparse 'Windows reparse point' \
|
||||
sparse 'sparse file' \
|
||||
system system
|
||||
|
||||
(( EUID )) || addflags sunlnk 'system undeletable'
|
||||
|
||||
(( EUID )) || flags+=(
|
||||
'(nosunlnk)sunlnk[set the system undeletable flag]'
|
||||
'(sunlnk)nosunlnk[unset the system undeletable flag]'
|
||||
)
|
||||
args=(
|
||||
"-f[don't display diagnostic messages]"
|
||||
'-h[act on symlinks]'
|
||||
|
|
Loading…
Reference in a new issue