contrib/bc: update to version 4.0.2

Merge commit '2858419a0ee2b8f5827de72c00618bcd69ebc5fc'

This update fixes the initialization of "scale" to 20 if started with
-l and the initial statement leads to an error (e.g. contains a syntax
error). Scale was initialized to 0 in that case.

Another change is the support of job control in interactive mode with
line editing enabled. The control characters have been interpreted as
editing commands only, prior to this version.

MFC after:	3 days
This commit is contained in:
Stefan Eßer 2021-05-12 07:49:19 +02:00
commit 8c39e25220
6 changed files with 19 additions and 5 deletions

View File

@ -1,5 +1,14 @@
# News
## 4.0.2
This is a production release that fixes two bugs:
1. If no files are used and the first statement on `stdin` is invalid, `scale`
would not be set to `20` even if `-l` was used.
2. When using history, `bc` failed to respond properly to `SIGSTOP` and
`SIGTSTP`.
## 4.0.1
This is a production release that only adds one thing: flushing output when it

View File

@ -165,6 +165,7 @@ typedef enum BcHistoryAction {
BC_ACTION_ENTER = 13,
BC_ACTION_CTRL_N = 14,
BC_ACTION_CTRL_P = 16,
BC_ACTION_CTRL_S = 19,
BC_ACTION_CTRL_T = 20,
BC_ACTION_CTRL_U = 21,
BC_ACTION_CTRL_W = 23,

View File

@ -36,6 +36,6 @@
#ifndef BC_VERSION_H
#define BC_VERSION_H
#define VERSION 4.0.1
#define VERSION 4.0.2
#endif // BC_VERSION_H

View File

@ -1281,8 +1281,11 @@ static BcStatus bc_history_edit(BcHistory *h, const char *prompt) {
default:
{
if (c >= BC_ACTION_CTRL_A && c <= BC_ACTION_CTRL_Z)
if (c >= BC_ACTION_CTRL_A && c <= BC_ACTION_CTRL_Z) {
bc_history_printCtrl(h, c);
if (c == BC_ACTION_CTRL_Z) raise(SIGTSTP);
if (c == BC_ACTION_CTRL_S) raise(SIGSTOP);
}
else bc_history_edit_insert(h, cbuf, nread);
break;
}

View File

@ -835,6 +835,8 @@ static void bc_vm_exec(void) {
#if BC_ENABLE_EXTRA_MATH
if (!BC_IS_POSIX) bc_vm_load(bc_lib2_name, bc_lib2);
#endif // BC_ENABLE_EXTRA_MATH
bc_program_exec(&vm.prog);
}
#endif // BC_ENABLED

View File

@ -138,7 +138,7 @@ else
set +e
printf 'three\n' | head -c3 > /dev/null
printf 'three\n' | cut -c1-3 > /dev/null
err=$?
if [ "$err" -eq 0 ]; then
@ -156,8 +156,7 @@ else
printf '4 April 2021\n' > "$easter_res"
"$testdir/dc/scripts/easter.sh" "$exe" 2021 | head -c12 > "$easter_out"
printf '\n' >> "$easter_out"
"$testdir/dc/scripts/easter.sh" "$exe" 2021 | cut -c1-12 > "$easter_out"
err="$?"
checktest "$d" "$err" "Easter script" "$easter_res" "$easter_out"