aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Eßer <se@FreeBSD.org>2022-05-10 12:47:43 +0000
committerStefan Eßer <se@FreeBSD.org>2022-05-10 12:47:43 +0000
commited0603704174b01c25b49efc08c82e1532dc5622 (patch)
tree6b8cdeb6ee3b66b9cce2885d793a0327c76dc27f
parentbc75dcc4ce682562390fa32e7cd63c08160e21b9 (diff)
vendor/bc: import of version 5.2.5vendor/bc/5.2.5
This is a production release that fixes this bc's behavior on ^D to match GNU bc.
-rw-r--r--NEWS.md5
-rw-r--r--include/version.h2
-rwxr-xr-xscripts/package.sh13
-rwxr-xr-xscripts/release.sh1
-rw-r--r--src/history.c16
-rwxr-xr-xtests/history.py7
6 files changed, 37 insertions, 7 deletions
diff --git a/NEWS.md b/NEWS.md
index 3a388b0dc316..1a8a5dd31ad8 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,10 @@
# News
+## 5.2.5
+
+This is a production release that fixes this `bc`'s behavior on `^D` to match
+GNU `bc`.
+
## 5.2.4
This is a production release that fixes two bugs in history:
diff --git a/include/version.h b/include/version.h
index 4621b50bcbeb..da98b30bb767 100644
--- a/include/version.h
+++ b/include/version.h
@@ -37,6 +37,6 @@
#define BC_VERSION_H
/// The current version.
-#define VERSION 5.2.4
+#define VERSION 5.2.5
#endif // BC_VERSION_H
diff --git a/scripts/package.sh b/scripts/package.sh
index 34692f7ab20a..e3a35b0fe65d 100755
--- a/scripts/package.sh
+++ b/scripts/package.sh
@@ -35,6 +35,7 @@
# * git
# * stat
# * tar
+# * gzip
# * xz
# * sha512sum
# * sha256sum
@@ -182,6 +183,14 @@ cd ..
parent="$repo/.."
# Cleanup old stuff.
+if [ -f "$projver.tar.gz" ]; then
+ rm -rf "$projver.tar.gz"
+fi
+
+if [ -f "$projver.tar.gz.sig" ]; then
+ rm -rf "$projver.tar.gz.sig"
+fi
+
if [ -f "$projver.tar.xz" ]; then
rm -rf "$projver.tar.xz"
fi
@@ -192,6 +201,8 @@ fi
# Tar and compress and move into the parent directory of the repo.
tar cf "$projver.tar" "$projver/"
+gzip -k "$projver.tar"
+mv "$projver.tar.gz" "$parent"
xz -z -v -9 -e "$projver.tar" > /dev/null 2> /dev/null
mv "$projver.tar.xz" "$parent"
@@ -243,6 +254,8 @@ rm -rf windows/lib/{Win32,x64}/{Debug,ReleaseMD,ReleaseMT}/bcl.vcxproj.FileListA
zip -r $projver-windows.zip windows > /dev/null
printf '\n'
+shasum "$projver.tar.gz"
+printf '\n'
shasum "$projver.tar.xz"
printf '\n'
shasum "$projver-windows.zip"
diff --git a/scripts/release.sh b/scripts/release.sh
index 12097b1cc8b9..02d3dd5dae24 100755
--- a/scripts/release.sh
+++ b/scripts/release.sh
@@ -601,6 +601,7 @@ clang_flags="-Weverything -Wno-padded -Wno-switch-enum -Wno-format-nonliteral"
clang_flags="$clang_flags -Wno-cast-align -Wno-missing-noreturn -Wno-disabled-macro-expansion"
clang_flags="$clang_flags -Wno-unreachable-code -Wno-unreachable-code-return"
clang_flags="$clang_flags -Wno-implicit-fallthrough -Wno-unused-macros -Wno-gnu-label-as-value"
+clang_flags="$clang_flags -Wno-declaration-after-statement"
# -Wno-undef is here because Clang seems to think BC_C11 is undefined, when it's defined.
clang_flags="$clang_flags -Wno-undef"
gcc_flags="-Wno-maybe-uninitialized -Wno-clobbered"
diff --git a/src/history.c b/src/history.c
index 7e2661486a8b..74123a7c4918 100644
--- a/src/history.c
+++ b/src/history.c
@@ -1535,12 +1535,20 @@ static BcStatus bc_history_edit(BcHistory *h, const char *prompt) {
}
#ifndef _WIN32
- // Act as end-of-file.
+ // Act as end-of-file or delete-forward-char.
case BC_ACTION_CTRL_D:
{
- bc_history_printCtrl(h, c);
- BC_SIG_UNLOCK;
- return BC_STATUS_EOF;
+ // Act as EOF if there's no chacters, otherwise emulate Emacs
+ // delete next character to match historical gnu bc behavior.
+ if (BC_HIST_BUF_LEN(h) == 0) {
+ bc_history_printCtrl(h, c);
+ BC_SIG_UNLOCK;
+ return BC_STATUS_EOF;
+ }
+
+ bc_history_edit_delete(h);
+
+ break;
}
#endif // _WIN32
diff --git a/tests/history.py b/tests/history.py
index 84e32f9612c4..c74dfd72f0a7 100755
--- a/tests/history.py
+++ b/tests/history.py
@@ -282,8 +282,11 @@ def test_eof(exe, args, env):
child = pexpect.spawn(exe, args=args, env=env)
try:
- send(child, "\t")
- expect(child, " ")
+ send(child, "123")
+ expect(child, "123")
+ send(child, "\x01")
+ send(child, "\x04")
+ send(child, "\x04")
send(child, "\x04")
wait(child)
except pexpect.TIMEOUT: