1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-05 11:01:13 +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>
* unposted: Functions/Zle/replace-string-again: safety on
@ -13618,5 +13623,5 @@
*****************************************************
* 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).
!MOD!)
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:
startitem()
findex(zgetattr)
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
var(filename). If the optional argument var(parameter) is given, the
attribute is set on that parameter instead of being printed to stdout.
)
findex(zsetattr)
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
var(filename) to var(value).
)
findex(zdelattr)
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
var(filename).
)
findex(zlistattr)
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
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.

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.
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(NO_SH_FILE_EXPANSION)
pindex(SHFILEEXPANSION)

View file

@ -204,6 +204,7 @@ static struct optname optns[] = {
{{NULL, "posixcd", OPT_EMULATE|OPT_BOURNE}, POSIXCD},
{{NULL, "posixidentifiers", OPT_EMULATE|OPT_BOURNE}, POSIXIDENTIFIERS},
{{NULL, "posixjobs", OPT_EMULATE|OPT_BOURNE}, POSIXJOBS},
{{NULL, "posixtraps", OPT_EMULATE|OPT_BOURNE}, POSIXTRAPS},
{{NULL, "printeightbit", 0}, PRINTEIGHTBIT},
{{NULL, "printexitvalue", 0}, PRINTEXITVALUE},
{{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
* 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 &&
(!trapped || locallevel > (sigtrapped[sig] >> ZSIG_SHIFT)))
dosavetrap(sig, locallevel);
@ -932,7 +933,7 @@ starttrapscope(void)
* so give it the next higher one. dosavetrap() is called
* automatically where necessary.
*/
if (sigtrapped[SIGEXIT]) {
if (sigtrapped[SIGEXIT] && !isset(POSIXTRAPS)) {
locallevel++;
unsettrap(SIGEXIT);
locallevel--;
@ -960,7 +961,7 @@ endtrapscope(void)
*/
if (intrap)
exittr = 0;
else if ((exittr = sigtrapped[SIGEXIT])) {
else if (!isset(POSIXTRAPS) && (exittr = sigtrapped[SIGEXIT])) {
if (exittr & ZSIG_FUNC) {
exitfn = removehashnode(shfunctab, "TRAPEXIT");
} else {
@ -1005,7 +1006,8 @@ endtrapscope(void)
}
if (exittr) {
dotrapargs(SIGEXIT, &exittr, exitfn);
if (!isset(POSIXTRAPS))
dotrapargs(SIGEXIT, &exittr, exitfn);
if (exittr & ZSIG_FUNC)
shfunctab->freenode((HashNode)exitfn);
else

View file

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

View file

@ -371,6 +371,23 @@
0: EXIT trap set in command substitution
>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
rm -f TRAPEXIT