summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2016-09-27 10:40:02 -0400
committerChet Ramey <chet.ramey@case.edu>2016-09-27 10:40:02 -0400
commit61c476d20d32dfd389c79fd4f2161a780685e42e (patch)
treeb3363b8bf017cbbad1dc088b2c2f8b00f74b2fee
parentf036615e27069842982261669c38dc22c4eb1558 (diff)
downloadbash-61c476d20d32dfd389c79fd4f2161a780685e42e.tar.gz
commit bash-20160923 snapshot
-rw-r--r--CWRU/CWRU.chlog127
-rw-r--r--array.c20
-rw-r--r--arrayfunc.c10
-rw-r--r--arrayfunc.h2
-rw-r--r--builtins/declare.def7
-rw-r--r--builtins/exec.def7
-rw-r--r--builtins/mapfile.def2
-rw-r--r--builtins/printf.def8
-rw-r--r--builtins/set.def16
-rw-r--r--doc/bash.12
-rw-r--r--execute_cmd.c7
-rw-r--r--expr.c2
-rw-r--r--jobs.c4
-rw-r--r--lib/glob/smatch.c4
-rw-r--r--lib/readline/history.c6
-rw-r--r--lib/readline/macro.c15
-rw-r--r--parse.y46
-rw-r--r--po/eo.po440
-rw-r--r--subst.c5
-rw-r--r--test.c2
-rwxr-xr-xtests/RUN-ONE-TEST2
-rw-r--r--tests/heredoc.right8
-rw-r--r--tests/printf.right1
-rw-r--r--tests/printf.tests4
-rw-r--r--tests/type.right14
-rw-r--r--tests/vredir.right2
-rw-r--r--variables.c4
27 files changed, 420 insertions, 347 deletions
diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog
index 8b2b31b..79b615a 100644
--- a/CWRU/CWRU.chlog
+++ b/CWRU/CWRU.chlog
@@ -11719,3 +11719,130 @@ print_cmd.c
- print_deferred_heredocs: don't print heredoc headers, since they're
now printed in print_redirection_list
- print_deferred_heredocs: use print_heredoc_bodies
+
+ 9/20
+ ----
+builtins/mapfile.def
+ - readarray: update usage synopsis to include -d delim. Report and
+ fix from jhankins@homewood.k12.al.us
+
+test.c
+ - test_binop: if op[0] == '-', make sure op[1] != 0 before checking
+ op[2] or op[3]. Fixes out-of-bounds read reported by Franco
+ Costantini <franco.costantini.20@gmail.com>
+
+parse.y
+ - cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0
+ before checking word[2] and calling test_unop. Fixes out-of-bounds
+ read reported by Franco Costantini <franco.costantini.20@gmail.com>
+ - make sure to check all instances of the return value of the
+ simple_command production before trying to hook redirections onto it,
+ since it can potentially return NULL.
+ Reported by Franco Costantini <franco.costantini.20@gmail.com>
+
+ 9/21
+ ----
+parse.y
+ - token_is_assignment: make sure to check that the return value from
+ assignment() finds the `=' we just added at index I to avoid false
+ positives from g=g=g=g=g=g=(). Reported by Franco Costantini
+ <franco.costantini.20@gmail.com>
+
+ 9/22
+ ----
+parse.y
+ - token_is_assignment: if we're not using the bash malloc (which has
+ guard bytes after the requested allocation size), use a new
+ buffer so we can make sure it's big enough to hold the current
+ token and at least two additional characters. Reported by
+ Franco Costantini <franco.costantini.20@gmail.com>
+
+ 9/23
+ ----
+execute_command.c
+ - execute_in_subshell: call without_job_control for both job control
+ and non-job-control builds to avoid waiting for last_made_pid
+ inherited from parent shell. Related to fix from 8/4 to
+ initialize_subshell. Fixes bug reported by Martijn Dekker
+ <martijn@inlv.org>
+
+builtins/declare.def
+ - local_builtin: allow `local --help' to work even when not executing
+ a function. Suggestion from Norm Abramovitz <norm@starkandwayne.com>
+
+ 9/25
+ ----
+builtins/printf.def
+ - bexpand: if passed a null or empty string, return a newly-allocated
+ empty string (so the return value can always be freed) instead of
+ NULL.
+ - printstr: if passed a null string, treat it as if it were an empty
+ string so any precision or fieldwidth arguments are handled
+ correctly. Report from isabella parakiss <izaberina@gmail.com>
+
+subst.c
+ - skip_matched_pair: make the flags argument of 1 affect whether or
+ not backslash can quote characters in the string, so it affects
+ all quoting mechanisms
+
+arrayfunc.c
+ - unbind_array_element: now takes a third (flags) argument; flags&1
+ means to not expand an associative array index. This is only called
+ from a shell builtin context, which means the argument should have
+ already undergone word expansion, so it should be ok. Will still
+ be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid
+ globbing
+ - valid_array_reference: pass second flags argument to skipsubscript;
+ still set to 0 by all callers
+
+arrayfunc.h
+ - unbind_array_element: updated prototype
+
+builtins/set.def
+ - unset_builtin: add third argument of 1 to unbind_array_element calls
+ [TEMPORARILY DISABLED]
+ - unset_builtin: call valid_array_reference with second arg of 1 to
+ handle unmatched pairs of quotes and [/]
+
+array.c
+ - array_reference: optimize access locality as well as sequential
+ access by adding ability to start from last-accessed element and move
+ backwards or forwards depending on the desired index. Inspired by
+ report from Tom McCurdy <tom.j.mccurdy@gmail.com> and followup from
+ Christian Franke <Christian.Franke@t-online.de>
+
+variables.c
+ - all_array_variables: include associative arrays, not just indexed
+ arrays. Reported by Grisha Levit <grishalevit@gmail.com>
+
+execute_cmd.c
+ - execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK),
+ decrement the shell level so we don't end up incrementing it twice.
+ We should decrement the shell level for an implicit exec like an
+ explicit one. Reported by Stephane Chazelas
+ <stephane.chazelas@gmail.com>
+
+builtins/exec.def
+ - exec_builtin: don't bother to decrement the shell level if we are
+ already in a `(command)' subshell. Reported by Stephane Chazelas
+ <stephane.chazelas@gmail.com>
+
+lib/readline/macro.c
+ - macro_level: count of macro nesting level, maintained by
+ _rl_push_executing_macro and _rl_pop_executing macro
+ - _rl_with_macro_input: if current nesting level exceeds
+ MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal
+ and return to the top level. Reported by Christian Klomp
+ <christianklomp@gmail.com>
+
+lib/readine/history.c
+ - add_history: if allocating the history list for the first time,
+ make sure the max history list size isn't so large that it will
+ cause allocation errors. Cap it at MAX_HISTORY_INITIAL_SIZE
+ (8192). Reported by Sean Zha <freeman_cha@hotmail.com>
+
+jobs.c
+ - wait_for: if a foreground job with job control enabled is killed by a
+ SIGINT and sourcelevel != 0, act as if we received the SIGINT so the
+ file sourcing can be terminated. Reported by PePa
+ <peterkelly@passchier.net>
diff --git a/array.c b/array.c
index 6a6db77..902552f 100644
--- a/array.c
+++ b/array.c
@@ -67,6 +67,8 @@ static ARRAY_ELEMENT *lastref = 0;
(IS_LASTREF(a) && i >= element_index(lastref)) ? lastref \
: element_forw(a->head)
+#define LASTREF(a) IS_LASTREF(a) ? lastref : element_forw(a->head)
+
#define INVALIDATE_LASTREF(a) \
do { \
if ((a) == lastarray) { \
@@ -711,17 +713,31 @@ ARRAY *a;
arrayind_t i;
{
register ARRAY_ELEMENT *ae, *start;
+ arrayind_t startind;
+ int direction;
if (a == 0 || array_empty(a))
return((char *) NULL);
if (i > array_max_index(a))
return((char *)NULL); /* Keep roving pointer into array to optimize sequential access */
- start = LASTREF_START(a, i);
- for (ae = start; ae != a->head; ae = element_forw(ae))
+ start = LASTREF(a); /* lastref pointer */
+ startind = element_index(start);
+ if (i < startind/2) { /* XXX - guess */
+ start = element_forw(a->head);
+ startind = element_index(start);
+ direction = 1;
+ } else if (i >= startind) {
+ direction = 1;
+ } else {
+ direction = -1;
+ }
+ for (ae = start; ae != a->head; ) {
if (element_index(ae) == i) {
SET_LASTREF(a, ae);
return(element_value(ae));
}
+ ae = (direction == 1) ? element_forw(ae) : element_back(ae);
+ }
UNSET_LASTREF(); /* XXX SET_LASTREF(a, start) ? */
return((char *) NULL);
}
diff --git a/arrayfunc.c b/arrayfunc.c
index 47c595e..b3176f8 100644
--- a/arrayfunc.c
+++ b/arrayfunc.c
@@ -760,9 +760,10 @@ quote_array_assignment_chars (list)
`[' of an array subscript and removes the array element to which SUB
expands from array VAR. A subscript of `*' or `@' unsets the array. */
int
-unbind_array_element (var, sub)
+unbind_array_element (var, sub, flags)
SHELL_VAR *var;
char *sub;
+ int flags;
{
int len;
arrayind_t ind;
@@ -790,7 +791,7 @@ unbind_array_element (var, sub)
if (assoc_p (var))
{
- akey = expand_assignment_string_to_string (sub, 0); /* [ */
+ akey = (flags & 1) ? sub : expand_assignment_string_to_string (sub, 0);
if (akey == 0 || *akey == 0)
{
builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg));
@@ -798,7 +799,8 @@ unbind_array_element (var, sub)
return -1;
}
assoc_remove (assoc_cell (var), akey);
- free (akey);
+ if (akey != sub)
+ free (akey);
}
else if (array_p (var))
{
@@ -896,7 +898,7 @@ valid_array_reference (name, flags)
if (r == 0)
return 0;
/* Check for a properly-terminated non-blank subscript. */
- len = skipsubscript (t, 0, 0);
+ len = skipsubscript (t, 0, flags);
if (t[len] != ']' || len == 1)
return 0;
if (t[len+1] != '\0')
diff --git a/arrayfunc.h b/arrayfunc.h
index 5ee2759..bd0b5f5 100644
--- a/arrayfunc.h
+++ b/arrayfunc.h
@@ -52,7 +52,7 @@ extern WORD_LIST *expand_compound_array_assignment __P((SHELL_VAR *, char *, int
extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int));
extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int));
-extern int unbind_array_element __P((SHELL_VAR *, char *));
+extern int unbind_array_element __P((SHELL_VAR *, char *, int));
extern int skipsubscript __P((const char *, int, int));
extern void print_array_assignment __P((SHELL_VAR *, int));
diff --git a/builtins/declare.def b/builtins/declare.def
index f4819b4..276f538 100644
--- a/builtins/declare.def
+++ b/builtins/declare.def
@@ -120,6 +120,13 @@ int
local_builtin (list)
register WORD_LIST *list;
{
+ /* Catch a straight `local --help' before checking function context */
+ if (list && list->word && STREQ (list->word->word, "--help"))
+ {
+ builtin_help ();
+ return (EX_USAGE);
+ }
+
if (variable_context)
return (declare_internal (list, 1));
else
diff --git a/builtins/exec.def b/builtins/exec.def
index 7d7edce..1f4e222 100644
--- a/builtins/exec.def
+++ b/builtins/exec.def
@@ -190,8 +190,11 @@ exec_builtin (list)
/* Decrement SHLVL by 1 so a new shell started here has the same value,
preserving the appearance. After we do that, we need to change the
- exported environment to include the new value. */
- if (cleanenv == 0)
+ exported environment to include the new value. If we've already forked
+ and are in a subshell, we don't want to decrement the shell level,
+ since we are `increasing' the level */
+
+ if (cleanenv == 0 && (subshell_environment & SUBSHELL_PAREN) == 0)
adjust_shell_level (-1);
if (cleanenv)
diff --git a/builtins/mapfile.def b/builtins/mapfile.def
index 0d64f61..d3bf56f 100644
--- a/builtins/mapfile.def
+++ b/builtins/mapfile.def
@@ -59,7 +59,7 @@ $END
$BUILTIN readarray
$FUNCTION mapfile_builtin
-$SHORT_DOC readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
+$SHORT_DOC readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
Read lines from a file into an array variable.
A synonym for `mapfile'.
diff --git a/builtins/printf.def b/builtins/printf.def
index d39a6d3..0368781 100644
--- a/builtins/printf.def
+++ b/builtins/printf.def
@@ -711,8 +711,8 @@ printstr (fmt, string, len, fieldwidth, precision)
int fw, pr; /* fieldwidth and precision */
intmax_t mfw, mpr;
- if (string == 0 || len == 0)
- return 0;
+ if (string == 0)
+ string = "";
#if 0
s = fmt;
@@ -955,7 +955,9 @@ bexpand (string, len, sawc, lenp)
*sawc = 0;
if (lenp)
*lenp = 0;
- return ((char *)NULL);
+ ret = (char *)xmalloc (1);
+ ret[0] = '\0';
+ return (ret);
}
ret = (char *)xmalloc (len + 1);
diff --git a/builtins/set.def b/builtins/set.def
index 8122361..1c8ab33 100644
--- a/builtins/set.def
+++ b/builtins/set.def
@@ -859,7 +859,7 @@ unset_builtin (list)
#if defined (ARRAY_VARS)
unset_array = 0;
- if (!unset_function && nameref == 0 && valid_array_reference (name, 0))
+ if (!unset_function && nameref == 0 && valid_array_reference (name, 1)) /* XXX valid array reference second arg was 0 */
{
t = strchr (name, '[');
*t++ = '\0';
@@ -916,7 +916,11 @@ unset_builtin (list)
if (var && unset_array)
{
/* Let unbind_array_element decide what to do with non-array vars */
- tem = unbind_array_element (var, t);
+#if 0
+ tem = unbind_array_element (var, t, 1); /* XXX new third arg */
+#else
+ tem = unbind_array_element (var, t, 0); /* XXX new third arg */
+#endif
if (tem == -2 && array_p (var) == 0 && assoc_p (var) == 0)
{
builtin_error (_("%s: not an array variable"), var->name);
@@ -938,8 +942,12 @@ unset_builtin (list)
if (valid_array_reference (nameref_cell (var), 0))
{
tname = savestring (nameref_cell (var));
- if (var = array_variable_part (tname, &t, 0))
- tem = unbind_array_element (var, t);
+ if (var = array_variable_part (tname, &t, (int *)0))
+#if 0
+ tem = unbind_array_element (var, t, 1); /* XXX new third arg */
+#else
+ tem = unbind_array_element (var, t, 0); /* XXX new third arg */
+#endif
free (tname);
}
else
diff --git a/doc/bash.1 b/doc/bash.1
index 9a7a384..6ed8a99 100644
--- a/doc/bash.1
+++ b/doc/bash.1
@@ -3202,7 +3202,7 @@ format that can be reused as input.
.TP
.B E
The expansion is a string that is the value of \fIparameter\fP with backslash
-escape sequences expanded as with the \fB$'...'\fP quoting mechansim.
+escape sequences expanded as with the \fB$'...'\fP quoting mechanism.
.TP
.B P
The expansion is a string that is the result of expanding the value of
diff --git a/execute_cmd.c b/execute_cmd.c
index d185702..def409f 100644
--- a/execute_cmd.c
+++ b/execute_cmd.c
@@ -1532,11 +1532,9 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
set_sigint_handler ();
-#if defined (JOB_CONTROL)
/* Delete all traces that there were any jobs running. This is
only for subshells. */
without_job_control ();
-#endif /* JOB_CONTROL */
if (fds_to_close)
close_fd_bitmap (fds_to_close);
@@ -5162,6 +5160,11 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
if (command)
{
+ /* If we're optimizing out the fork (implicit `exec'), decrement the
+ shell level like `exec' would do. */
+ if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
+ adjust_shell_level (-1);
+
maybe_make_export_env ();
put_command_name_into_env (command);
}
diff --git a/expr.c b/expr.c
index 1ddb693..e5adf98 100644
--- a/expr.c
+++ b/expr.c
@@ -1267,7 +1267,7 @@ readtok ()
#if defined (ARRAY_VARS)
if (c == '[')
{
- e = skipsubscript (cp, 0, 0);
+ e = skipsubscript (cp, 0, 1); /* XXX - arg 3 was 0 */
if (cp[e] == ']')
{
cp += e + 1;
diff --git a/jobs.c b/jobs.c
index cef3c79..5b8cd51 100644
--- a/jobs.c
+++ b/jobs.c
@@ -2866,6 +2866,10 @@ if (job == NO_JOB)
loop. */
else if (signal_is_trapped (SIGINT) && loop_level)
ADDINTERRUPT;
+ /* If an interactive shell with job control enabled is sourcing
+ a file, allow the interrupt to terminate the file sourcing. */
+ else if (interactive_shell && signal_is_trapped (SIGINT) == 0 && sourcelevel)
+ ADDINTERRUPT;
else
{
putchar ('\n');
diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c
index edc5b95..f6bb09b 100644
--- a/lib/glob/smatch.c
+++ b/lib/glob/smatch.c
@@ -390,10 +390,10 @@ xstrmatch (pattern, string, flags)
wchar_t *wpattern, *wstring;
size_t plen, slen, mplen, mslen;
- if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0)
+ if (MB_CUR_MAX == 1)
return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags));
- if (MB_CUR_MAX == 1)
+ if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0)
return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags));
n = xdupmbstowcs (&wpattern, NULL, pattern);
diff --git a/lib/readline/history.c b/lib/readline/history.c
index 3b8dbc5..9ff25a7 100644
--- a/lib/readline/history.c
+++ b/lib/readline/history.c
@@ -57,6 +57,8 @@ extern int errno;
/* How big to make the_history when we first allocate it. */
#define DEFAULT_HISTORY_INITIAL_SIZE 502
+#define MAX_HISTORY_INITIAL_SIZE 8192
+
/* The number of slots to increase the_history by. */
#define DEFAULT_HISTORY_GROW_SIZE 50
@@ -307,7 +309,9 @@ add_history (string)
if (history_size == 0)
{
if (history_stifled && history_max_entries > 0)
- history_size = history_max_entries + 2;
+ history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
+ ? MAX_HISTORY_INITIAL_SIZE
+ : history_max_entries + 2;
else
history_size = DEFAULT_HISTORY_INITIAL_SIZE;
the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
diff --git a/lib/readline/macro.c b/lib/readline/macro.c
index c7017cc..8884e44 100644
--- a/lib/readline/macro.c
+++ b/lib/readline/macro.c
@@ -49,6 +49,8 @@
#include "rlprivate.h"
#include "xmalloc.h"
+#define MAX_MACRO_LEVEL 16
+
/* **************************************************************** */
/* */
/* Hacking Keyboard Macros */
@@ -83,12 +85,21 @@ struct saved_macro {
/* The list of saved macros. */
static struct saved_macro *macro_list = (struct saved_macro *)NULL;
+static int macro_level = 0;
+
/* Set up to read subsequent input from STRING.
STRING is free ()'ed when we are done with it. */
void
_rl_with_macro_input (string)
char *string;
{
+ if (macro_level > MAX_MACRO_LEVEL)
+ {
+ _rl_errmsg ("maximum macro execution nesting level exceeded");
+ _rl_abort_internal ();
+ return;
+ }
+
_rl_push_executing_macro ();
rl_executing_macro = string;
executing_macro_index = 0;
@@ -146,6 +157,8 @@ _rl_push_executing_macro ()
saver->string = rl_executing_macro;
macro_list = saver;
+
+ macro_level++;
}
/* Discard the current macro, replacing it with the one
@@ -168,6 +181,8 @@ _rl_pop_executing_macro ()
xfree (macro);
}
+ macro_level--;
+
if (rl_executing_macro == 0)
RL_UNSETSTATE(RL_STATE_MACROINPUT);
}
diff --git a/parse.y b/parse.y
index f415d2e..6076a1a 100644
--- a/parse.y
+++ b/parse.y
@@ -744,14 +744,14 @@ command: simple_command
COMMAND *tc;
tc = $1;
- if (tc->redirects)
+ if (tc && tc->redirects)
{
register REDIRECT *t;
for (t = tc->redirects; t->next; t = t->next)
;
t->next = $2;
}
- else
+ else if (tc)
tc->redirects = $2;
$$ = $1;
}
@@ -830,21 +830,25 @@ for_command: FOR WORD newline_list DO compound_list DONE
arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE
{
$$ = make_arith_for_command ($2, $6, arith_for_lineno);
+ /* if ($$ == 0) YYERROR; */
if (word_top > 0) word_top--;
}
| FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}'
{
$$ = make_arith_for_command ($2, $6, arith_for_lineno);
+ /* if ($$ == 0) YYERROR; */
if (word_top > 0) word_top--;
}
| FOR ARITH_FOR_EXPRS DO compound_list DONE
{
$$ = make_arith_for_command ($2, $4, arith_for_lineno);
+ /* if ($$ == 0) YYERROR; */
if (word_top > 0) word_top--;
}
| FOR ARITH_FOR_EXPRS '{' compound_list '}'
{
$$ = make_arith_for_command ($2, $4, arith_for_lineno);
+ /* if ($$ == 0) YYERROR; */
if (word_top > 0) word_top--;
}
;
@@ -928,14 +932,14 @@ function_body: shell_command
redirection. The two are semantically equivalent,
though -- the only difference is in how the
command printing code displays the redirections. */
- if (tc->redirects)
+ if (tc && tc->redirects)
{
register REDIRECT *t;
for (t = tc->redirects; t->next; t = t->next)
;
t->next = $2;
}
- else
+ else if (tc)
tc->redirects = $2;
$$ = $1;
}
@@ -958,14 +962,14 @@ coproc: COPROC shell_command
COMMAND *tc;
tc = $2;
- if (tc->redirects)
+ if (tc && tc->redirects)
{
register REDIRECT *t;
for (t = tc->redirects; t->next; t = t->next)
;
t->next = $3;
}
- else
+ else if (tc)
tc->redirects = $3;
$$ = make_coproc_command ("COPROC", $2);
$$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
@@ -980,14 +984,14 @@ coproc: COPROC shell_command
COMMAND *tc;
tc = $3;
- if (tc->redirects)
+ if (tc && tc->redirects)
{
register REDIRECT *t;
for (t = tc->redirects; t->next; t = t->next)
;
t->next = $4;
}
- else
+ else if (tc)
tc->redirects = $4;
$$ = make_coproc_command ($2->word, $3);
$$->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
@@ -4512,7 +4516,7 @@ cond_term ()
if (term)
term->flags |= CMD_INVERT_RETURN;
}
- else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
+ else if (tok == WORD && yylval.word->word[0] == '-' && yylval.word->word[1] && yylval.word->word[2] == 0 && test_unop (yylval.word->word))
{
op = yylval.word;
tok = read_token (READ);
@@ -4651,14 +4655,34 @@ token_is_assignment (t, i)
char *t;
int i;
{
- unsigned char c, c1;
int r;
+#if !defined (USING_BASH_MALLOC)
+ static char *token = 0;
+
+ token = xrealloc (token, i + 3);
+ memcpy (token, t, i);
+ token[i] = '=';
+ token[i+1] = '\0';
+
+ r = assignment (token, (parser_state & PST_COMPASSIGN) != 0);
+
+ if (i + 3 > 4096) /* keep it from getting too big */
+ {
+ free (token);
+ token = 0;
+ }
+#else
+ unsigned char c, c1;
+
c = t[i]; c1 = t[i+1];
t[i] = '='; t[i+1] = '\0';
r = assignment (t, (parser_state & PST_COMPASSIGN) != 0);
t[i] = c; t[i+1] = c1;
- return r;
+#endif
+ /* XXX - check that r == i to avoid returning false positive for
+ t containing `=' before t[i]. */
+ return (r > 0 && r == i);
}
/* XXX - possible changes here for `+=' */
diff --git a/po/eo.po b/po/eo.po
index f0a372e..9e30853 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -1,10 +1,10 @@
# Esperanto language file for GNU Bash.
# Copyright (C) 2011 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
-# Sergio Pokrovskij <sergio.pokrovskij@gmail.com>, 1998, 2006, 2009, 2011, 2014, 2015.
+# Sergio Pokrovskij <sergio.pokrovskij@gmail.com>, 1998, ... 2016.
#
-# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/bash-4.4/bash-4.4-beta/builtins"); -*-
-# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4-beta"); -*-
+# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4/builtins"); -*-
+# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4"); -*-
# Stilaj notoj:
# La angulaj citiloj limigas «plurajn vortojn»,
# 99-66 estas la citiloj de „unuvortaĵo‟
@@ -28,16 +28,17 @@
# unset malvalorizi (variablon); malaktivigi, malŝalti (opcion, nomon)
msgid ""
msgstr ""
-"Project-Id-Version: GNU bash 4.4-beta1\n"
+"Project-Id-Version: GNU bash 4.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-09-10 12:42-0400\n"
-"PO-Revision-Date: 2015-10-21 14:06+0300\n"
+"PO-Revision-Date: 2016-09-22 23:59+0700\n"
"Last-Translator: Sergio Pokrovskij <sergio.pokrovskij@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
+"Language: eo\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: arrayfunc.c:54
@@ -48,7 +49,7 @@ msgstr "Misa tabel-indico"
#: variables.c:2730
#, c-format
msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: ne plu nomreferenco (la atributo nameref forigitas)"
#: arrayfunc.c:393 builtins/declare.def:780
#, c-format
@@ -179,9 +180,8 @@ msgid "too many arguments"
msgstr "Tro multe da argumentoj"
#: builtins/cd.def:336
-#, fuzzy
msgid "null directory"
-msgstr "Ne estas alia dosierujo"
+msgstr "NUL-dosierujo"
#: builtins/cd.def:347
msgid "OLDPWD not set"
@@ -374,9 +374,9 @@ msgid "%s: circular name reference"
msgstr "%s: Cikla nomreferenco"
#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702
-#, fuzzy, c-format
+#, c-format
msgid "`%s': invalid variable name for name reference"
-msgstr "%s: Misa variablonomo por nomreferenco"
+msgstr "„%s“: Misa variablonomo por nomreferenco"
#: builtins/declare.def:463
msgid "cannot use `-f' to make functions"
@@ -531,8 +531,7 @@ msgstr[1] "Ŝelaj komandoj kongruaj kun la ŝlosilvortoj '"
#: builtins/help.def:187
#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
"Helpaĵo pri „%s‟ malestas.\n"
"Provu «help help» aŭ «man -k %s» aŭ «info %s»."
@@ -570,9 +569,9 @@ msgid "history position"
msgstr "pozicio en la historio"
#: builtins/history.def:264
-#, fuzzy, c-format
+#, c-format
msgid "%s: invalid timestamp"
-msgstr "%s: Maltaŭga argumento"
+msgstr "%s: Maltaŭga tempomarko"
#: builtins/history.def:375
#, c-format
@@ -712,12 +711,10 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Listigu la kurantan dosierujstakon. La dosierujoj trafas en\n"
@@ -837,8 +834,7 @@ msgstr "Lega (read) eraro: %d: %s"
#: builtins/return.def:71
msgid "can only `return' from a function or sourced script"
-msgstr ""
-"„return‟ sencas nur en funkcio aŭ punkte vokita („.‟, „source‟) skripto"
+msgstr "„return‟ sencas nur en funkcio aŭ punkte vokita („.‟, „source‟) skripto"
#: builtins/set.def:841
msgid "cannot simultaneously unset a function and a variable"
@@ -1035,7 +1031,7 @@ msgstr "TIMEFORMAT: „%c‟: Misa formatsigno"
#: execute_cmd.c:2273
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: la kunprocezo [%d:%s] ankoraŭ ekzistas"
#: execute_cmd.c:2377
msgid "pipe error"
@@ -1498,12 +1494,11 @@ msgstr "Tuj-dokumenton de linio %d limigas dosierfino (mankas „%s‟)"
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo"
+# internal_warning():
#: parse.y:2324
#, c-format
-msgid ""
-"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
-"truncated"
-msgstr ""
+msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
+msgstr "shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio tranĉita"
#: parse.y:2700
msgid "maximum here-document count exceeded"
@@ -1611,10 +1606,11 @@ msgstr "Neatendita dosierfino dum serĉo de responda „)‟"
msgid "completion: function `%s' not found"
msgstr "Kompletigo: Funkcio „%s‟ ne trovita"
+# XXX: internal_warning
#: pcomplete.c:1646
#, c-format
msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: ĉu ciklo de reprovoj?"
# XXX: programming_error
#: pcomplib.c:182
@@ -1714,9 +1710,10 @@ msgstr "Ne eblas ŝanĝi UID-on al %d: la efektiva UID estas %d"
msgid "cannot set gid to %d: effective gid %d"
msgstr "Ne eblas ŝanĝi GID-on al %d: la efektiva GID estas %d"
+# XXX: internal_warning
#: shell.c:1458
msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "Maleblas lanĉi erarserĉilon: la erarserĉa reĝimo malŝaltitas."
#: shell.c:1566
#, c-format
@@ -1777,14 +1774,12 @@ msgstr "Por raporti pri eraroj uzu la komandon „bashbug‟\n"
#: shell.c:1963
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
-"La hejmpaĝo de Baŝo (anglalingva): <http://www.gnu.org/software/bash>\n"
+msgstr "La hejmpaĝo de Baŝo (anglalingva): <http://www.gnu.org/software/bash>\n"
#: shell.c:1964
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr ""
-"Ĝenerala helpilo pri uzo de GNUa programaro: <http://www.gnu.org/gethelp/>\n"
+msgstr "Ĝenerala helpilo pri uzo de GNUa programaro: <http://www.gnu.org/gethelp/>\n"
# XXX: internal_error
#: sig.c:707
@@ -2034,9 +2029,8 @@ msgid "cannot duplicate named pipe %s as fd %d"
msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d"
#: subst.c:5959
-#, fuzzy
msgid "command substitution: ignored null byte in input"
-msgstr "Misa anstataŭigo: Mankas ferma „`‟ en %s"
+msgstr "Komanda anstataŭigo: nul-bajto en enigaĵo, ignorita"
#: subst.c:6083
msgid "cannot make pipe for command substitution"
@@ -2087,11 +2081,8 @@ msgstr "$%s: ĉi tiel ne valorizebla"
# XXX: internal warning:
#: subst.c:8802
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-"Ontaj versioj de la ŝelo plenumos komputon kiel aritmetikan anstataŭigon"
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
+msgstr "Ontaj versioj de la ŝelo plenumos komputon kiel aritmetikan anstataŭigon"
#: subst.c:9349
#, c-format
@@ -2148,8 +2139,7 @@ msgstr "run_pending_traps: Misa valoro en trap_list[%d]: %p"
# XXX: internal_warning
#: trap.c:391
#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: Signaltraktilo SIG_DFL resendas %d (%s) al mi mem"
#: trap.c:447
@@ -2179,9 +2169,9 @@ msgid "%s: variable may not be assigned value"
msgstr "%s: Variablo ne valorizebla"
#: variables.c:3043
-#, fuzzy, c-format
+#, c-format
msgid "%s: assigning integer to name reference"
-msgstr "%s: Misa variablonomo por nomreferenco"
+msgstr "%s: Nomreferenco valorizata per entjero"
# XXX: internal_error
#: variables.c:3940
@@ -2209,8 +2199,7 @@ msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟"
# XXX: internal_error
#: variables.c:4684
msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-"pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto"
+msgstr "pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto"
# XXX: internal_error
#: variables.c:4697
@@ -2241,14 +2230,11 @@ msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s kongruo-nivelo estas ekster sia variejo"
#: version.c:46 version2.c:46
-#, fuzzy
msgid "Copyright (C) 2016 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2015 ĉe «Free Software Foundation, Inc.»"
+msgstr "Copyright (C) 2016 ĉe «Free Software Foundation, Inc.»"
#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
msgstr ""
"La permesilo estas GPLv3+; t.e. GNU GPL, versio 3ª aŭ pli nova.\n"
"La tekston vd ĉe <http://gnu.org/licenses/gpl.html>\n"
@@ -2297,9 +2283,7 @@ msgid "unalias [-a] name [name ...]"
msgstr "unalias [-a] NOMO [NOMO ...]"
#: builtins.c:53
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
msgstr ""
"bind [-lpsvPSVX] [-m KLAVARTABELO] [-f DOSIERNOMO] [-q NOMO]\n"
" [-u NOMO] [-r KLAVAĴO] [-x KLAVAĴO:ŜELKOMANDO]\n"
@@ -2400,11 +2384,9 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [ŜABLONO ...]"
#: builtins.c:123
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
msgstr ""
-"history [-c] [-d DEŜOVO] [n] aŭ\n"
+"history [-c] [-d POZICIO] [n] aŭ\n"
"history -awr [DOSIERNOMO] aŭ\n"
"history -ps ARG [ARG...]"
@@ -2415,14 +2397,11 @@ msgstr ""
"jobs -x KOMANDO [ARGS]"
#: builtins.c:131
-#, fuzzy
msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [LABORINDIKO ...]"
+msgstr "disown [-h] [-ar] [LABORINDIKO ... | PROCEZNUMERO ...]"
#: builtins.c:134
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
msgstr ""
"kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] [PN | LABORINDIKO] ... aŭ\n"
"kill -l [SIGNOM]"
@@ -2432,9 +2411,7 @@ msgid "let arg [arg ...]"
msgstr "let ARG [ARG ...]"
#: builtins.c:138
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
msgstr ""
"read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO]\n"
" [-n NSIGN] [-N NSIGN] [-p INVIT] [-t TLIM]\n"
@@ -2529,12 +2506,8 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case VORTO in [ŜABLONO [| ŜABLONO]...) KOMANDOJ ;;]... esac"
#: builtins.c:194
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if KOMANDOJ; then KOMANDOJ; [ elif KOMANDOJ; then KOMANDOJ; ]... [ else "
-"KOMANDOJ; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if KOMANDOJ; then KOMANDOJ; [ elif KOMANDOJ; then KOMANDOJ; ]... [ else KOMANDOJ; ] fi"
#: builtins.c:196
msgid "while COMMANDS; do COMMANDS; done"
@@ -2595,19 +2568,14 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v VAR] FORMATO [ARGUMENTOJ]"
#: builtins.c:231
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o OPCIO] [-A AGO] [-G GLOBŜAB]\n"
" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB]\n"
" [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]"
#: builtins.c:235
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G GLOBŜAB]\n"
" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB]\n"
@@ -2618,17 +2586,13 @@ msgid "compopt [-o|+o option] [-DE] [name ...]"
msgstr "compopt [-o|+o OPCIO] [-DE] [NOMO ...]"
#: builtins.c:242
-msgid ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
+msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
msgstr ""
"mapfile [-d DISIG] [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n"
" [-C RETROVOKO] [-c KVANTO] [TABELO]"
#: builtins.c:244
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
msgstr ""
"readarray [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n"
" [-C RETROVOKO] [-c KVANTO] [TABELO]"
@@ -2649,8 +2613,7 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+" alias returns true unless a NAME is supplied for which no alias has been\n"
" defined."
msgstr ""
"Difinu aŭ listigu alinomojn.\n"
@@ -2702,30 +2665,25 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
+" -S List key sequences that invoke macros and their values\n"
+" -s List key sequences that invoke macros and their values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
+" -u function-name Unbind all keys which are bound to the named function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated "
-"commands\n"
+" -X List key sequences bound with -x and associated commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
@@ -2811,8 +2769,7 @@ msgid ""
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
+" as a shell function, but need to execute the builtin within the function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2864,22 +2821,16 @@ msgstr ""
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
+" Change the current directory to DIR. The default DIR is the value of the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
+" The variable CDPATH defines the search path for the directory containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
+" A null directory name is the same as the current directory. If DIR begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is set,\n"
+" the word is assumed to be a variable name. If that variable has a value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2895,13 +2846,11 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname "
-"component\n"
+" `..' is processed by removing the immediately previous pathname component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
" -P is used; non-zero otherwise."
msgstr ""
"Ŝanĝu la kurantan laboran dosierujon de la ŝelo.\n"
@@ -3015,8 +2964,7 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
+" information about the specified COMMANDs. Can be used to invoke commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -3077,8 +3025,7 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -3118,12 +3065,10 @@ msgstr ""
" komando „local‟. La opcio „-g‟ ĉi tiun efikon abolas.\n"
"\n"
" Eliistato:\n"
-" Sukceso, krom se aperas misa opcio aŭ okazas eraro ĉe valorizo de "
-"variablo."
+" Sukceso, krom se aperas misa opcio aŭ okazas eraro ĉe valorizo de variablo."
# typeset [-aAfFgilrtux] [-p] name[=value] ...
#: builtins.c:530
-#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3131,7 +3076,7 @@ msgid ""
msgstr ""
"Difinu atributojn kaj valorojn de variabloj\n"
"\n"
-" Arkaika. Vd «help declare»."
+" Sinonimo de „declare“. Vd «help declare»."
# local [option] name[=value] ...
# local [OPCIO] NOMO[=VALORO] ...
@@ -3166,8 +3111,7 @@ msgstr ""
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by "
-"a\n"
+" Display the ARGs, separated by a single space character and followed by a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -3307,8 +3251,7 @@ msgstr ""
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+" Combine ARGs into a single string, use the result as input to the shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3409,8 +3352,7 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3418,13 +3360,11 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+" If the command cannot be executed, a non-interactive shell exits, unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+" Returns success unless COMMAND is not found or a redirection error occurs."
msgstr ""
"Anstataŭigu la ŝelon je la donita komando\n"
"\n"
@@ -3463,8 +3403,7 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
+" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
"Adiaŭ, saluta ŝelo!\n"
@@ -3480,15 +3419,13 @@ msgstr ""
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+" fc is used to list or edit and re-execute commands from the history list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3502,8 +3439,7 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
+" Returns success or status of executed command; non-zero if an error occurs."
msgstr ""
"Eligu aŭ plenumu komandojn el la historilisto\n"
"\n"
@@ -3556,10 +3492,8 @@ msgstr ""
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3581,8 +3515,7 @@ msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
+" no arguments are given, information about remembered commands is displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3640,8 +3573,7 @@ msgid ""
" PATTERN\tPattern specifiying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
+" Returns success unless PATTERN is not found or an invalid option is given."
msgstr ""
"Vidigu informon pri prmitivaj komandoj\n"
"\n"
@@ -3664,11 +3596,10 @@ msgstr ""
# ZZZ history [-c] [-d offset] [n] or
# history -awr [filename] or
# history -ps arg [arg...] =>
-# history [-c] [-d DEŜOVO] [n] aŭ
+# history [-c] [-d POZICIO] [n] aŭ
# history -awr [DOSIERNOMO] aŭ
# history -ps ARG [ARG...]
#: builtins.c:836
-#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3695,8 +3626,7 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
+" with each displayed history entry. No time stamps are printed otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3709,7 +3639,7 @@ msgstr ""
"\n"
" Opcioj:\n"
" -c forviŝu la tutan historion (forigu ĉiujn erojn el la listo)\n"
-" -d forviŝu la linion kies numero estas DEŜOVO\n"
+" -d POZICIO forviŝu la linion kies numero estas POZICIO\n"
"\n"
" -a aldonu la historiliniojn de la kuranta seanco al la\n"
" historidosiero\n"
@@ -3824,7 +3754,6 @@ msgstr ""
# kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] PN | LABORINDIKO ... aŭ
# kill -l [SIGNOM]
#: builtins.c:918
-#, fuzzy
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3857,7 +3786,8 @@ msgstr ""
" -n\tSIGNUM estas numero de signalo\n"
" -l listigu signalnomojn; la eventuale sekvantaj entjeraj\n"
" argumentoj estas signalnumeroj, ĉeeste de kiuj nur la al\n"
-" ili respondaj signalnomoj estu eligataj.\n"
+" ili respondaj signalnomoj estu eligataj\n"
+" -L sinonimo por -l\n"
"\n"
" „kill‟ estas primitiva ŝelkomando pro du kaŭzoj:\n"
" unue, ĝi ebligas uzi laborindikojn anstataŭ proceznumerojn;\n"
@@ -3876,8 +3806,7 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
+" grouped into levels of equal-precedence operators. The levels are listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3964,16 +3893,13 @@ msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
+" if the -u option is supplied. The line is split into fields as with word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
+" the last NAME. Only the characters found in $IFS are recognized as word\n"
" delimiters.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3985,8 +3911,7 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -4004,10 +3929,8 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-" (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times out\n"
+" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Legu linion el la ĉefenigujo kaj disigu ĝin en kampojn\n"
@@ -4077,7 +4000,6 @@ msgstr ""
# set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
# set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...]
#: builtins.c:1047
-#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4120,8 +4042,7 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
+" or zero if no command exited with a non-zero status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -4145,8 +4066,7 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell "
-"functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -4230,8 +4150,8 @@ msgstr ""
" -P\tLa simbolaj ligiloj estu travideblaj ĉe plenumo de komandoj\n"
"\tkiuj ŝanĝas la kurantan dosierujon („cd‟ ktp uzu «fizikan»\n"
"\tinterpreton de vojnomo).\n"
-" -T\tSe aktiva, la DEBUG-kaptilon (DEBUG trap) heredas la ŝelaj\n"
-"\tfunkcioj\n"
+" -T\tSe aktiva, la ŝelaj funkcioj heredas la kaptilojn (Traps)\n"
+"\tDEBUG kaj RETURN \n"
" --\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n"
"\tSe tiaj argumentoj mankas, malvalorizu la numerparametrojn.\n"
" -\tLa restantajn argumentojn uzu por valorizi la numerparametrojn.\n"
@@ -4260,8 +4180,7 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+" Without options, unset first tries to unset a variable, and if that fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4294,8 +4213,7 @@ msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4466,8 +4384,7 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
+" -N FILE True if the file has been modified since it was last read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4488,8 +4405,7 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+" True if STRING1 sorts before STRING2 lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4603,8 +4519,7 @@ msgstr ""
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
+" Prints the accumulated user and system times for the shell and all of its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4624,8 +4539,7 @@ msgstr ""
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
+" Defines and activates handlers to be run when the shell receives signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4634,34 +4548,26 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+" If no arguments are supplied, trap prints the list of commands associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
+" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\n"
" Signal names are case insensitive and the SIG prefix is optional. A\n"
" signal may be sent to the shell with \"kill -signal $$\".\n"
" \n"
" Exit Status:\n"
-" Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
+" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
"Kaptu signalojn kaj aliajn eventojn\n"
"\n"
@@ -4725,8 +4631,7 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
"Vidigu informon pri tipo de komando\n"
"\n"
@@ -4761,8 +4666,7 @@ msgstr ""
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
+" Provides control over the resources available to the shell and processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4892,12 +4796,10 @@ msgstr ""
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
+" Waits for each process identified by an ID, which may be a process ID or a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
-" status is zero. If ID is a a job specification, waits for all "
-"processes\n"
+" status is zero. If ID is a a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
" If the -n option is supplied, waits for the next job to terminate and\n"
@@ -4928,14 +4830,12 @@ msgstr ""
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination "
-"status.\n"
+" Waits for each process specified by a PID and reports its termination status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
" option is given."
msgstr ""
"Atendu ke procezoj finiĝu, kaj liveru elirstaton\n"
@@ -5100,17 +5000,12 @@ msgstr ""
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
+" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of the\n"
+" entire construct is the exit status of the last command executed, or zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -5169,7 +5064,6 @@ msgstr ""
# coproc [NAME] command [redirections]
# coproc [NOMO] KOMANDO [ALIDIREKTADOJ]
#: builtins.c:1653
-#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5189,7 +5083,7 @@ msgstr ""
" „COPROC‟.\n"
"\n"
" Elirstato:\n"
-" Tiu de KOMANDO."
+" La komando coproc liveras la elirstaton 0."
# function name { COMMANDS ; } or name () { COMMANDS ; }
# function NOMO { KOMANDOJ ; } aŭ NOMO () { KOMANDOJ ; }
@@ -5198,8 +5092,7 @@ msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -5287,12 +5180,9 @@ msgstr ""
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries used\n"
+" by the `test' builtin, and may be combined using the following operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5608,8 +5498,7 @@ msgid ""
"Set and unset shell options.\n"
" \n"
" Change the setting of each shell option OPTNAME. Without any option\n"
-" arguments, list all shell options with an indication of whether or not "
-"each\n"
+" arguments, list all shell options with an indication of whether or not each\n"
" is set.\n"
" \n"
" Options:\n"
@@ -5650,34 +5539,27 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
+" FORMAT is a character string which contains three types of objects: plain\n"
+" characters, which are simply copied to standard output; character escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
+" format specifications, each of which causes printing of the next successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in printf"
-"(1),\n"
+" In addition to the standard format specifications described in printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a "
-"format\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as "
-"appropriate,\n"
+" specifications behave as if a zero value or null string, as appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
+" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
"Aranĝu kaj eligu ARGUMENTOJn laŭ FORMATO.\n"
@@ -5713,10 +5595,8 @@ msgstr ""
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
+" For each NAME, specify how arguments are to be completed. If no options\n"
+" are supplied, existing completion specifications are printed in a way that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5767,8 +5647,7 @@ msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
+" completions. If the optional WORD argument is supplied, matches against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5787,12 +5666,9 @@ msgstr ""
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, print\n"
+" the completion options for each NAME or the current completion specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5846,22 +5722,17 @@ msgstr ""
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
+" Read lines from the standard input into the indexed array variable ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard "
-"input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -5874,13 +5745,11 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
"Legu liniojn el la ĉefenigujo en tabelvariablon\n"
@@ -5928,18 +5797,3 @@ msgstr ""
"Legu liniojn el dosiero en tabelvariablon.\n"
"\n"
" Sinonimo de „mapfile‟."
-
-#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2014 ĉe «Free Software Foundation, Inc.»"
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
diff --git a/subst.c b/subst.c
index f1a4df1..c63cd0d 100644
--- a/subst.c
+++ b/subst.c
@@ -1683,7 +1683,8 @@ unquote_bang (string)
parse array subscripts. FLAGS & 1 means to not attempt to skip over
matched pairs of quotes or backquotes, or skip word expansions; it is
intended to be used after expansion has been performed and during final
- assignment parsing (see arrayfunc.c:assign_compound_array_list()). */
+ assignment parsing (see arrayfunc.c:assign_compound_array_list()) or
+ during execution by a builtin which has already undergone word expansion. */
static int
skip_matched_pair (string, start, open, close, flags)
const char *string;
@@ -1712,7 +1713,7 @@ skip_matched_pair (string, start, open, close, flags)
ADVANCE_CHAR (string, slen, i);
continue;
}
- else if (c == '\\')
+ else if ((flags & 1) == 0 && c == '\\')
{
pass_next = 1;
i++;
diff --git a/test.c b/test.c
index ee63420..cf762df 100644
--- a/test.c
+++ b/test.c
@@ -670,7 +670,7 @@ test_binop (op)
else if (op[2] == '\0' && op[1] == '~' && (op[0] == '=' || op[0] == '!'))
return (1);
#endif
- else if (op[0] != '-' || op[2] == '\0' || op[3] != '\0')
+ else if (op[0] != '-' || op[1] == '\0' || op[2] == '\0' || op[3] != '\0')
return (0);
else
{
diff --git a/tests/RUN-ONE-TEST b/tests/RUN-ONE-TEST
index d29259a..a5ab273 100755
--- a/tests/RUN-ONE-TEST
+++ b/tests/RUN-ONE-TEST
@@ -1,4 +1,4 @@
-BUILD_DIR=/usr/local/build/chet/bash/bash-current
+BUILD_DIR=/usr/local/build/bash/bash-current
THIS_SH=$BUILD_DIR/bash
PATH=$PATH:$BUILD_DIR
diff --git a/tests/heredoc.right b/tests/heredoc.right
index 137a295..eec1ccd 100644
--- a/tests/heredoc.right
+++ b/tests/heredoc.right
@@ -20,7 +20,7 @@ jkl mno
fff is a function
fff ()
{
- ed /tmp/foo > /dev/null <<ENDOFINPUT
+ ed /tmp/foo <<ENDOFINPUT > /dev/null
/^name/d
w
q
@@ -31,7 +31,7 @@ ENDOFINPUT
fff is a function
fff ()
{
- ed /tmp/foo > /dev/null <<ENDOFINPUT
+ ed /tmp/foo <<ENDOFINPUT > /dev/null
/^name/d
w
q
@@ -43,11 +43,11 @@ foo is a function
foo ()
{
echo;
- cat <<END
+ cat <<END
bar
END
- cat <<EOF
+ cat <<EOF
qux
EOF
diff --git a/tests/printf.right b/tests/printf.right
index ae34a89..593f084 100644
--- a/tests/printf.right
+++ b/tests/printf.right
@@ -148,6 +148,7 @@ b
xx
xx
+< >< >
one
one\ctwo
4\.2
diff --git a/tests/printf.tests b/tests/printf.tests
index e72f5c8..9dbac6f 100644
--- a/tests/printf.tests
+++ b/tests/printf.tests
@@ -308,6 +308,9 @@ shopt -s nullglob extglob
echo "x$(printf "%b" @(hugo))x"
printf -v var "%b" @(hugo); echo "x${var}x"
+# make sure that missing arguments are always handled like the empty string
+printf "<%3s><%3b>\n"
+
# tests variable assignment with -v
${THIS_SH} ./printf1.sub
@@ -316,4 +319,3 @@ ${THIS_SH} ./printf2.sub
${THIS_SH} ./printf3.sub
${THIS_SH} ./printf4.sub
-
diff --git a/tests/type.right b/tests/type.right
index 3f7d26e..7ec6bfb 100644
--- a/tests/type.right
+++ b/tests/type.right
@@ -65,11 +65,11 @@ foo is a function
foo ()
{
echo;
- cat <<END
+ cat <<END
bar
END
- cat <<EOF
+ cat <<EOF
qux
EOF
@@ -86,7 +86,7 @@ foo ()
rm -f a b c;
for f in a b c;
do
- cat >> ${f} <<-EOF
+ cat <<-EOF >> ${f}
file
EOF
@@ -99,7 +99,7 @@ c:file
bb is a function
bb ()
{
- ( cat <<EOF
+ ( cat <<EOF
foo
bar
EOF
@@ -110,13 +110,13 @@ mkcoprocs is a function
mkcoprocs ()
{
coproc a {
- cat <<EOF1
+ cat <<EOF1
producer 1
EOF1
}
coproc b {
- cat <<EOF2
+ cat <<EOF2
producer 2
EOF2
@@ -126,7 +126,7 @@ EOF2
mkcoprocs is a function
mkcoprocs ()
{
- coproc COPROC ( b cat <<EOF
+ coproc COPROC ( b cat <<EOF
heredoc
body
EOF
diff --git a/tests/vredir.right b/tests/vredir.right
index 3985f22..f449ae6 100644
--- a/tests/vredir.right
+++ b/tests/vredir.right
@@ -27,7 +27,7 @@ line 3
bar is a function
bar ()
{
- exec {v}<<EOF
+ exec {v}<<EOF
line 1
line 2
line 3
diff --git a/variables.c b/variables.c
index be2446e..2e8b38c 100644
--- a/variables.c
+++ b/variables.c
@@ -3030,7 +3030,7 @@ bind_int_variable (lhs, rhs)
v = bind_array_variable (lhs, 0, rhs, 0);
else
#endif
- v = bind_variable (lhs, rhs, 0);
+ v = bind_variable (lhs, rhs, 0); /* why not use bind_variable_value? */
if (v)
{
@@ -3960,7 +3960,7 @@ static int
visible_array_vars (var)
SHELL_VAR *var;
{
- return (invisible_p (var) == 0 && array_p (var));
+ return (invisible_p (var) == 0 && (array_p (var) || assoc_p (var)));
}
SHELL_VAR **