1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-01-01 05:16:05 +01:00

27648, 267650/1, unposted README change:

Turn off repeat and turn on ulimit in emulation modes
This commit is contained in:
Peter Stephenson 2010-02-03 18:34:32 +00:00
parent 7e9952e016
commit 8ac97f3308
9 changed files with 112 additions and 28 deletions

View file

@ -1,3 +1,13 @@
2010-02-03 Peter Stephenson <pws@csr.com>
* 27648, 267650/1, unposted README change: README,
Doc/Zsh/builtins.yo, Doc/Zsh/grammar.yo,
Etc/zsh-development-guide, Src/builtin.c, Src/init.c,
Src/mkbltnmlst.sh, Src/Builtins/rlimits.mdd: "repeat"
is not available when starting in emulation mode,
"ulimit" is; document that "sched", "limit", "unlimit"
already aren't.
2010-02-02 Peter Stephenson <p.w.stephenson@ntlworld.com> 2010-02-02 Peter Stephenson <p.w.stephenson@ntlworld.com>
* Mikael: 27647: Completion/Unix/Command/_cp: update * Mikael: 27647: Completion/Unix/Command/_cp: update
@ -12669,5 +12679,5 @@
***************************************************** *****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL * This is used by the shell to define $ZSH_PATCHLEVEL
* $Revision: 1.4880 $ * $Revision: 1.4881 $
***************************************************** *****************************************************

View file

@ -872,6 +872,10 @@ sitem(var(n)tt(k))(kilobytes (default))
sitem(var(n)tt(m))(megabytes or minutes) sitem(var(n)tt(m))(megabytes or minutes)
sitem([var(mm)tt(:)]var(ss))(minutes and seconds) sitem([var(mm)tt(:)]var(ss))(minutes and seconds)
endsitem() endsitem()
The tt(limit) command is not made available by default when the
shell starts in a mode emulating another shell. It can be made available
with the command `tt(zmodload -F zsh/rlimits b:limit)'.
) )
findex(local) findex(local)
item(tt(local) [ {tt(PLUS())|tt(-)}tt(AEFHUahlprtux) ] \ item(tt(local) [ {tt(PLUS())|tt(-)}tt(AEFHUahlprtux) ] \
@ -1286,6 +1290,10 @@ all parameters are printed on the standard output. If the only argument is
For historical reasons, `tt(set -)' is treated as `tt(set +xv)' For historical reasons, `tt(set -)' is treated as `tt(set +xv)'
and `tt(set -) var(args)' as `tt(set +xv --) var(args)' when in and `tt(set -) var(args)' as `tt(set +xv --) var(args)' when in
any other emulation mode than zsh's native mode. any other emulation mode than zsh's native mode.
The tt(sched) builtin is not made available by default when the shell
starts in a mode emulating another shell. It can be made available
with the command `tt(zmodload -F zsh/sched b:sched)'.
) )
module(setcap)(zsh/cap) module(setcap)(zsh/cap)
findex(setopt) findex(setopt)
@ -1794,6 +1802,10 @@ If the tt(-h) flag is given and the shell has appropriate privileges,
the hard resource limit for each var(resource) is removed. the hard resource limit for each var(resource) is removed.
The resources of the shell process are only changed if the tt(-s) The resources of the shell process are only changed if the tt(-s)
flag is given. flag is given.
The tt(unlimit) command is not made available by default when the
shell starts in a mode emulating another shell. It can be made available
with the command `tt(zmodload -F zsh/rlimits b:unlimit)'.
) )
findex(unset) findex(unset)
cindex(parameters, unsetting) cindex(parameters, unsetting)

View file

@ -222,6 +222,10 @@ item(tt(repeat) var(word) tt(do) var(list) tt(done))(
var(word) is expanded and treated as an arithmetic expression, var(word) is expanded and treated as an arithmetic expression,
which must evaluate to a number var(n). which must evaluate to a number var(n).
var(list) is then executed var(n) times. var(list) is then executed var(n) times.
The tt(repeat) syntax is disabled by default when the
shell starts in a mode emulating another shell. It can be enabled
with the command `tt(enable -r repeat)'
) )
findex(case) findex(case)
cindex(case selection) cindex(case selection)

View file

@ -198,12 +198,16 @@ following shell variables:
- nozshdep non-empty indicates no dependence on the `zsh/main' - nozshdep non-empty indicates no dependence on the `zsh/main'
pseudo-module pseudo-module
- alwayslink if non-empty, always link the module into the executable - alwayslink if non-empty, always link the module into the executable
- autobins builtins defined by the module, for autoloading - autofeatures features defined by the module for autoloading,
- autoinfixconds infix condition codes defined by the module, for a space-separated list. The syntax for features is as
autoloading (without the leading `-') for zmodload -F, e.g. b:mybin refers to the builtin
- autoprefixconds like autoinfixconds, but for prefix condition codes mybin. This replaces the previous mechanism with
- autoparams parameters defined by the module, for autoloading separate variables for builtins, conditions, math
- automathfuncs math functions defined by the module, for autoloading functions and parameters. Note the features are only
available in zsh's native mode, not in emulation modes.
- autofeatures_emu As autofeatures, but the features so presented are
available in modes that are *not* zsh's native mode.
The variable autofeatures must also be present.
- objects .o files making up this module (*must* be defined) - objects .o files making up this module (*must* be defined)
- proto .syms files for this module (default generated from $objects) - proto .syms files for this module (default generated from $objects)
- headers extra headers for this module (default none) - headers extra headers for this module (default none)

43
README
View file

@ -136,6 +136,17 @@ The variable HOME is no longer set by the shell if zsh is emulating any
other shell at startup; it must be present in the environment or set other shell at startup; it must be present in the environment or set
subsequently by the user. It is valid for the variable to be unset. subsequently by the user. It is valid for the variable to be unset.
If the shell starts in a mode where it is emulating another shell
(typically because the base name of the shell was "sh" or another known
shell), the "repeat" syntax is not available by default, to avoid clashes
with external commands, but the "ulimit" command is available by default.
"limit", "sched" and "unlimit" are not available by default in such modes:
this has been the case for many versions but is now documented for the
first time. (Users should note that emulation modes are not designed for
backwards compatibility with previous versions of zsh, but to maximise
compatibility with other shells, hence it is not safe to assume emulation
modes will behave consistently between zsh versions.)
Parameter substitutions in the form ${param//#%search/replace} match Parameter substitutions in the form ${param//#%search/replace} match
against "search" anchored at both ends of the parameter value. Previously against "search" anchored at both ends of the parameter value. Previously
this syntax would have matched against "%search", anchored only at the head this syntax would have matched against "%search", anchored only at the head
@ -143,23 +154,33 @@ of the value. The form ${param//#$search/replace} where the value
$search starts with "%" considers the "%" to be part of the search $search starts with "%" considers the "%" to be part of the search
string as before. string as before.
The MULTIBYTE option is on by default where it is available; this Configure attempts to decide if multibyte characters are supported by the
causes many operations to recognise characters as in the current locale. system and if so sets the effect of --enable-multibyte, unless
Older versions of the shell always assumed a character was one byte. --disable-multibyte was passed on the command line. When
In some places the width of the character will be used; this is transparent --enable-multibyte is in effect, the MULTIBYTE shell option is on by
when used for calculations of screen position, but also occurs, for default; this causes many operations to recognise characters in the current
example, in calculations of padding width. Note that MULTIBYTE is locale. (Most typically this is used for a UTF-8 character set but the
not automatically set when emulating Bourne- and POSIX-style shells; shell will work with any character set provided by the system where
for interative use of these emulations it may be necessary to set individual octets are either US ASCII characters or have the top bit set.)
it by hand. Older versions of the shell always assumed a character was one byte; this
remains the case if --disable-multibyte is in effect or if the MULTIBYTE
option is unset. In some places the width of characters will be taken into
account where previously a raw string length was used; this is transparent
in calculations of screen position, but also occurs, for example, in
calculations of padding width. Note that MULTIBYTE is not automatically
set when emulating Bourne- and POSIX-style shells; for interactive use of
these emulations it may be necessary to set it by hand. Note also that the
option COMBINING_CHARS is not set by default due to difficulties detecting
the ability of the terminal to display combining characters correctly; MAC
users in particular will probably wish to set this option.
Zsh has previously been lax about whether it allows octets with the Zsh has previously been lax about whether it allows octets with the
top bit set to be part of a shell identifier. Older versions of the shell top bit set to be part of a shell identifier. Older versions of the shell
assumed all such octets were allowed in identifiers, however the POSIX assumed all such octets were allowed in identifiers, however the POSIX
standard does not allow such characters in identifiers. The older standard does not allow such characters in identifiers. The older
behaviour is still obtained with --disable-multibyte in effect. behaviour is still obtained with --disable-multibyte in effect.
With --enable-multibyte in effect (this is now the default anywhere With --enable-multibyte in effect (see previous paragraph) there are three
it is supported) there are three possible cases: possible cases:
MULTIBYTE option unset: only ASCII characters are allowed; the MULTIBYTE option unset: only ASCII characters are allowed; the
shell does not attempt to identify non-ASCII characters at all. shell does not attempt to identify non-ASCII characters at all.
MULTIBYTE option set, POSIX_IDENTIFIERS option unset: in addition MULTIBYTE option set, POSIX_IDENTIFIERS option unset: in addition

View file

@ -3,6 +3,7 @@ link=either
load=yes load=yes
autofeatures="b:limit b:ulimit b:unlimit" autofeatures="b:limit b:ulimit b:unlimit"
autofeatures_emu="b:ulimit"
objects="rlimits.o" objects="rlimits.o"

View file

@ -206,6 +206,17 @@ freebuiltinnode(HashNode hn)
} }
} }
/**/
void
init_builtins(void)
{
if (!EMULATION(EMULATE_ZSH)) {
HashNode hn = reswdtab->getnode2(reswdtab, "repeat");
if (hn)
reswdtab->disablenode(hn, 0);
}
}
/* Make sure we have space for a new option and increment. */ /* Make sure we have space for a new option and increment. */
#define OPT_ALLOC_CHUNK 16 #define OPT_ALLOC_CHUNK 16

View file

@ -1443,6 +1443,7 @@ zsh_main(UNUSED(int argc), char **argv)
setupvals(); setupvals();
init_signals(); init_signals();
init_bltinmods(); init_bltinmods();
init_builtins();
run_init_scripts(); run_init_scripts();
init_misc(); init_misc();

View file

@ -37,18 +37,38 @@ for x_mod in $x_mods; do
echo "/* non-linked-in known module \`$x_mod' */" echo "/* non-linked-in known module \`$x_mod' */"
linked=no linked=no
esac esac
unset moddeps autofeatures unset moddeps autofeatures autofeatures_emu
. $srcdir/../$modfile . $srcdir/../$modfile
if test "x$autofeatures" != x; then if test "x$autofeatures" != x; then
echo " if (EMULATION(EMULATE_ZSH)) {" if test "x$autofeatures_emu" != x; then
echo " char *features[] = { " echo " {"
for feature in $autofeatures; do echo " char *zsh_features[] = { "
echo " \"$feature\"," for feature in $autofeatures; do
done echo " \"$feature\","
echo " NULL" done
echo " }; " echo " NULL"
echo " autofeatures(\"zsh\", \"$x_mod\", features, 0, 1);" echo " }; "
echo " }" echo " char *emu_features[] = { "
for feature in $autofeatures_emu; do
echo " \"$feature\","
done
echo " NULL"
echo " }; "
echo " autofeatures(\"zsh\", \"$x_mod\","
echo " EMULATION(EMULATE_ZSH) ? zsh_features : emu_features,"
echo " 0, 1);"
echo " }"
else
echo " if (EMULATION(EMULATE_ZSH)) {"
echo " char *features[] = { "
for feature in $autofeatures; do
echo " \"$feature\","
done
echo " NULL"
echo " }; "
echo " autofeatures(\"zsh\", \"$x_mod\", features, 0, 1);"
echo " }"
fi
fi fi
for dep in $moddeps; do for dep in $moddeps; do
echo " add_dep(\"$x_mod\", \"$dep\");" echo " add_dep(\"$x_mod\", \"$dep\");"