1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-10 12:40:58 +02:00

28253: document -h argument to atribute commands

This commit is contained in:
Peter Stephenson 2010-09-12 18:56:40 +00:00
parent 154b7351f4
commit ade705cf5b
7 changed files with 50 additions and 9 deletions

View file

@ -1,3 +1,8 @@
2010-09-12 Peter Stephenson <p.w.stephenson@ntlworld.com>
* Mikael: 28253: Doc/Zsh/mod_attr.yo: document -h argument to
attribute commands.
2010-09-08 Peter Stephenson <pws@csr.com> 2010-09-08 Peter Stephenson <pws@csr.com>
* unposted: Functions/Zle/replace-string-again: safety on * unposted: Functions/Zle/replace-string-again: safety on
@ -13618,5 +13623,5 @@
***************************************************** *****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL * This is used by the shell to define $ZSH_PATCHLEVEL
* $Revision: 1.5074 $ * $Revision: 1.5075 $
***************************************************** *****************************************************

View file

@ -2,31 +2,33 @@ COMMENT(!MOD!zsh/attr
Builtins for manipulating extended attributes (xattr). Builtins for manipulating extended attributes (xattr).
!MOD!) !MOD!)
The tt(zsh/attr) module is used for manipulating extended attributes. The tt(zsh/attr) module is used for manipulating extended attributes.
The tt(-h) option causes all commands to operate on symbolic links instead
of their targets.
The builtins in this module are: The builtins in this module are:
startitem() startitem()
findex(zgetattr) findex(zgetattr)
cindex(extended attributes, xattr, getting from files) cindex(extended attributes, xattr, getting from files)
item(tt(zgetattr) var(filename) var(attribute) [ var(parameter) ])( item(tt(zgetattr) [ tt(-h) ] var(filename) var(attribute) [ var(parameter) ])(
Get the extended attribute var(attribute) from the specified Get the extended attribute var(attribute) from the specified
var(filename). If the optional argument var(parameter) is given, the var(filename). If the optional argument var(parameter) is given, the
attribute is set on that parameter instead of being printed to stdout. attribute is set on that parameter instead of being printed to stdout.
) )
findex(zsetattr) findex(zsetattr)
cindex(extended attributes, xattr, setting on files) cindex(extended attributes, xattr, setting on files)
item(tt(zsetattr) var(filename) var(attribute) var(value))( item(tt(zsetattr) [ tt(-h) ] var(filename) var(attribute) var(value))(
Set the extended attribute var(attribute) on the specified Set the extended attribute var(attribute) on the specified
var(filename) to var(value). var(filename) to var(value).
) )
findex(zdelattr) findex(zdelattr)
cindex(extended attributes, xattr, removing, deleting) cindex(extended attributes, xattr, removing, deleting)
item(tt(zdelattr) var(filename) var(attribute))( item(tt(zdelattr) [ tt(-h) ] var(filename) var(attribute))(
Remove the extended attribute var(attribute) from the specified Remove the extended attribute var(attribute) from the specified
var(filename). var(filename).
) )
findex(zlistattr) findex(zlistattr)
cindex(extended attributes, xattr, listing) cindex(extended attributes, xattr, listing)
item(tt(zlistattr) var(filename) [ var(parameter) ])( item(tt(zlistattr) [ tt(-h) ] var(filename) [ var(parameter) ])(
List the extended attributes currently set on the specified List the extended attributes currently set on the specified
var(filename). If the optional argument var(parameter) is given, the var(filename). If the optional argument var(parameter) is given, the
list of attributes is set on that parameter instead of being printed to stdout. list of attributes is set on that parameter instead of being printed to stdout.

View file

@ -1876,6 +1876,19 @@ If multibyte character support is not compiled into the shell this option is
ignored; all octets with the top bit set may be used in identifiers. ignored; all octets with the top bit set may be used in identifiers.
This is non-standard but is the traditional zsh behaviour. This is non-standard but is the traditional zsh behaviour.
) )
pindex(POSIX_TRAPS)
pindex(NO_POSIX_TRAPS)
pindex(POSIXTRAPS)
pindex(NOPOSIXTRAPS)
cindex(traps, on function exit)
cindex(traps, POSIX compatibility)
item(tt(POSIX_TRAPS) <K> <S>)(
When the is option is set, the usual zsh behaviour of executing
traps for tt(EXIT) on exit from shell functions is suppressed.
In that case, manipulating tt(EXIT) traps always alters the global
trap for exiting the shell; the tt(LOCAL_TRAPS) option is
ignored for the tt(EXIT) trap.
)
pindex(SH_FILE_EXPANSION) pindex(SH_FILE_EXPANSION)
pindex(NO_SH_FILE_EXPANSION) pindex(NO_SH_FILE_EXPANSION)
pindex(SHFILEEXPANSION) pindex(SHFILEEXPANSION)

View file

@ -204,6 +204,7 @@ static struct optname optns[] = {
{{NULL, "posixcd", OPT_EMULATE|OPT_BOURNE}, POSIXCD}, {{NULL, "posixcd", OPT_EMULATE|OPT_BOURNE}, POSIXCD},
{{NULL, "posixidentifiers", OPT_EMULATE|OPT_BOURNE}, POSIXIDENTIFIERS}, {{NULL, "posixidentifiers", OPT_EMULATE|OPT_BOURNE}, POSIXIDENTIFIERS},
{{NULL, "posixjobs", OPT_EMULATE|OPT_BOURNE}, POSIXJOBS}, {{NULL, "posixjobs", OPT_EMULATE|OPT_BOURNE}, POSIXJOBS},
{{NULL, "posixtraps", OPT_EMULATE|OPT_BOURNE}, POSIXTRAPS},
{{NULL, "printeightbit", 0}, PRINTEIGHTBIT}, {{NULL, "printeightbit", 0}, PRINTEIGHTBIT},
{{NULL, "printexitvalue", 0}, PRINTEXITVALUE}, {{NULL, "printexitvalue", 0}, PRINTEXITVALUE},
{{NULL, "privileged", OPT_SPECIAL}, PRIVILEGED}, {{NULL, "privileged", OPT_SPECIAL}, PRIVILEGED},

View file

@ -864,7 +864,8 @@ removetrap(int sig)
* one, to aid in removing this one. However, if there's * one, to aid in removing this one. However, if there's
* already one at the current locallevel we just overwrite it. * already one at the current locallevel we just overwrite it.
*/ */
if (!dontsavetrap && (isset(LOCALTRAPS) || sig == SIGEXIT) && if (!dontsavetrap &&
(sig == SIGEXIT ? !isset(POSIXTRAPS) : isset(LOCALTRAPS)) &&
locallevel && locallevel &&
(!trapped || locallevel > (sigtrapped[sig] >> ZSIG_SHIFT))) (!trapped || locallevel > (sigtrapped[sig] >> ZSIG_SHIFT)))
dosavetrap(sig, locallevel); dosavetrap(sig, locallevel);
@ -932,7 +933,7 @@ starttrapscope(void)
* so give it the next higher one. dosavetrap() is called * so give it the next higher one. dosavetrap() is called
* automatically where necessary. * automatically where necessary.
*/ */
if (sigtrapped[SIGEXIT]) { if (sigtrapped[SIGEXIT] && !isset(POSIXTRAPS)) {
locallevel++; locallevel++;
unsettrap(SIGEXIT); unsettrap(SIGEXIT);
locallevel--; locallevel--;
@ -960,7 +961,7 @@ endtrapscope(void)
*/ */
if (intrap) if (intrap)
exittr = 0; exittr = 0;
else if ((exittr = sigtrapped[SIGEXIT])) { else if (!isset(POSIXTRAPS) && (exittr = sigtrapped[SIGEXIT])) {
if (exittr & ZSIG_FUNC) { if (exittr & ZSIG_FUNC) {
exitfn = removehashnode(shfunctab, "TRAPEXIT"); exitfn = removehashnode(shfunctab, "TRAPEXIT");
} else { } else {
@ -1005,7 +1006,8 @@ endtrapscope(void)
} }
if (exittr) { if (exittr) {
dotrapargs(SIGEXIT, &exittr, exitfn); if (!isset(POSIXTRAPS))
dotrapargs(SIGEXIT, &exittr, exitfn);
if (exittr & ZSIG_FUNC) if (exittr & ZSIG_FUNC)
shfunctab->freenode((HashNode)exitfn); shfunctab->freenode((HashNode)exitfn);
else else

View file

@ -1987,6 +1987,7 @@ enum {
POSIXCD, POSIXCD,
POSIXIDENTIFIERS, POSIXIDENTIFIERS,
POSIXJOBS, POSIXJOBS,
POSIXTRAPS,
PRINTEIGHTBIT, PRINTEIGHTBIT,
PRINTEXITVALUE, PRINTEXITVALUE,
PRIVILEGED, PRIVILEGED,

View file

@ -371,6 +371,23 @@
0: EXIT trap set in command substitution 0: EXIT trap set in command substitution
>command substitution exited >command substitution exited
(cd ..; $ZTST_exe -fc 'setopt posixtraps;
TRAPEXIT() { print Exited; }
fn1() { trap; }
setopt localtraps # should be ignored by EXIT
fn2() { TRAPEXIT() { print No, really exited; } }
fn1
fn2
fn1')
0:POSIX_TRAPS option
>TRAPEXIT () {
> print Exited
>}
>TRAPEXIT () {
> print No, really exited
>}
>No, really exited
%clean %clean
rm -f TRAPEXIT rm -f TRAPEXIT