commit bash-20080918 snapshot

This commit is contained in:
Chet Ramey
2011-12-07 09:29:06 -05:00
parent 14e8b2a7df
commit f1c4df2484
37 changed files with 2847 additions and 950 deletions
+32
View File
@@ -6902,3 +6902,35 @@ variables.c
a value, whether or not a variable with the same name existed in a
previous context. This is consistent with ksh93. Fix from
<neil@s-z.org>
9/16
----
execute_cmd.c
- add call to CHECK_TERMSIG in shell_execve after the call to execve
returns. Recommended by Roman Rakus <rrakus@redhat.com>
- add QUIT check in execute_connection after executing first command
in a `&' connection
9/22
----
execute_cmd.c
- new semaphore variable, executing_list, incremented every time a
list (command1;command2 or command1 || command2 or command1 &&
command2) is executed; used as sentinel for rest of shell
sig.c,builtins/evalstring.c
- set executing_list to 0 when throwing execution back to top level;
make sure to unwind-protect it in appropriate places
jobs.c
- if a pipeline is killed by SIGINT while executing a list (when
executing_list is non-zero), make sure the shell acts as if an
interrupt occurred. The behavior is dependent on the shell
compatibility level being > 32 (bash-4.0 and above)
9/24
----
builtins/declare.def
- make `declare [option] var' (and the `typeset' equivalent) create
invisible variables, instead of assigning the null string to a
visible variable.
+38
View File
@@ -6896,3 +6896,41 @@ builtins/return.def
builtins/bind.def
- add an error message when bind is used without line editing active,
instead of just returning an error status
variables.c
- make sure make_local_variable never creates visible variables with
a value, whether or not a variable with the same name existed in a
previous context. This is consistent with ksh93. Fix from
<neil@s-z.org>
9/16
----
execute_cmd.c
- add call to CHECK_TERMSIG in shell_execve after the call to execve
returns. Recommended by Roman Rakus <rrakus@redhat.com>
- add QUIT check in execute_connection after executing first command
in a `&' connection
9/22
----
execute_cmd.c
- new semaphore variable, executing_list, incremented every time a
list (command1;command2 or command1 || command2 or command1 &&
command2) is executed; used as sentinel for rest of shell
sig.c,builtins/evalstring.c
- set executing_list to 0 when throwing execution back to top level;
make sure to unwind-protect it in appropriate places
jobs.c
- if a pipeline is killed by SIGINT while executing a list (when
executing_list is non-zero), make sure the shell acts as if an
interrupt occurred. The behavior is dependent on the shell
compatibility level being > 32 (bash-4.0 and above)
9/24
----
builtins/declare.def
- make `declare [option] var' (and the `typeset' equivalent) create
invisible variables, instead of assigning the null string to a
visible variable
+8 -1
View File
@@ -414,7 +414,14 @@ declare_internal (list, local_var)
var = make_new_array_variable (name);
else
#endif
var = bind_variable (name, "", 0);
if (offset)
var = bind_variable (name, "", 0);
else
{
var = bind_variable (name, (char *)NULL, 0);
VSETATTR (var, att_invisible);
}
}
/* Cannot use declare +r to turn off readonly attribute. */
+98 -35
View File
@@ -5,25 +5,24 @@ Copyright (C) 1987-2008 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
Bash is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with Bash; see the file COPYING. If not, write to the Free Software
Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
$PRODUCES declare.c
$BUILTIN declare
$FUNCTION declare_builtin
$SHORT_DOC declare [-afFirtx] [-p] [name[=value] ...]
$SHORT_DOC declare [-aAfFilrtux] [-p] [name[=value] ...]
Set variable values and attributes.
Declare variables and give them attributes. If no NAMEs are given,
@@ -36,10 +35,13 @@ Options:
-p display the attributes and value of each NAME
Options which set attributes:
-a to make NAMEs arrays (if supported)
-a to make NAMEs indexed arrays (if supported)
-A to make NAMEs associative arrays (if supported)
-i to make NAMEs have the `integer' attribute
-l to convert NAMEs to lower case on assignment
-r to make NAMEs readonly
-t to make NAMEs have the `trace' attribute
-u to convert NAMEs to upper case on assignment
-x to make NAMEs export
Using `+' instead of `-' turns off the given attribute.
@@ -56,7 +58,7 @@ $END
$BUILTIN typeset
$FUNCTION declare_builtin
$SHORT_DOC typeset [-afFirtx] [-p] name[=value] ...
$SHORT_DOC typeset [-aAfFilrtux] [-p] name[=value] ...
Set variable values and attributes.
Obsolete. See `help declare'.
@@ -123,9 +125,9 @@ local_builtin (list)
}
#if defined (ARRAY_VARS)
# define DECLARE_OPTS "+afiprtxF"
# define DECLARE_OPTS "+acfilprtuxAF"
#else
# define DECLARE_OPTS "+fiprtxF"
# define DECLARE_OPTS "+cfilprtuxF"
#endif
/* The workhorse function. */
@@ -134,7 +136,8 @@ declare_internal (list, local_var)
register WORD_LIST *list;
int local_var;
{
int flags_on, flags_off, *flags, any_failed, assign_error, pflag, nodefs, opt;
int flags_on, flags_off, *flags;
int any_failed, assign_error, pflag, nodefs, opt;
char *t, *subscript_start;
SHELL_VAR *var;
FUNCTION_DEF *shell_fn;
@@ -150,8 +153,19 @@ declare_internal (list, local_var)
case 'a':
#if defined (ARRAY_VARS)
*flags |= att_array;
#endif
break;
#else
builtin_usage ();
return (EX_USAGE);
#endif
case 'A':
#if defined (ARRAY_VARS)
*flags |= att_assoc;
break;
#else
builtin_usage ();
return (EX_USAGE);
#endif
case 'p':
if (local_var == 0)
pflag++;
@@ -176,6 +190,25 @@ declare_internal (list, local_var)
*flags |= att_exported;
array_needs_making = 1;
break;
#if defined (CASEMOD_ATTRS)
# if defined (CASEMOD_CAPCASE)
case 'c':
*flags |= att_capcase;
if (flags == &flags_on)
flags_off |= att_uppercase|att_lowercase;
break;
# endif
case 'l':
*flags |= att_lowercase;
if (flags == &flags_on)
flags_off |= att_capcase|att_uppercase;
break;
case 'u':
*flags |= att_uppercase;
if (flags == &flags_on)
flags_off |= att_capcase|att_lowercase;
break;
#endif /* CASEMOD_ATTRS */
default:
builtin_usage ();
return (EX_USAGE);
@@ -186,7 +219,7 @@ declare_internal (list, local_var)
/* If there are no more arguments left, then we just want to show
some variables. */
if (list == 0) /* declare -[afFirtx] */
if (list == 0) /* declare -[aAfFirtx] */
{
/* Show local variables defined at this context level if this is
the `local' builtin. */
@@ -215,7 +248,7 @@ declare_internal (list, local_var)
return (sh_chkwrite (EXECUTION_SUCCESS));
}
if (pflag) /* declare -p [-afFirtx] name [name...] */
if (pflag) /* declare -p [-aAfFirtx] name [name...] */
{
for (any_failed = 0; list; list = list->next)
{
@@ -232,7 +265,7 @@ declare_internal (list, local_var)
#define NEXT_VARIABLE() free (name); list = list->next; continue
/* There are arguments left, so we are making variables. */
while (list) /* declare [-afFirx] name [name ...] */
while (list) /* declare [-aAfFirx] name [name ...] */
{
char *value, *name;
int offset, aflags;
@@ -244,7 +277,7 @@ declare_internal (list, local_var)
offset = assignment (name, 0);
aflags = 0;
if (offset) /* declare [-afFirx] name=value */
if (offset) /* declare [-aAfFirx] name=value */
{
name[offset] = '\0';
value = name + offset + 1;
@@ -291,7 +324,9 @@ declare_internal (list, local_var)
if (variable_context && ((flags_on & att_function) == 0))
{
#if defined (ARRAY_VARS)
if ((flags_on & att_array) || making_array_special)
if (flags_on & att_assoc)
var = make_local_assoc_variable (name);
else if ((flags_on & att_array) || making_array_special)
var = make_local_array_variable (name);
else
#endif
@@ -364,7 +399,7 @@ declare_internal (list, local_var)
NEXT_VARIABLE ();
}
}
else /* declare -[airx] name [name...] */
else /* declare -[aAirx] name [name...] */
{
/* Non-null if we just created or fetched a local variable. */
if (var == 0)
@@ -373,11 +408,21 @@ declare_internal (list, local_var)
if (var == 0)
{
#if defined (ARRAY_VARS)
if ((flags_on & att_array) || making_array_special)
if (flags_on & att_assoc)
var = make_new_assoc_variable (name);
else if ((flags_on & att_array) || making_array_special)
var = make_new_array_variable (name);
else
#endif
var = bind_variable (name, "", 0);
if (offset)
var = bind_variable (name, "", 0);
else
{
var = bind_variable (name, (char *)NULL, 0);
VSETATTR (var, att_invisible);
}
#endif
}
/* Cannot use declare +r to turn off readonly attribute. */
@@ -399,30 +444,48 @@ declare_internal (list, local_var)
}
#if defined (ARRAY_VARS)
if ((making_array_special || (flags_on & att_array) || array_p (var)) && offset)
if ((making_array_special || (flags_on & (att_array|att_assoc)) || array_p (var) || assoc_p (var)) && offset)
{
int vlen;
vlen = STRLEN (value);
#if 0
if (value[0] == '(' && strchr (value, ')'))
#else
if (value[0] == '(' && value[vlen-1] == ')')
#endif
compound_array_assign = 1;
else
simple_array_assign = 1;
}
/* Cannot use declare +a name to remove an array variable. */
if ((flags_off & att_array) && array_p (var))
/* Cannot use declare +a name or declare +A name to remove an
array variable. */
if (((flags_off & att_array) && array_p (var)) || ((flags_off & att_assoc) && assoc_p (var)))
{
builtin_error (_("%s: cannot destroy array variables in this way"), name);
any_failed++;
NEXT_VARIABLE ();
}
/* declare -a name makes name an array variable. */
if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0)
if ((flags_on & att_array) && assoc_p (var))
{
builtin_error (_("%s: cannot convert associative to indexed array"), name);
any_failed++;
NEXT_VARIABLE ();
}
if ((flags_on & att_assoc) && array_p (var))
{
builtin_error (_("%s: cannot convert indexed to associative array"), name);
any_failed++;
NEXT_VARIABLE ();
}
/* declare -A name[[n]] makes name an associative array variable. */
if (flags_on & att_assoc)
{
if (assoc_p (var) == 0)
var = convert_var_to_assoc (var);
}
/* declare -a name[[n]] or declare name[n] makes name an indexed
array variable. */
else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0)
var = convert_var_to_array (var);
#endif /* ARRAY_VARS */
+2
View File
@@ -64,6 +64,7 @@ extern int current_token, shell_eof_token;
extern int last_command_exit_value;
extern int running_trap;
extern int loop_level;
extern int executing_list;
extern int posixly_correct;
int parse_and_execute_level = 0;
@@ -110,6 +111,7 @@ parse_prologue (string, flags, tag)
unwind_protect_int (indirection_level);
unwind_protect_int (line_number);
unwind_protect_int (loop_level);
unwind_protect_int (executing_list);
if (flags & (SEVAL_NONINT|SEVAL_INTERACT))
unwind_protect_int (interactive);
+18
View File
@@ -4,6 +4,24 @@
* no options - the way cat was intended
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <fcntl.h>
#include <errno.h>
+17
View File
@@ -0,0 +1,17 @@
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
+18
View File
@@ -2,6 +2,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#if defined (HAVE_UNISTD_H)
+3
View File
@@ -1,5 +1,8 @@
/*
* finfo - print file info
*
* Chet Ramey
* chet@po.cwru.edu
*/
#ifdef HAVE_CONFIG_H
+18
View File
@@ -2,6 +2,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "bashtypes.h"
+18
View File
@@ -9,6 +9,24 @@
* uid=xxx(chet) gid=xx groups=aa(aname), bb(bname), cc(cname)
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include <stdio.h>
#include "bashtypes.h"
+18
View File
@@ -2,6 +2,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "bashtypes.h"
+18
View File
@@ -1,5 +1,23 @@
/* logname - print login name of current user */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#if defined (HAVE_UNISTD_H)
+18
View File
@@ -2,6 +2,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include "bashtypes.h"
+18
View File
@@ -3,6 +3,24 @@
/* Sample builtin to be dynamically loaded with enable -f and replace an
existing builtin. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include "builtins.h"
#include "shell.h"
+18
View File
@@ -22,6 +22,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include <sys/types.h>
+18
View File
@@ -2,6 +2,24 @@
* print -- loadable ksh-93 style print builtin
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
+18
View File
@@ -5,6 +5,24 @@
*
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include <stdio.h>
+18
View File
@@ -3,6 +3,24 @@
*
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include <stdio.h>
#include <errno.h>
+18
View File
@@ -18,6 +18,24 @@
* chet@po.cwru.edu
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <sys/types.h>
+18
View File
@@ -2,6 +2,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <stdio.h>
+19
View File
@@ -3,6 +3,25 @@
*
* usage: sleep seconds[.fraction]
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "bashtypes.h"
+18
View File
@@ -2,6 +2,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#if defined (HAVE_UNISTD_H)
+18
View File
@@ -1,5 +1,23 @@
/* sync - sync the disks by forcing pending filesystem writes to complete */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#ifdef HAVE_UNISTD_H
+18
View File
@@ -2,6 +2,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "bashtypes.h"
+19
View File
@@ -1,4 +1,23 @@
/* true and false builtins */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include "bashtypes.h"
+18
View File
@@ -2,6 +2,24 @@
/* See Makefile for compilation details. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <stdio.h>
+18
View File
@@ -5,6 +5,24 @@
*
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include <stdio.h>
+18
View File
@@ -3,6 +3,24 @@
/* Should only be used to remove directories by a superuser prepared to let
fsck clean up the file system. */
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#ifdef HAVE_UNISTD_H
+18
View File
@@ -2,6 +2,24 @@
* whoami - print out username of current user
*/
/*
Copyright (C) 1999-2008 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include <stdio.h>
+11
View File
@@ -230,6 +230,9 @@ REDIRECT *exec_redirection_undo_list = (REDIRECT *)NULL;
currently executing (e.g. `eval echo a' would have it set to 2). */
int executing_builtin = 0;
/* Non-zero if we are executing a command list (a;b;c, etc.) */
int executing_list = 0;
/* Non-zero if we have just forked and are currently running in a subshell
environment. */
int subshell_environment;
@@ -2052,6 +2055,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
tc->flags |= CMD_STDIN_REDIR;
exec_result = execute_command_internal (tc, 1, pipe_in, pipe_out, fds_to_close);
QUIT;
if (tc->flags & CMD_STDIN_REDIR)
tc->flags &= ~CMD_STDIN_REDIR;
@@ -2076,12 +2080,14 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
if (command->value.Connection->second)
command->value.Connection->second->flags |= CMD_IGNORE_RETURN;
}
executing_list++;
QUIT;
execute_command (command->value.Connection->first);
QUIT;
exec_result = execute_command_internal (command->value.Connection->second,
asynchronous, pipe_in, pipe_out,
fds_to_close);
executing_list--;
break;
case '|':
@@ -2107,6 +2113,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
and the connector is OR_OR, then execute the second command,
otherwise return. */
executing_list++;
if (command->value.Connection->first)
command->value.Connection->first->flags |= CMD_IGNORE_RETURN;
@@ -2122,6 +2129,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
exec_result = execute_command (command->value.Connection->second);
}
executing_list--;
break;
default:
@@ -4502,6 +4510,8 @@ initialize_subshell ()
/* We're no longer inside a shell function. */
variable_context = return_catch_flag = 0;
executing_list = 0; /* XXX */
/* If we're not interactive, close the file descriptor from which we're
reading the current shell script. */
if (interactive_shell == 0)
@@ -4543,6 +4553,7 @@ shell_execve (command, args, env)
SETOSTYPE (0); /* Some systems use for USG/POSIX semantics */
execve (command, args, env);
i = errno; /* error from execve() */
CHECK_TERMSIG;
SETOSTYPE (1);
/* If we get to this point, then start checking out the file.
+225 -18
View File
@@ -4,19 +4,20 @@
This file is part of GNU Bash, the Bourne Again SHell.
Bash is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX)
@@ -229,6 +230,9 @@ REDIRECT *exec_redirection_undo_list = (REDIRECT *)NULL;
currently executing (e.g. `eval echo a' would have it set to 2). */
int executing_builtin = 0;
/* Non-zero if we are executing a command list (a;b;c, etc.) */
int executing_list = 0;
/* Non-zero if we have just forked and are currently running in a subshell
environment. */
int subshell_environment;
@@ -1312,7 +1316,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
do_piping (pipe_in, pipe_out);
#if defined (COPROCESS_SUPPORT)
coproc_close (&sh_coproc);
coproc_closeall ();
#endif
/* If this is a user subshell, set a flag if stdin was redirected.
@@ -1404,10 +1408,183 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
}
#if defined (COPROCESS_SUPPORT)
#define COPROC_MAX 16
typedef struct cpelement
{
struct cpelement *next;
struct coproc *coproc;
}
cpelement_t;
typedef struct cplist
{
struct cpelement *head;
struct cpelement *tail;
int ncoproc;
}
cplist_t;
static struct cpelement *cpe_alloc __P((struct coproc *));
static void cpe_dispose __P((struct cpelement *));
static struct cpelement *cpl_add __P((struct coproc *));
static struct cpelement *cpl_delete __P((pid_t));
static void cpl_flush __P((void));
static struct cpelement *cpl_search __P((pid_t));
static struct cpelement *cpl_searchbyname __P((char *));
static void cpl_prune __P((void));
Coproc sh_coproc = { 0, NO_PID, -1, -1, 0, 0 };
cplist_t coproc_list = {0, 0, 0};
/* Functions to manage the list of exited background pids whose status has
been saved. */
static struct cpelement *
cpe_alloc (cp)
Coproc *cp;
{
struct cpelement *cpe;
cpe = (struct cpelement *)xmalloc (sizeof (struct cpelement));
cpe->coproc = cp;
cpe->next = (struct cpelement *)0;
return cpe;
}
static void
cpe_dispose (cpe)
struct cpelement *cpe;
{
free (cpe);
}
static struct cpelement *
cpl_add (cp)
Coproc *cp;
{
struct cpelement *cpe;
cpe = cpe_alloc (cp);
if (coproc_list.head == 0)
{
coproc_list.head = coproc_list.tail = cpe;
coproc_list.ncoproc = 0; /* just to make sure */
}
else
{
coproc_list.tail->next = cpe;
coproc_list.tail = cpe;
}
coproc_list.ncoproc++;
return cpe;
}
static struct cpelement *
cpl_delete (pid)
pid_t pid;
{
struct cpelement *prev, *p;
for (prev = p = coproc_list.head; p; prev = p, p = p->next)
if (p->coproc->c_pid == pid)
{
prev->next = p->next; /* remove from list */
break;
}
if (p == 0)
return 0; /* not found */
#if defined (DEBUG)
itrace("cpl_delete: deleting %d", pid);
#endif
/* Housekeeping in the border cases. */
if (p == coproc_list.head)
coproc_list.head = coproc_list.head->next;
else if (p == coproc_list.tail)
coproc_list.tail = prev;
coproc_list.ncoproc--;
if (coproc_list.ncoproc == 0)
coproc_list.head = coproc_list.tail = 0;
else if (coproc_list.ncoproc == 1)
coproc_list.tail = coproc_list.head; /* just to make sure */
return (p);
}
/* Clear out the list of saved statuses */
static void
cpl_flush ()
{
struct cpelement *cpe, *p;
for (cpe = coproc_list.head; cpe; )
{
p = cpe;
cpe = cpe->next;
coproc_dispose (p->coproc);
cpe_dispose (p);
}
coproc_list.head = coproc_list.tail = 0;
coproc_list.ncoproc = 0;
}
/* Search for PID in the list of coprocs; return the cpelement struct if
found. If not found, return NULL. */
static struct cpelement *
cpl_search (pid)
pid_t pid;
{
struct cpelement *cp;
for (cp = coproc_list.head ; cp; cp = cp->next)
if (cp->coproc->c_pid == pid)
return cp;
return (struct cpelement *)NULL;
}
/* Search for the coproc named NAME in the list of coprocs; return the
cpelement struct if found. If not found, return NULL. */
static struct cpelement *
cpl_searchbyname (name)
char *name;
{
struct cpelement *cp;
for (cp = coproc_list.head ; cp; cp = cp->next)
if (STREQ (cp->coproc->c_name, name))
return cp;
return (struct cpelement *)NULL;
}
#if 0
static void
cpl_prune ()
{
struct cpelement *cp;
while (coproc_list.head && coproc_list.ncoproc > COPROC_MAX)
{
cp = coproc_list.head;
coproc_list.head = coproc_list.head->next;
coproc_dispose (cp->coproc);
cpe_dispose (cp);
coproc_list.ncoproc--;
}
}
#endif
/* These currently use a single global "shell coproc" but are written in a
way to not preclude additional coprocs later */
way to not preclude additional coprocs later (using the list management
package above). */
struct coproc *
getcoprocbypid (pid)
@@ -1441,7 +1618,7 @@ coproc_alloc (name, pid)
{
struct coproc *cp;
cp = &sh_coproc;
cp = &sh_coproc; /* XXX */
coproc_init (cp);
cp->c_name = savestring (name);
@@ -1463,6 +1640,13 @@ coproc_dispose (cp)
coproc_init (cp);
}
/* Placeholder for now. */
void
coproc_flush ()
{
coproc_dispose (&sh_coproc);
}
void
coproc_close (cp)
struct coproc *cp;
@@ -1480,6 +1664,12 @@ coproc_close (cp)
cp->c_rsave = cp->c_wsave = -1;
}
void
coproc_closeall ()
{
coproc_close (&sh_coproc);
}
void
coproc_rclose (cp, fd)
struct coproc *cp;
@@ -1505,7 +1695,7 @@ coproc_wclose (cp, fd)
}
void
coproc_fdchk (cp, fd)
coproc_checkfd (cp, fd)
struct coproc *cp;
int fd;
{
@@ -1520,6 +1710,13 @@ coproc_fdchk (cp, fd)
coproc_setvars (cp);
}
void
coproc_fdchk (fd)
int fd;
{
coproc_checkfd (&sh_coproc, fd);
}
void
coproc_fdclose (cp, fd)
struct coproc *cp;
@@ -1530,7 +1727,6 @@ coproc_fdclose (cp, fd)
coproc_setvars (cp);
}
void
coproc_fdsave (cp)
struct coproc *cp;
@@ -1554,6 +1750,10 @@ coproc_pidchk (pid)
struct coproc *cp;
cp = getcoprocbypid (pid);
#if 0
if (cp)
itrace("coproc_pidchk: pid %d has died", pid);
#endif
if (cp)
coproc_dispose (cp);
}
@@ -1649,6 +1849,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
Coproc *cp;
char *tcmd;
/* XXX -- will require changes to handle multiple coprocs */
if (sh_coproc.c_pid != NO_PID)
{
#if 0
@@ -1687,7 +1888,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
coproc_setvars (cp);
#if defined (DEBUG)
#if 0
itrace ("execute_coproc: [%d] %s", coproc_pid, the_printed_command);
#endif
@@ -1854,6 +2055,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
tc->flags |= CMD_STDIN_REDIR;
exec_result = execute_command_internal (tc, 1, pipe_in, pipe_out, fds_to_close);
QUIT;
if (tc->flags & CMD_STDIN_REDIR)
tc->flags &= ~CMD_STDIN_REDIR;
@@ -1878,12 +2080,14 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
if (command->value.Connection->second)
command->value.Connection->second->flags |= CMD_IGNORE_RETURN;
}
executing_list++;
QUIT;
execute_command (command->value.Connection->first);
QUIT;
exec_result = execute_command_internal (command->value.Connection->second,
asynchronous, pipe_in, pipe_out,
fds_to_close);
executing_list--;
break;
case '|':
@@ -3014,7 +3218,7 @@ execute_null_command (redirects, pipe_in, pipe_out, async)
do_piping (pipe_in, pipe_out);
#if defined (COPROCESS_SUPPORT)
coproc_close (&sh_coproc);
coproc_closeall ();
#endif
subshell_environment = 0;
@@ -3220,7 +3424,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
do_piping (pipe_in, pipe_out);
pipe_in = pipe_out = NO_PIPE;
#if defined (COPROCESS_SUPPORT)
coproc_close (&sh_coproc);
coproc_closeall ();
#endif
last_asynchronous_pid = old_last_async_pid;
@@ -4304,6 +4508,8 @@ initialize_subshell ()
/* We're no longer inside a shell function. */
variable_context = return_catch_flag = 0;
executing_list = 0; /* XXX */
/* If we're not interactive, close the file descriptor from which we're
reading the current shell script. */
if (interactive_shell == 0)
@@ -4345,6 +4551,7 @@ shell_execve (command, args, env)
SETOSTYPE (0); /* Some systems use for USG/POSIX semantics */
execve (command, args, env);
i = errno; /* error from execve() */
CHECK_TERMSIG;
SETOSTYPE (1);
/* If we get to this point, then start checking out the file.
+3 -1
View File
@@ -145,6 +145,7 @@ extern int subshell_environment, line_number;
extern int posixly_correct, shell_level;
extern int last_command_exit_value, last_command_exit_signal;
extern int loop_level, breaking;
extern int executing_list;
extern int sourcelevel;
extern int running_trap;
extern sh_builtin_func_t *this_shell_builtin;
@@ -2525,7 +2526,7 @@ if (job == NO_JOB)
or until loop, act as if the shell received SIGINT as
well, so the loop can be broken. This doesn't call the
SIGINT signal handler; maybe it should. */
if (signal_is_trapped (SIGINT) == 0 && loop_level)
if (signal_is_trapped (SIGINT) == 0 && (loop_level || (shell_compatibility_level > 32 && executing_list)))
ADDINTERRUPT;
else
{
@@ -3834,6 +3835,7 @@ give_terminal_to (pgrp, force)
if (r == -1)
errno = e;
return r;
}
+4 -1
View File
@@ -67,6 +67,7 @@
#include "bashintl.h"
#include "shell.h"
#include "jobs.h"
#include "execute_cmd.h"
#include "flags.h"
#include "builtins/builtext.h"
@@ -144,6 +145,7 @@ extern int subshell_environment, line_number;
extern int posixly_correct, shell_level;
extern int last_command_exit_value, last_command_exit_signal;
extern int loop_level, breaking;
extern int executing_list;
extern int sourcelevel;
extern int running_trap;
extern sh_builtin_func_t *this_shell_builtin;
@@ -2524,7 +2526,7 @@ if (job == NO_JOB)
or until loop, act as if the shell received SIGINT as
well, so the loop can be broken. This doesn't call the
SIGINT signal handler; maybe it should. */
if (signal_is_trapped (SIGINT) == 0 && loop_level)
if (signal_is_trapped (SIGINT) == 0 && (loop_level || executing_list))
ADDINTERRUPT;
else
{
@@ -3833,6 +3835,7 @@ give_terminal_to (pgrp, force)
if (r == -1)
errno = e;
return r;
}
+86 -107
View File
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: bash 4.0-pre1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-08-25 11:13-0400\n"
"PO-Revision-Date: 2008-09-10 22:16+0200\n"
"PO-Revision-Date: 2008-09-14 22:01+0200\n"
"Last-Translator: Nils Naumann <nnau@gmx.net>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -50,12 +50,12 @@ msgstr ""
#: bashline.c:3268
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr ""
msgstr "%s: Das erste nicht Leerzeichen ist nicht `\\'."
#: bashline.c:3297
#, c-format
msgid "no closing `%c' in %s"
msgstr ""
msgstr "fehlende schließende `%c' in %s."
#: bashline.c:3331
#, c-format
@@ -65,17 +65,17 @@ msgstr "%s: Fehlender Doppelpunkt."
#: builtins/bind.def:199
#, c-format
msgid "`%s': invalid keymap name"
msgstr ""
msgstr "`%s': Ungültiger KEYMAP Name."
#: builtins/bind.def:238
#, fuzzy, c-format
#, c-format
msgid "%s: cannot read: %s"
msgstr "%s: Kann die Datei %s nicht erzeugen."
msgstr "%s: Nicht lesbar: %s"
#: builtins/bind.def:253
#, fuzzy, c-format
#, c-format
msgid "`%s': cannot unbind"
msgstr "%s: Kommando nicht gefunden."
msgstr "`%s': Bindung kann nicht gelöst werden."
#: builtins/bind.def:288 builtins/bind.def:318
#, c-format
@@ -90,11 +90,11 @@ msgstr "%s ist keiner Taste zugeordnet.\n"
#: builtins/bind.def:300
#, c-format
msgid "%s can be invoked via "
msgstr ""
msgstr "%s kann aufgerufen werden durch "
#: builtins/break.def:77 builtins/break.def:117
msgid "loop count"
msgstr ""
msgstr "Schleifen Zähler"
#: builtins/break.def:137
msgid "only meaningful in a `for', `while', or `until' loop"
@@ -117,7 +117,7 @@ msgstr "Zeile %d: "
#: builtins/common.c:124
#, c-format
msgid "%s: usage: "
msgstr ""
msgstr "%s: Gebrauch: "
#: builtins/common.c:137 test.c:822
msgid "too many arguments"
@@ -173,7 +173,7 @@ msgstr "%s: Ung
#: builtins/common.c:228
#, c-format
msgid "`%s': not a pid or valid job spec"
msgstr ""
msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung."
#: builtins/common.c:235 error.c:453
#, c-format
@@ -197,7 +197,7 @@ msgstr "%s ist au
#: builtins/common.c:253
#, c-format
msgid "%s: no such job"
msgstr ""
msgstr "%s: Kein solche Job."
#: builtins/common.c:261
#, c-format
@@ -211,16 +211,16 @@ msgstr "Keine Job Steuerung in dieser Shell."
#: builtins/common.c:273
#, c-format
msgid "%s: restricted"
msgstr ""
msgstr "%s: gesperrt"
#: builtins/common.c:275
msgid "restricted"
msgstr ""
msgstr "gesperrt"
#: builtins/common.c:283
#, c-format
msgid "%s: not a shell builtin"
msgstr ""
msgstr "%s: Ist kein Shell Kommando."
#: builtins/common.c:292
#, c-format
@@ -230,12 +230,12 @@ msgstr "Schreibfehler: %s."
#: builtins/common.c:523
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr ""
msgstr "%s: Kann das nicht aktuelle Verzeichnis wiederfinden: %s: %s\n"
#: builtins/common.c:589 builtins/common.c:591
#, fuzzy, c-format
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: Mehrdeutige Umlenkung."
msgstr "%s: Mehrdeutige Job Bezeichnung."
#: builtins/complete.def:270
#, c-format
@@ -261,13 +261,12 @@ msgid "not currently executing completion function"
msgstr ""
#: builtins/declare.def:122
#, fuzzy
msgid "can only be used in a function"
msgstr "kann nur innerhalb einer Funktion benutzt werden."
#: builtins/declare.def:353
msgid "cannot use `-f' to make functions"
msgstr ""
msgstr "Mit `-f' können keine Funktionen erzeugt werden."
#: builtins/declare.def:365 execute_cmd.c:4696
#, c-format
@@ -289,9 +288,9 @@ msgid "dynamic loading not available"
msgstr ""
#: builtins/enable.def:312
#, fuzzy, c-format
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "Kann die benannte Pipe %s für %s nicht öffnen: %s."
msgstr ""
#: builtins/enable.def:335
#, c-format
@@ -322,7 +321,7 @@ msgstr "%s: Ist keine normale Datei."
#: builtins/evalfile.c:147
#, c-format
msgid "%s: file is too large"
msgstr ""
msgstr "%s: Die Datei ist zu groß."
#: builtins/evalfile.c:185 execute_cmd.c:4623 shell.c:1449
#, c-format
@@ -335,9 +334,9 @@ msgid "%s: cannot execute: %s"
msgstr "%s: Kann nicht ausführen: %s"
#: builtins/exit.def:65
#, fuzzy, c-format
#, c-format
msgid "logout\n"
msgstr "Abmelden\n"
msgstr "Abgemeldet\n"
#: builtins/exit.def:88
msgid "not login shell: use `exit'"
@@ -373,7 +372,7 @@ msgstr ""
#: builtins/fg_bg.def:158
#, c-format
msgid "job %d started without job control"
msgstr ""
msgstr "Job %d wurde ohne Jobsteuerung gestartet."
#: builtins/getopt.c:110
#, c-format
@@ -447,21 +446,21 @@ msgstr ""
#: builtins/history.def:366
#, c-format
msgid "%s: history expansion failed"
msgstr ""
msgstr "%s: History Substitution gescheitert."
#: builtins/inlib.def:71
#, c-format
msgid "%s: inlib failed"
msgstr ""
msgstr "%s: inlib gescheitert."
#: builtins/jobs.def:109
msgid "no other options allowed with `-x'"
msgstr ""
msgstr "Keine weiteren Optionen mit `-x' erlaubt."
#: builtins/kill.def:197
#, c-format
msgid "%s: arguments must be process or job IDs"
msgstr ""
msgstr "%s: Die Argumente müssen Prozess- oder Jobbezeichnungen sein."
#: builtins/kill.def:260
msgid "Unknown error"
@@ -714,9 +713,8 @@ msgstr ""
# logout
#: builtins/suspend.def:111
#, fuzzy
msgid "cannot suspend a login shell"
msgstr "Beendet eine Loginshell."
msgstr "Kann die Loginshell nicht unterbrechen."
#: builtins/type.def:234
#, c-format
@@ -729,9 +727,9 @@ msgid "%s is a shell keyword\n"
msgstr ""
#: builtins/type.def:274
#, fuzzy, c-format
#, c-format
msgid "%s is a function\n"
msgstr "%s: Schreibgeschützte Funktion."
msgstr "%s ist eine Funktion.\n"
#: builtins/type.def:296
#, c-format
@@ -754,28 +752,27 @@ msgid "%s: invalid limit argument"
msgstr ""
#: builtins/ulimit.def:398
#, fuzzy, c-format
#, c-format
msgid "`%c': bad command"
msgstr "%c%c: Falsche Option"
msgstr "`%c': Falsches Kommando."
#: builtins/ulimit.def:427
#, fuzzy, c-format
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: Kann die Datei %s nicht erzeugen."
msgstr ""
#: builtins/ulimit.def:453
msgid "limit"
msgstr "Grenze"
#: builtins/ulimit.def:465 builtins/ulimit.def:765
#, fuzzy, c-format
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: Kann die nicht Grenze: %s ändern."
msgstr "%s: Kann die Grenze nicht ändern: %s"
#: builtins/umask.def:118
#, fuzzy
msgid "octal number"
msgstr "Oktale Ziffer."
msgstr ""
#: builtins/umask.def:231
#, c-format
@@ -792,9 +789,9 @@ msgid " line "
msgstr " Zeile "
#: error.c:164
#, fuzzy, c-format
#, c-format
msgid "last command: %s\n"
msgstr "`r', das zuletzt eingegebene Kommando wiederholt."
msgstr "Letztes Kommando: %s\n"
#: error.c:172
#, c-format
@@ -802,14 +799,13 @@ msgid "Aborting..."
msgstr "Abbruch..."
#: error.c:260
#, fuzzy, c-format
#, c-format
msgid "warning: "
msgstr "Warnung: "
#: error.c:405
#, fuzzy
msgid "unknown command error"
msgstr "Unbekannter Fehler %d."
msgstr ""
#: error.c:406
msgid "bad command type"
@@ -817,9 +813,8 @@ msgstr ""
# Programmierfehler
#: error.c:407
#, fuzzy
msgid "bad connector"
msgstr "bad connector `%d'."
msgstr ""
#: error.c:408
#, fuzzy
@@ -832,9 +827,9 @@ msgid "%s: unbound variable"
msgstr "%s ist nicht gesetzt."
#: eval.c:181
#, fuzzy, c-format
#, c-format
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "%cZu lange keine Eingabe: Automatisch ausgeloggt.\n"
msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n"
#: execute_cmd.c:483
#, c-format
@@ -1277,14 +1272,13 @@ msgid "unexpected argument to conditional unary operator"
msgstr ""
#: parse.y:3871
#, fuzzy, c-format
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "%s: Zweistelliger (binärer) Operator erwartet."
msgstr ""
#: parse.y:3875
#, fuzzy
msgid "conditional binary operator expected"
msgstr "%s: Zweistelliger (binärer) Operator erwartet."
msgstr ""
#: parse.y:3892
#, c-format
@@ -1296,19 +1290,19 @@ msgid "unexpected argument to conditional binary operator"
msgstr ""
#: parse.y:3907
#, fuzzy, c-format
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "`:' erwartet für ein bedingten Ausdruck."
msgstr ""
#: parse.y:3910
#, fuzzy, c-format
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "`:' erwartet für ein bedingten Ausdruck."
msgstr ""
#: parse.y:3914
#, fuzzy, c-format
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "`:' erwartet für ein bedingten Ausdruck."
msgstr ""
#: parse.y:5181
#, c-format
@@ -1316,7 +1310,7 @@ msgid "syntax error near unexpected token `%s'"
msgstr "Syntaxfehler beim unerwarteten Wort `%s'"
#: parse.y:5199
#, fuzzy, c-format
#, c-format
msgid "syntax error near `%s'"
msgstr "Syntaxfehler beim unerwarteten Wort `%s'"
@@ -1335,9 +1329,8 @@ msgid "Use \"%s\" to leave the shell.\n"
msgstr "Benutze \"%s\" um die Shell zu verlassen.\n"
#: parse.y:5433
#, fuzzy
msgid "unexpected EOF while looking for matching `)'"
msgstr "Dateiende beim Suchen nach `%c' erreicht."
msgstr "Dateiende beim Suchen nach passender `)' erreicht."
#: pcomplete.c:1016
#, c-format
@@ -1364,33 +1357,32 @@ msgid "file descriptor out of range"
msgstr ""
#: redir.c:146
#, fuzzy, c-format
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: Mehrdeutige Umlenkung."
#: redir.c:150
#, fuzzy, c-format
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: Kann existierende Datei nicht überschreiben."
#: redir.c:155
#, fuzzy, c-format
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: Verboten: `/' ist in Kommandonamen unzulässig."
msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden."
#: redir.c:160
#, fuzzy, c-format
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "Kann keine Pipe für die Prozeßersetzung erzeugen: %s."
msgstr ""
#: redir.c:515
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
#: redir.c:992
#, fuzzy
msgid "redirection error: cannot duplicate fd"
msgstr "Umlenkfehler"
msgstr ""
#: shell.c:328
msgid "could not find /tmp, please create!"
@@ -1401,9 +1393,9 @@ msgid "/tmp must be a valid directory name"
msgstr "/tmp muß ein gültiger Verzeichnisname sein."
#: shell.c:876
#, fuzzy, c-format
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: Falsche Option"
msgstr "%c%c: Ungültige Option"
#: shell.c:1637
msgid "I have no name!"
@@ -1431,9 +1423,7 @@ msgstr "Lange GNU Optionen:\n"
msgid "Shell options:\n"
msgstr "Shell-Optionen:\n"
# Was passiert hier?
#: shell.c:1785
#, fuzzy
msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD oder -c Kommando\t\t(Nur Aufruf)\n"
@@ -1501,9 +1491,8 @@ msgid "Floating point exception"
msgstr "Gleitkommafehler"
#: siglist.c:86
#, fuzzy
msgid "Killed"
msgstr "Abgebrochen"
msgstr "Gekillt"
#: siglist.c:90
msgid "Bus error"
@@ -1649,40 +1638,36 @@ msgid "cannot make pipe for process substitution"
msgstr "Kann keine Pipe für die Prozeßersetzung erzeugen."
#: subst.c:4496
#, fuzzy
msgid "cannot make child for process substitution"
msgstr "Kann keinen Prozeß zum Ersetzen erzeugen: %s."
msgstr ""
#: subst.c:4541
#, fuzzy, c-format
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "Kann die benannte Pipe %s für %s nicht öffnen: %s."
msgstr "Kann nicht die benannte Pipe %s zum lesen öffnen."
#: subst.c:4543
#, fuzzy, c-format
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "Kann die benannte Pipe %s für %s nicht öffnen: %s."
msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen."
#: subst.c:4561
#, fuzzy, c-format
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "Kann die benannte Pipe %s nicht auf fd %d verdoppeln: %s."
msgstr "Kann die benannte Pipe %s nicht auf fd %d."
#: subst.c:4757
#, fuzzy
msgid "cannot make pipe for command substitution"
msgstr "Kann keine Pipes für Kommandoersetzung erzeugen: %s."
msgstr "Kann keine Pipes für Kommandoersetzung erzeugen."
#: subst.c:4791
#, fuzzy
msgid "cannot make child for command substitution"
msgstr "Kann keinen Prozeß für die Kommandoersetzung erzeugen: %s."
msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen."
# interner Fehler
#: subst.c:4808
#, fuzzy
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "Kommandoersetzung: Kann Pipe nicht als fd 1 duplizieren: %s."
msgstr "Kommandoersetzung: Kann Pipe nicht als fd 1 duplizieren."
#: subst.c:5310
#, c-format
@@ -1706,14 +1691,14 @@ msgid "$%s: cannot assign in this way"
msgstr "$%s: Kann so nicht zuweisen."
#: subst.c:7441
#, fuzzy, c-format
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "Falsche Ersetzung: Keine schließende `}' in %s."
msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s."
#: subst.c:8314
#, c-format
msgid "no match: %s"
msgstr ""
msgstr "Keine Entsprechung: %s"
#: test.c:145
msgid "argument expected"
@@ -1748,9 +1733,8 @@ msgid "missing `]'"
msgstr "Fehlende `]'"
#: trap.c:200
#, fuzzy
msgid "invalid signal number"
msgstr "Falsche Signalnummer."
msgstr "Ungültige Signalnummer."
#: trap.c:323
#, c-format
@@ -1764,7 +1748,7 @@ msgstr ""
# Programmierfehler
#: trap.c:371
#, fuzzy, c-format
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: Falsches Signal %d."
@@ -1965,9 +1949,8 @@ msgid "exit [n]"
msgstr "exit [n]"
#: builtins.c:100
#, fuzzy
msgid "logout [n]"
msgstr "logout"
msgstr "logout [n]"
#: builtins.c:103
msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
@@ -2057,9 +2040,7 @@ msgstr "test [Ausdruck]"
msgid "[ arg... ]"
msgstr "[ Argument... ]"
# Warum das übersetzen?
#: builtins.c:162
#, fuzzy
msgid "times"
msgstr "times"
@@ -2182,7 +2163,6 @@ msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c
msgstr ""
#: builtins.c:250
#, fuzzy
msgid ""
"Define or display aliases.\n"
" \n"
@@ -2213,9 +2193,8 @@ msgstr ""
" Options:\n"
" -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"
" defined."
" Rückgabewert:\n"
" Meldet Erfolg, außer wenn NAME nicht existiert."
#: builtins.c:272
msgid ""
+1901 -785
View File
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -56,6 +56,7 @@ extern int last_command_exit_value;
extern int last_command_exit_signal;
extern int return_catch_flag;
extern int loop_level, continuing, breaking;
extern int executing_list;
extern int parse_and_execute_level, shell_initialized;
/* Non-zero after SIGINT. */
@@ -365,7 +366,7 @@ top_level_cleanup ()
#endif /* PROCESS_SUBSTITUTION */
run_unwind_protects ();
loop_level = continuing = breaking = 0;
loop_level = continuing = breaking = executing_list = 0;
return_catch_flag = 0;
}
@@ -416,7 +417,7 @@ throw_to_top_level ()
#endif /* PROCESS_SUBSTITUTION */
run_unwind_protects ();
loop_level = continuing = breaking = 0;
loop_level = continuing = breaking = executing_list = 0;
return_catch_flag = 0;
if (interactive && print_newline)