minor portability fixes; printf now uses double for floating point conversions by default in posix mode

This commit is contained in:
Chet Ramey
2022-04-12 09:57:43 -04:00
parent 0b9a4b3ae0
commit 3be2a2ca9a
14 changed files with 557 additions and 360 deletions
+27
View File
@@ -3449,3 +3449,30 @@ lib/readline/{complete,histfile,histsearch,isearch,terminal}.c
---
configure.ac
- bumped version to bash-5.2-beta
[bash-5.2-beta frozen]
4/8
---
lib/readline/input.c
- _rl_orig_sigset: need extern declaration if HAVE_SELECT is defined.
From https://savannah.gnu.org/support/?110634
examples/loadables/seq.c
- PRIdMAX: redefine if PRI_MACROS_BROKEN is defined.
From https://savannah.gnu.org/support/index.php?110635
4/11
----
configure.ac
- BASH_FUNC_STRTOIMAX: replace strtoimax if the system doesn't provide
a declaration in a standard header file. Uses new m4/strtoimax.m4.
From https://savannah.gnu.org/support/index.php?110633
builtins/printf.def
- getdouble: new function, parses string into `double' using strtod
- printf_builtin: check for the `L' length modifier and use long
doubles for the floating point conversion specifiers. If it's not
supplied, use `double' when in posix mode (as posix specifies) and
long double (if it's available, double if not) in default mode.
From a report from Paul Eggert <eggert@cs.ucla.edu>
+1
View File
@@ -484,6 +484,7 @@ lib/tilde/Makefile.in f
lib/tilde/tilde.c f
lib/tilde/tilde.h f
lib/tilde/shell.c f
m4/strtoimax.m4 f
m4/stat-time.m4 f
m4/timespec.m4 f
m4/codeset.m4 f
+6 -1
View File
@@ -240,7 +240,12 @@ The following list is what's changed when 'POSIX mode' is in effect:
'read', the trap handler executes and 'read' returns an exit status
greater than 128.
60. Bash removes an exited background process's status from the list
60. The 'printf' builting uses 'double' (via 'strtod') to convert
arguments corresponding to floating point conversion specifiers,
instead of 'long double' if it's available. The 'L' length
modifier forces 'printf' to use 'long double' if it's available.
61. Bash removes an exited background process's status from the list
of such statuses after the 'wait' builtin is used to obtain it.
There is other POSIX behavior that Bash does not implement by default
+53 -6
View File
@@ -215,13 +215,16 @@ static uintmax_t getuintmax PARAMS((void));
#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN)
typedef long double floatmax_t;
# define USE_LONG_DOUBLE 1
# define FLOATMAX_CONV "L"
# define strtofltmax strtold
#else
typedef double floatmax_t;
# define USE_LONG_DOUBLE 0
# define FLOATMAX_CONV ""
# define strtofltmax strtod
#endif
static double getdouble PARAMS((void));
static floatmax_t getfloatmax PARAMS((void));
static intmax_t asciicode PARAMS((void));
@@ -247,7 +250,7 @@ printf_builtin (list)
WORD_LIST *list;
{
int ch, fieldwidth, precision;
int have_fieldwidth, have_precision;
int have_fieldwidth, have_precision, use_Lmod;
char convch, thisch, nextch, *format, *modstart, *precstart, *fmt, *start;
#if defined (HANDLE_MULTIBYTE)
char mbch[25]; /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/
@@ -422,8 +425,12 @@ printf_builtin (list)
/* skip possible format modifiers */
modstart = fmt;
use_Lmod = 0;
while (*fmt && strchr (LENMODS, *fmt))
fmt++;
{
use_Lmod |= USE_LONG_DOUBLE && *fmt == 'L';
fmt++;
}
if (*fmt == 0)
{
@@ -694,11 +701,24 @@ printf_builtin (list)
#endif
{
char *f;
floatmax_t p;
p = getfloatmax ();
f = mklong (start, FLOATMAX_CONV, sizeof(FLOATMAX_CONV) - 1);
PF (f, p);
if (use_Lmod || posixly_correct == 0)
{
floatmax_t p;
p = getfloatmax ();
f = mklong (start, "L", 1);
PF (f, p);
}
else /* posixly_correct */
{
double p;
p = getdouble ();
f = mklong (start, "", 0);
PF (f, p);
}
break;
}
@@ -1248,6 +1268,33 @@ getuintmax ()
return (ret);
}
static double
getdouble ()
{
double ret;
char *ep;
if (garglist == 0)
return (0);
if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"')
return asciicode ();
errno = 0;
ret = strtod (garglist->word->word, &ep);
if (*ep)
{
sh_invalidnum (garglist->word->word);
conversion_error = 1;
}
else if (errno == ERANGE)
printf_erange (garglist->word->word);
garglist = garglist->next;
return (ret);
}
static floatmax_t
getfloatmax ()
{
Vendored
+60 -23
View File
@@ -1,5 +1,5 @@
#! /bin/sh
# From configure.ac for Bash 5.2, version 5.039.
# From configure.ac for Bash 5.2, version 5.040.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for bash 5.2-beta.
#
@@ -6659,6 +6659,11 @@ fi
# codeset.m4 serial 5 (gettext-0.18.2)
@@ -15503,19 +15508,6 @@ else $as_nop
;;
esac
fi
ac_fn_c_check_func "$LINENO" "strtoimax" "ac_cv_func_strtoimax"
if test "x$ac_cv_func_strtoimax" = xyes
then :
printf "%s\n" "#define HAVE_STRTOIMAX 1" >>confdefs.h
else $as_nop
case " $LIBOBJS " in
*" strtoimax.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strtoimax.$ac_objext"
;;
esac
fi
ac_fn_c_check_func "$LINENO" "strtoumax" "ac_cv_func_strtoumax"
if test "x$ac_cv_func_strtoumax" = xyes
@@ -15711,15 +15703,6 @@ printf "%s\n" "$bash_cv_strtold_broken" >&6; }
fi
ac_fn_check_decl "$LINENO" "strtoimax" "ac_cv_have_decl_strtoimax" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
if test "x$ac_cv_have_decl_strtoimax" = xyes
then :
ac_have_decl=1
else $as_nop
ac_have_decl=0
fi
printf "%s\n" "#define HAVE_DECL_STRTOIMAX $ac_have_decl" >>confdefs.h
ac_fn_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
if test "x$ac_cv_have_decl_strtol" = xyes
then :
@@ -20417,6 +20400,60 @@ printf "%s\n" "#define HAVE_VSNPRINTF 0" >>confdefs.h
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable strtoimax" >&5
printf %s "checking for usable strtoimax... " >&6; }
if test ${bash_cv_func_strtoimax+y}
then :
printf %s "(cached) " >&6
else $as_nop
HAVE_STRTOIMAX=0 HAVE_DECL_STRTOIMAX=0
ac_fn_c_check_func "$LINENO" "strtoimax" "ac_cv_func_strtoimax"
if test "x$ac_cv_func_strtoimax" = xyes
then :
printf "%s\n" "#define HAVE_STRTOIMAX 1" >>confdefs.h
fi
ac_fn_check_decl "$LINENO" "strtoimax" "ac_cv_have_decl_strtoimax" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
if test "x$ac_cv_have_decl_strtoimax" = xyes
then :
ac_have_decl=1
else $as_nop
ac_have_decl=0
fi
printf "%s\n" "#define HAVE_DECL_STRTOIMAX $ac_have_decl" >>confdefs.h
if test "$ac_cv_func_strtoimax" = "yes" ; then
HAVE_STRTOIMAX=1
fi
if test "$ac_cv_have_decl_strtoimax" = "yes" ; then
HAVE_DECL_STRTOIMAX=1
fi
if test "$HAVE_STRTOIMAX" = 0 || test "$HAVE_DECL_STRTOIMAX" = 0 ; then
bash_cv_func_strtoimax=no REPLACE_STRTOIMAX=1
else
bash_cv_func_strtoimax=yes
fi
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5
printf "%s\n" "$bash_cv_func_strtoimax" >&6; }
if test $bash_cv_func_strtoimax = yes; then
case " $LIBOBJS " in
*" strtoimax.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strtoimax.$ac_objext"
;;
esac
fi
if test "$ac_cv_func_putenv" = "yes"; then
+6 -3
View File
@@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_REVISION([for Bash 5.2, version 5.039])dnl
AC_REVISION([for Bash 5.2, version 5.040])dnl
define(bashvers, 5.2)
define(relstatus, beta)
@@ -713,6 +713,8 @@ AC_SUBST(SIZE)
m4_include([m4/stat-time.m4])
m4_include([m4/timespec.m4])
m4_include([m4/strtoimax.m4])
dnl include files for gettext
m4_include([m4/codeset.m4])
@@ -859,7 +861,7 @@ AC_CHECK_FUNCS(arc4random)
AC_REPLACE_FUNCS(getcwd memset)
AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoumax)
AC_REPLACE_FUNCS(dprintf)
AC_REPLACE_FUNCS(strchrnul)
AC_REPLACE_FUNCS(strdup)
@@ -894,7 +896,6 @@ AC_CHECK_DECLS([strtold], [
fi
])
AC_CHECK_DECLS(strtoimax)
AC_CHECK_DECLS(strtol)
AC_CHECK_DECLS(strtoll)
AC_CHECK_DECLS(strtoul)
@@ -1068,6 +1069,8 @@ BASH_FUNC_STRCOLL
BASH_FUNC_SNPRINTF
BASH_FUNC_VSNPRINTF
BASH_FUNC_STRTOIMAX
dnl If putenv or unsetenv is not present, set the right define so the
dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
+203 -184
View File
@@ -1,9 +1,9 @@
This is bash.info, produced by makeinfo version 6.8 from bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.2, 5 February 2022).
Bash shell (version 5.2, 11 April 2022).
This is Edition 5.2, last updated 5 February 2022, of 'The GNU Bash
This is Edition 5.2, last updated 11 April 2022, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.2.
Copyright (C) 1988-2022 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.2, 5 February 2022). The Bash home page is
Bash shell (version 5.2, 11 April 2022). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.2, last updated 5 February 2022, of 'The GNU Bash
This is Edition 5.2, last updated 11 April 2022, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.2.
Bash contains features that appear in other popular shells, and some
@@ -1367,9 +1367,17 @@ status; otherwise the function's return status is the exit status of the
last command executed before the 'return'.
Variables local to the function may be declared with the 'local'
builtin. These variables are visible only to the function and the
commands it invokes. This is particularly important when a shell
function calls other functions.
builtin ("local variables"). Ordinarily, variables and their values are
shared between a function and its caller. These variables are visible
only to the function and the commands it invokes. This is particularly
important when a shell function calls other functions.
In the following description, the "current scope" is a currently-
executing function. Previous scopes consist of that function's caller
and so on, back to the "global" scope, where the shell is not executing
any shell function. Consequently, a local variable at the current local
scope is a variable declared using the 'local' or 'declare' builtins in
the function that is currently executing.
Local variables "shadow" variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
@@ -1414,11 +1422,12 @@ script displays
variable is local to the current scope, 'unset' will unset it; otherwise
the unset will refer to the variable found in any calling scope as
described above. If a variable at the current local scope is unset, it
will remain so until it is reset in that scope or until the function
returns. Once the function returns, any instance of the variable at a
previous scope will become visible. If the unset acts on a variable at
a previous scope, any instance of a variable with that name that had
been shadowed will become visible.
will remain so (appearing as unset) until it is reset in that scope or
until the function returns. Once the function returns, any instance of
the variable at a previous scope will become visible. If the unset acts
on a variable at a previous scope, any instance of a variable with that
name that had been shadowed will become visible (see below how
'localvar_unset'shell option changes this behavior).
Function names and definitions may be listed with the '-f' option to
the 'declare' ('typeset') builtin command (*note Bash Builtins::). The
@@ -1867,11 +1876,11 @@ omitted, the operator tests only for existence.
'${PARAMETER:OFFSET:LENGTH}'
This is referred to as Substring Expansion. It expands to up to
LENGTH characters of the value of PARAMETER starting at the
character specified by OFFSET. If PARAMETER is '@', an indexed
array subscripted by '@' or '*', or an associative array name, the
results differ as described below. If LENGTH is omitted, it
expands to the substring of the value of PARAMETER starting at the
character specified by OFFSET and extending to the end of the
character specified by OFFSET. If PARAMETER is '@' or '*', an
indexed array subscripted by '@' or '*', or an associative array
name, the results differ as described below. If LENGTH is omitted,
it expands to the substring of the value of PARAMETER starting at
the character specified by OFFSET and extending to the end of the
value. LENGTH and OFFSET are arithmetic expressions (*note Shell
Arithmetic::).
@@ -1939,11 +1948,11 @@ omitted, the operator tests only for existence.
$ echo ${array[0]: -7:-2}
bcdef
If PARAMETER is '@', the result is LENGTH positional parameters
beginning at OFFSET. A negative OFFSET is taken relative to one
greater than the greatest positional parameter, so an offset of -1
evaluates to the last positional parameter. It is an expansion
error if LENGTH evaluates to a number less than zero.
If PARAMETER is '@' or '*', the result is LENGTH positional
parameters beginning at OFFSET. A negative OFFSET is taken
relative to one greater than the greatest positional parameter, so
an offset of -1 evaluates to the last positional parameter. It is
an expansion error if LENGTH evaluates to a number less than zero.
The following examples illustrate substring expansion using
positional parameters:
@@ -6660,6 +6669,10 @@ negative number, that number is interpreted as relative to one greater
than the maximum index of NAME, so negative indices count back from the
end of the array, and an index of -1 references the last element.
The '+=' operator will append to an array variable when assigning
using the compound assignment syntax; see *note Shell Parameters::
above.
Any element of an array may be referenced using '${NAME[SUBSCRIPT]}'.
The braces are required to avoid conflicts with the shell's filename
expansion operators. If the SUBSCRIPT is '@' or '*', the word expands
@@ -7235,7 +7248,12 @@ startup files.
'read', the trap handler executes and 'read' returns an exit status
greater than 128.
60. Bash removes an exited background process's status from the list
60. The 'printf' builting uses 'double' (via 'strtod') to convert
arguments corresponding to floating point conversion specifiers,
instead of 'long double' if it's available. The 'L' length
modifier forces 'printf' to use 'long double' if it's available.
61. Bash removes an exited background process's status from the list
of such statuses after the 'wait' builtin is used to obtain it.
There is other POSIX behavior that Bash does not implement by default
@@ -8156,12 +8174,13 @@ Variable Settings
non-incremental history searches. The default is 'On'.
'enable-bracketed-paste'
When set to 'On', Readline will configure the terminal in a
way that will enable it to insert each paste into the editing
buffer as a single string of characters, instead of treating
each character as if it had been read from the keyboard. This
can prevent pasted characters from being interpreted as
editing commands. The default is 'On'.
When set to 'On', Readline configures the terminal to insert
each paste into the editing buffer as a single string of
characters, instead of treating each character as if it had
been read from the keyboard. This is called putting the
terminal into "bracketed paste mode"; it prevents Readline
from executing any editing commands bound to key sequences
appearing in the pasted text. The default is 'On'.
'enable-keypad'
When set to 'on', Readline will try to enable the application
@@ -11967,14 +11986,14 @@ D.3 Parameter and Variable Index
* enable-bracketed-paste: Readline Init File Syntax.
(line 185)
* enable-keypad: Readline Init File Syntax.
(line 193)
(line 194)
* ENV: Bash Variables. (line 279)
* EPOCHREALTIME: Bash Variables. (line 284)
* EPOCHSECONDS: Bash Variables. (line 292)
* EUID: Bash Variables. (line 299)
* EXECIGNORE: Bash Variables. (line 303)
* expand-tilde: Readline Init File Syntax.
(line 204)
(line 205)
* FCEDIT: Bash Variables. (line 316)
* FIGNORE: Bash Variables. (line 320)
* FUNCNAME: Bash Variables. (line 326)
@@ -11988,15 +12007,15 @@ D.3 Parameter and Variable Index
* HISTFILESIZE: Bash Variables. (line 402)
* HISTIGNORE: Bash Variables. (line 413)
* history-preserve-point: Readline Init File Syntax.
(line 208)
(line 209)
* history-size: Readline Init File Syntax.
(line 214)
(line 215)
* HISTSIZE: Bash Variables. (line 433)
* HISTTIMEFORMAT: Bash Variables. (line 440)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 223)
(line 224)
* HOSTFILE: Bash Variables. (line 448)
* HOSTNAME: Bash Variables. (line 459)
* HOSTTYPE: Bash Variables. (line 462)
@@ -12004,13 +12023,13 @@ D.3 Parameter and Variable Index
(line 18)
* IGNOREEOF: Bash Variables. (line 465)
* input-meta: Readline Init File Syntax.
(line 232)
(line 233)
* INPUTRC: Bash Variables. (line 475)
* INSIDE_EMACS: Bash Variables. (line 479)
* isearch-terminators: Readline Init File Syntax.
(line 240)
(line 241)
* keymap: Readline Init File Syntax.
(line 247)
(line 248)
* LANG: Creating Internationalized Scripts.
(line 51)
* LANG <1>: Bash Variables. (line 485)
@@ -12032,15 +12051,15 @@ D.3 Parameter and Variable Index
(line 27)
* MAPFILE: Bash Variables. (line 540)
* mark-modified-lines: Readline Init File Syntax.
(line 277)
(line 278)
* mark-symlinked-directories: Readline Init File Syntax.
(line 282)
(line 283)
* match-hidden-files: Readline Init File Syntax.
(line 287)
(line 288)
* menu-complete-display-prefix: Readline Init File Syntax.
(line 294)
(line 295)
* meta-flag: Readline Init File Syntax.
(line 232)
(line 233)
* OLDPWD: Bash Variables. (line 544)
* OPTARG: Bourne Shell Variables.
(line 34)
@@ -12049,9 +12068,9 @@ D.3 Parameter and Variable Index
(line 38)
* OSTYPE: Bash Variables. (line 551)
* output-meta: Readline Init File Syntax.
(line 299)
(line 300)
* page-completions: Readline Init File Syntax.
(line 305)
(line 306)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 554)
@@ -12074,19 +12093,19 @@ D.3 Parameter and Variable Index
* READLINE_POINT: Bash Variables. (line 626)
* REPLY: Bash Variables. (line 630)
* revert-all-at-newline: Readline Init File Syntax.
(line 315)
(line 316)
* SECONDS: Bash Variables. (line 633)
* SHELL: Bash Variables. (line 642)
* SHELLOPTS: Bash Variables. (line 647)
* SHLVL: Bash Variables. (line 656)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 321)
(line 322)
* show-all-if-unmodified: Readline Init File Syntax.
(line 327)
(line 328)
* show-mode-in-prompt: Readline Init File Syntax.
(line 336)
(line 337)
* skip-completed-text: Readline Init File Syntax.
(line 342)
(line 343)
* SRANDOM: Bash Variables. (line 661)
* TEXTDOMAIN: Creating Internationalized Scripts.
(line 51)
@@ -12097,11 +12116,11 @@ D.3 Parameter and Variable Index
* TMPDIR: Bash Variables. (line 720)
* UID: Bash Variables. (line 724)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 355)
(line 356)
* vi-ins-mode-string: Readline Init File Syntax.
(line 366)
(line 367)
* visible-stats: Readline Init File Syntax.
(line 377)
(line 378)

File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -12480,138 +12499,138 @@ D.5 Concept Index

Tag Table:
Node: Top892
Node: Introduction2807
Node: What is Bash?3020
Node: What is a shell?4131
Node: Definitions6666
Node: Basic Shell Features9614
Node: Shell Syntax10830
Node: Shell Operation11853
Node: Quoting13143
Node: Escape Character14444
Node: Single Quotes14926
Node: Double Quotes15271
Node: ANSI-C Quoting16546
Node: Locale Translation17853
Node: Creating Internationalized Scripts19161
Node: Comments23275
Node: Shell Commands23890
Node: Reserved Words24825
Node: Simple Commands25578
Node: Pipelines26229
Node: Lists29185
Node: Compound Commands30977
Node: Looping Constructs31986
Node: Conditional Constructs34478
Node: Command Grouping48819
Node: Coprocesses50294
Node: GNU Parallel52954
Node: Shell Functions53868
Node: Shell Parameters61156
Node: Positional Parameters65541
Node: Special Parameters66440
Node: Shell Expansions69651
Node: Brace Expansion71775
Node: Tilde Expansion74506
Node: Shell Parameter Expansion77124
Node: Command Substitution95458
Node: Arithmetic Expansion96810
Node: Process Substitution97775
Node: Word Splitting98892
Node: Filename Expansion100833
Node: Pattern Matching103579
Node: Quote Removal108184
Node: Redirections108476
Node: Executing Commands118133
Node: Simple Command Expansion118800
Node: Command Search and Execution120907
Node: Command Execution Environment123282
Node: Environment126314
Node: Exit Status127974
Node: Signals129755
Node: Shell Scripts133201
Node: Shell Builtin Commands136225
Node: Bourne Shell Builtins138260
Node: Bash Builtins159718
Node: Modifying Shell Behavior190571
Node: The Set Builtin190913
Node: The Shopt Builtin201511
Node: Special Builtins217420
Node: Shell Variables218396
Node: Bourne Shell Variables218830
Node: Bash Variables220931
Node: Bash Features253744
Node: Invoking Bash254754
Node: Bash Startup Files260764
Node: Interactive Shells265864
Node: What is an Interactive Shell?266271
Node: Is this Shell Interactive?266917
Node: Interactive Shell Behavior267729
Node: Bash Conditional Expressions271355
Node: Shell Arithmetic275994
Node: Aliases278935
Node: Arrays281545
Node: The Directory Stack287789
Node: Directory Stack Builtins288570
Node: Controlling the Prompt292827
Node: The Restricted Shell295789
Node: Bash POSIX Mode298396
Node: Shell Compatibility Mode310043
Node: Job Control318069
Node: Job Control Basics318526
Node: Job Control Builtins323525
Node: Job Control Variables328922
Node: Command Line Editing330075
Node: Introduction and Notation331743
Node: Readline Interaction333363
Node: Readline Bare Essentials334551
Node: Readline Movement Commands336331
Node: Readline Killing Commands337288
Node: Readline Arguments339203
Node: Searching340244
Node: Readline Init File342427
Node: Readline Init File Syntax343685
Node: Conditional Init Constructs366808
Node: Sample Init File371001
Node: Bindable Readline Commands374122
Node: Commands For Moving375323
Node: Commands For History377371
Node: Commands For Text382362
Node: Commands For Killing386008
Node: Numeric Arguments389038
Node: Commands For Completion390174
Node: Keyboard Macros394362
Node: Miscellaneous Commands395046
Node: Readline vi Mode400982
Node: Programmable Completion401886
Node: Programmable Completion Builtins409663
Node: A Programmable Completion Example420355
Node: Using History Interactively425599
Node: Bash History Facilities426280
Node: Bash History Builtins429282
Node: History Interaction434287
Node: Event Designators437904
Node: Word Designators439255
Node: Modifiers441012
Node: Installing Bash442820
Node: Basic Installation443954
Node: Compilers and Options447673
Node: Compiling For Multiple Architectures448411
Node: Installation Names450101
Node: Specifying the System Type452207
Node: Sharing Defaults452920
Node: Operation Controls453590
Node: Optional Features454545
Node: Reporting Bugs465760
Node: Major Differences From The Bourne Shell467032
Node: GNU Free Documentation License483879
Node: Indexes509053
Node: Builtin Index509504
Node: Reserved Word Index516328
Node: Variable Index518773
Node: Function Index535544
Node: Concept Index549325
Node: Top888
Node: Introduction2799
Node: What is Bash?3012
Node: What is a shell?4123
Node: Definitions6658
Node: Basic Shell Features9606
Node: Shell Syntax10822
Node: Shell Operation11845
Node: Quoting13135
Node: Escape Character14436
Node: Single Quotes14918
Node: Double Quotes15263
Node: ANSI-C Quoting16538
Node: Locale Translation17845
Node: Creating Internationalized Scripts19153
Node: Comments23267
Node: Shell Commands23882
Node: Reserved Words24817
Node: Simple Commands25570
Node: Pipelines26221
Node: Lists29177
Node: Compound Commands30969
Node: Looping Constructs31978
Node: Conditional Constructs34470
Node: Command Grouping48811
Node: Coprocesses50286
Node: GNU Parallel52946
Node: Shell Functions53860
Node: Shell Parameters61742
Node: Positional Parameters66127
Node: Special Parameters67026
Node: Shell Expansions70237
Node: Brace Expansion72361
Node: Tilde Expansion75092
Node: Shell Parameter Expansion77710
Node: Command Substitution96058
Node: Arithmetic Expansion97410
Node: Process Substitution98375
Node: Word Splitting99492
Node: Filename Expansion101433
Node: Pattern Matching104179
Node: Quote Removal108784
Node: Redirections109076
Node: Executing Commands118733
Node: Simple Command Expansion119400
Node: Command Search and Execution121507
Node: Command Execution Environment123882
Node: Environment126914
Node: Exit Status128574
Node: Signals130355
Node: Shell Scripts133801
Node: Shell Builtin Commands136825
Node: Bourne Shell Builtins138860
Node: Bash Builtins160318
Node: Modifying Shell Behavior191171
Node: The Set Builtin191513
Node: The Shopt Builtin202111
Node: Special Builtins218020
Node: Shell Variables218996
Node: Bourne Shell Variables219430
Node: Bash Variables221531
Node: Bash Features254344
Node: Invoking Bash255354
Node: Bash Startup Files261364
Node: Interactive Shells266464
Node: What is an Interactive Shell?266871
Node: Is this Shell Interactive?267517
Node: Interactive Shell Behavior268329
Node: Bash Conditional Expressions271955
Node: Shell Arithmetic276594
Node: Aliases279535
Node: Arrays282145
Node: The Directory Stack288533
Node: Directory Stack Builtins289314
Node: Controlling the Prompt293571
Node: The Restricted Shell296533
Node: Bash POSIX Mode299140
Node: Shell Compatibility Mode311061
Node: Job Control319087
Node: Job Control Basics319544
Node: Job Control Builtins324543
Node: Job Control Variables329940
Node: Command Line Editing331093
Node: Introduction and Notation332761
Node: Readline Interaction334381
Node: Readline Bare Essentials335569
Node: Readline Movement Commands337349
Node: Readline Killing Commands338306
Node: Readline Arguments340221
Node: Searching341262
Node: Readline Init File343445
Node: Readline Init File Syntax344703
Node: Conditional Init Constructs367899
Node: Sample Init File372092
Node: Bindable Readline Commands375213
Node: Commands For Moving376414
Node: Commands For History378462
Node: Commands For Text383453
Node: Commands For Killing387099
Node: Numeric Arguments390129
Node: Commands For Completion391265
Node: Keyboard Macros395453
Node: Miscellaneous Commands396137
Node: Readline vi Mode402073
Node: Programmable Completion402977
Node: Programmable Completion Builtins410754
Node: A Programmable Completion Example421446
Node: Using History Interactively426690
Node: Bash History Facilities427371
Node: Bash History Builtins430373
Node: History Interaction435378
Node: Event Designators438995
Node: Word Designators440346
Node: Modifiers442103
Node: Installing Bash443911
Node: Basic Installation445045
Node: Compilers and Options448764
Node: Compiling For Multiple Architectures449502
Node: Installation Names451192
Node: Specifying the System Type453298
Node: Sharing Defaults454011
Node: Operation Controls454681
Node: Optional Features455636
Node: Reporting Bugs466851
Node: Major Differences From The Bourne Shell468123
Node: GNU Free Documentation License484970
Node: Indexes510144
Node: Builtin Index510595
Node: Reserved Word Index517419
Node: Variable Index519864
Node: Function Index536635
Node: Concept Index550416

End Tag Table
+142 -137
View File
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 6.8 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.2, 24 February 2022).
Bash shell (version 5.2, 11 April 2022).
This is Edition 5.2, last updated 24 February 2022, of 'The GNU Bash
This is Edition 5.2, last updated 11 April 2022, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.2.
Copyright (C) 1988-2022 Free Software Foundation, Inc.
@@ -27,10 +27,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.2, 24 February 2022). The Bash home page is
Bash shell (version 5.2, 11 April 2022). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.2, last updated 24 February 2022, of 'The GNU Bash
This is Edition 5.2, last updated 11 April 2022, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.2.
Bash contains features that appear in other popular shells, and some
@@ -7249,7 +7249,12 @@ startup files.
'read', the trap handler executes and 'read' returns an exit status
greater than 128.
60. Bash removes an exited background process's status from the list
60. The 'printf' builting uses 'double' (via 'strtod') to convert
arguments corresponding to floating point conversion specifiers,
instead of 'long double' if it's available. The 'L' length
modifier forces 'printf' to use 'long double' if it's available.
61. Bash removes an exited background process's status from the list
of such statuses after the 'wait' builtin is used to obtain it.
There is other POSIX behavior that Bash does not implement by default
@@ -12495,138 +12500,138 @@ D.5 Concept Index

Tag Table:
Node: Top897
Node: Introduction2817
Node: What is Bash?3033
Node: What is a shell?4147
Node: Definitions6685
Node: Basic Shell Features9636
Node: Shell Syntax10855
Node: Shell Operation11881
Node: Quoting13174
Node: Escape Character14478
Node: Single Quotes14963
Node: Double Quotes15311
Node: ANSI-C Quoting16589
Node: Locale Translation17899
Node: Creating Internationalized Scripts19210
Node: Comments23327
Node: Shell Commands23945
Node: Reserved Words24883
Node: Simple Commands25639
Node: Pipelines26293
Node: Lists29252
Node: Compound Commands31047
Node: Looping Constructs32059
Node: Conditional Constructs34554
Node: Command Grouping48898
Node: Coprocesses50376
Node: GNU Parallel53039
Node: Shell Functions53956
Node: Shell Parameters61841
Node: Positional Parameters66229
Node: Special Parameters67131
Node: Shell Expansions70345
Node: Brace Expansion72472
Node: Tilde Expansion75206
Node: Shell Parameter Expansion77827
Node: Command Substitution96178
Node: Arithmetic Expansion97533
Node: Process Substitution98501
Node: Word Splitting99621
Node: Filename Expansion101565
Node: Pattern Matching104314
Node: Quote Removal108922
Node: Redirections109217
Node: Executing Commands118877
Node: Simple Command Expansion119547
Node: Command Search and Execution121657
Node: Command Execution Environment124035
Node: Environment127070
Node: Exit Status128733
Node: Signals130517
Node: Shell Scripts133966
Node: Shell Builtin Commands136993
Node: Bourne Shell Builtins139031
Node: Bash Builtins160492
Node: Modifying Shell Behavior191348
Node: The Set Builtin191693
Node: The Shopt Builtin202294
Node: Special Builtins218206
Node: Shell Variables219185
Node: Bourne Shell Variables219622
Node: Bash Variables221726
Node: Bash Features254542
Node: Invoking Bash255555
Node: Bash Startup Files261568
Node: Interactive Shells266671
Node: What is an Interactive Shell?267081
Node: Is this Shell Interactive?267730
Node: Interactive Shell Behavior268545
Node: Bash Conditional Expressions272174
Node: Shell Arithmetic276816
Node: Aliases279760
Node: Arrays282373
Node: The Directory Stack288764
Node: Directory Stack Builtins289548
Node: Controlling the Prompt293808
Node: The Restricted Shell296773
Node: Bash POSIX Mode299383
Node: Shell Compatibility Mode311033
Node: Job Control319062
Node: Job Control Basics319522
Node: Job Control Builtins324524
Node: Job Control Variables329924
Node: Command Line Editing331080
Node: Introduction and Notation332751
Node: Readline Interaction334374
Node: Readline Bare Essentials335565
Node: Readline Movement Commands337348
Node: Readline Killing Commands338308
Node: Readline Arguments340226
Node: Searching341270
Node: Readline Init File343456
Node: Readline Init File Syntax344717
Node: Conditional Init Constructs367916
Node: Sample Init File372112
Node: Bindable Readline Commands375236
Node: Commands For Moving376440
Node: Commands For History378491
Node: Commands For Text383485
Node: Commands For Killing387134
Node: Numeric Arguments390167
Node: Commands For Completion391306
Node: Keyboard Macros395497
Node: Miscellaneous Commands396184
Node: Readline vi Mode402123
Node: Programmable Completion403030
Node: Programmable Completion Builtins410810
Node: A Programmable Completion Example421505
Node: Using History Interactively426752
Node: Bash History Facilities427436
Node: Bash History Builtins430441
Node: History Interaction435449
Node: Event Designators439069
Node: Word Designators440423
Node: Modifiers442183
Node: Installing Bash443994
Node: Basic Installation445131
Node: Compilers and Options448853
Node: Compiling For Multiple Architectures449594
Node: Installation Names451287
Node: Specifying the System Type453396
Node: Sharing Defaults454112
Node: Operation Controls454785
Node: Optional Features455743
Node: Reporting Bugs466961
Node: Major Differences From The Bourne Shell468236
Node: GNU Free Documentation License485086
Node: Indexes510263
Node: Builtin Index510717
Node: Reserved Word Index517544
Node: Variable Index519992
Node: Function Index536766
Node: Concept Index550550
Node: Top891
Node: Introduction2805
Node: What is Bash?3021
Node: What is a shell?4135
Node: Definitions6673
Node: Basic Shell Features9624
Node: Shell Syntax10843
Node: Shell Operation11869
Node: Quoting13162
Node: Escape Character14466
Node: Single Quotes14951
Node: Double Quotes15299
Node: ANSI-C Quoting16577
Node: Locale Translation17887
Node: Creating Internationalized Scripts19198
Node: Comments23315
Node: Shell Commands23933
Node: Reserved Words24871
Node: Simple Commands25627
Node: Pipelines26281
Node: Lists29240
Node: Compound Commands31035
Node: Looping Constructs32047
Node: Conditional Constructs34542
Node: Command Grouping48886
Node: Coprocesses50364
Node: GNU Parallel53027
Node: Shell Functions53944
Node: Shell Parameters61829
Node: Positional Parameters66217
Node: Special Parameters67119
Node: Shell Expansions70333
Node: Brace Expansion72460
Node: Tilde Expansion75194
Node: Shell Parameter Expansion77815
Node: Command Substitution96166
Node: Arithmetic Expansion97521
Node: Process Substitution98489
Node: Word Splitting99609
Node: Filename Expansion101553
Node: Pattern Matching104302
Node: Quote Removal108910
Node: Redirections109205
Node: Executing Commands118865
Node: Simple Command Expansion119535
Node: Command Search and Execution121645
Node: Command Execution Environment124023
Node: Environment127058
Node: Exit Status128721
Node: Signals130505
Node: Shell Scripts133954
Node: Shell Builtin Commands136981
Node: Bourne Shell Builtins139019
Node: Bash Builtins160480
Node: Modifying Shell Behavior191336
Node: The Set Builtin191681
Node: The Shopt Builtin202282
Node: Special Builtins218194
Node: Shell Variables219173
Node: Bourne Shell Variables219610
Node: Bash Variables221714
Node: Bash Features254530
Node: Invoking Bash255543
Node: Bash Startup Files261556
Node: Interactive Shells266659
Node: What is an Interactive Shell?267069
Node: Is this Shell Interactive?267718
Node: Interactive Shell Behavior268533
Node: Bash Conditional Expressions272162
Node: Shell Arithmetic276804
Node: Aliases279748
Node: Arrays282361
Node: The Directory Stack288752
Node: Directory Stack Builtins289536
Node: Controlling the Prompt293796
Node: The Restricted Shell296761
Node: Bash POSIX Mode299371
Node: Shell Compatibility Mode311295
Node: Job Control319324
Node: Job Control Basics319784
Node: Job Control Builtins324786
Node: Job Control Variables330186
Node: Command Line Editing331342
Node: Introduction and Notation333013
Node: Readline Interaction334636
Node: Readline Bare Essentials335827
Node: Readline Movement Commands337610
Node: Readline Killing Commands338570
Node: Readline Arguments340488
Node: Searching341532
Node: Readline Init File343718
Node: Readline Init File Syntax344979
Node: Conditional Init Constructs368178
Node: Sample Init File372374
Node: Bindable Readline Commands375498
Node: Commands For Moving376702
Node: Commands For History378753
Node: Commands For Text383747
Node: Commands For Killing387396
Node: Numeric Arguments390429
Node: Commands For Completion391568
Node: Keyboard Macros395759
Node: Miscellaneous Commands396446
Node: Readline vi Mode402385
Node: Programmable Completion403292
Node: Programmable Completion Builtins411072
Node: A Programmable Completion Example421767
Node: Using History Interactively427014
Node: Bash History Facilities427698
Node: Bash History Builtins430703
Node: History Interaction435711
Node: Event Designators439331
Node: Word Designators440685
Node: Modifiers442445
Node: Installing Bash444256
Node: Basic Installation445393
Node: Compilers and Options449115
Node: Compiling For Multiple Architectures449856
Node: Installation Names451549
Node: Specifying the System Type453658
Node: Sharing Defaults454374
Node: Operation Controls455047
Node: Optional Features456005
Node: Reporting Bugs467223
Node: Major Differences From The Bourne Shell468498
Node: GNU Free Documentation License485348
Node: Indexes510525
Node: Builtin Index510979
Node: Reserved Word Index517806
Node: Variable Index520254
Node: Function Index537028
Node: Concept Index550812

End Tag Table
+6
View File
@@ -8398,6 +8398,12 @@ has been set.
If Bash receives a trapped signal while executing @code{read}, the trap
handler executes and @code{read} returns an exit status greater than 128.
@item
The @code{printf} builting uses @code{double} (via @code{strtod}) to convert
arguments corresponding to floating point conversion specifiers, instead of
@code{long double} if it's available. The @samp{L} length modifier forces
@code{printf} to use @code{long double} if it's available.
@item
Bash removes an exited background process's status from the list of such
statuses after the @code{wait} builtin is used to obtain it.
+3 -3
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2022 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Thu Feb 24 14:43:35 EST 2022
@set LASTCHANGE Mon Apr 11 17:04:12 EDT 2022
@set EDITION 5.2
@set VERSION 5.2
@set UPDATED 24 February 2022
@set UPDATED-MONTH February 2022
@set UPDATED 11 April 2022
@set UPDATED-MONTH April 2022
+12
View File
@@ -35,6 +35,18 @@
extern int errno;
#endif
#if defined (PRI_MACROS_BROKEN)
# undef PRIdMAX
#endif
#if !defined (PRIdMAX)
# if HAVE_LONG_LONG
# define PRIdMAX "lld"
# else
# define PRIdMAX "ld"
# endif
#endif
#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN)
typedef long double floatmax_t;
# define FLOATMAX_CONV "L"
+1 -1
View File
@@ -79,7 +79,7 @@ extern int errno;
# define O_NDELAY O_NONBLOCK /* Posix style */
#endif
#if defined (HAVE_PSELECT)
#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
extern sigset_t _rl_orig_sigset;
#endif
+35
View File
@@ -0,0 +1,35 @@
dnl Copyright (C) 2022 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Make sure we replace strtoimax if we don't have a declaration
dnl We can use this as a template for future function checks
AC_DEFUN([BASH_FUNC_STRTOIMAX], [
AC_MSG_CHECKING([for usable strtoimax])
AC_CACHE_VAL(bash_cv_func_strtoimax,
[
HAVE_STRTOIMAX=0 HAVE_DECL_STRTOIMAX=0
AC_CHECK_FUNCS([strtoimax])
AC_CHECK_DECLS([strtoimax])
if test "$ac_cv_func_strtoimax" = "yes" ; then
HAVE_STRTOIMAX=1
fi
if test "$ac_cv_have_decl_strtoimax" = "yes" ; then
HAVE_DECL_STRTOIMAX=1
fi
if test "$HAVE_STRTOIMAX" = 0 || test "$HAVE_DECL_STRTOIMAX" = 0 ; then
bash_cv_func_strtoimax=no REPLACE_STRTOIMAX=1
else
bash_cv_func_strtoimax=yes
fi
])
AC_MSG_RESULT($bash_cv_func_strtoimax)
if test $bash_cv_func_strtoimax = yes; then
AC_LIBOBJ(strtoimax)
fi
])
+2 -2
View File
@@ -110,11 +110,11 @@ fr_FR_ISO_8859_1=(
)
# this locale causes problems all over the place
if locale -a | grep -i '^fr_FR\.ISO8859.*1' >/dev/null ; then
if locale -a | grep -i '^fr_FR\.ISO8859.*1$' >/dev/null ; then
TestCodePage fr_FR.ISO8859-1 fr_FR_ISO_8859_1
else
echo "unicode1.sub: warning: you do not have the fr_FR.ISO8859-1 locale installed;" >&2
echo "unicode1.sub: that will cause some of these tests to fail." >&2
echo "unicode1.sub: that will cause some of these tests to be skipped." >&2
fi