mirror of
https://github.com/opnsense/src.git
synced 2026-06-12 18:20:49 -04:00
vendor/bc: upgrade to version 7.0.2
This update fixes exiting from an interactive bc session with ^D on
FreeBSD and Linux when using editline.
This bug was caused by the macOS fix for editline in version 7.0.0,
which has been reverted in this version.
Reported by: mack@macktronics.com
(cherry picked from commit c2c85f88902d18d2e9702381f1628112e15a5c3c)
(cherry picked from commit 9b04aee86c)
This commit is contained in:
parent
f97d0c91ee
commit
90ea553a0d
16 changed files with 69 additions and 26 deletions
|
|
@ -1,5 +1,13 @@
|
|||
# News
|
||||
|
||||
## 7.0.2
|
||||
|
||||
This is a production release that fixes `Ctrl+d` on FreeBSD and Linux when using
|
||||
`editline`.
|
||||
|
||||
This bug was caused by the macOS fix in `7.0.0`. Unfortunately, this means that
|
||||
macOS does not respond properly to `Ctrl+d`.
|
||||
|
||||
## 7.0.1
|
||||
|
||||
This is a production release that fixes a warning using GCC on FreeBSD.
|
||||
|
|
|
|||
|
|
@ -120,6 +120,30 @@ typedef struct BcHistory
|
|||
extern const char bc_history_editrc[];
|
||||
extern const size_t bc_history_editrc_len;
|
||||
|
||||
#ifdef __APPLE__
|
||||
|
||||
/**
|
||||
* Returns true if the line is a valid line, false otherwise.
|
||||
* @param line The line.
|
||||
* @param len The length of the line.
|
||||
* @return True if the line is valid, false otherwise.
|
||||
*/
|
||||
#define BC_HISTORY_INVALID_LINE(line, len) \
|
||||
((line) == NULL && ((len) == -1 || errno == EINTR))
|
||||
|
||||
#else // __APPLE__
|
||||
|
||||
/**
|
||||
* Returns true if the line is a valid line, false otherwise.
|
||||
* @param line The line.
|
||||
* @param len The length of the line.
|
||||
* @return True if the line is valid, false otherwise.
|
||||
*/
|
||||
#define BC_HISTORY_INVALID_LINE(line, len) \
|
||||
((line) == NULL && (len) == -1 && errno == EINTR)
|
||||
|
||||
#endif // __APPLE__
|
||||
|
||||
#else // BC_ENABLE_EDITLINE
|
||||
|
||||
#if BC_ENABLE_READLINE
|
||||
|
|
|
|||
|
|
@ -37,6 +37,6 @@
|
|||
#define BC_VERSION_H
|
||||
|
||||
/// The current version.
|
||||
#define VERSION 7.0.1
|
||||
#define VERSION 7.0.2
|
||||
|
||||
#endif // BC_VERSION_H
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.TH "BC" "1" "January 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.TH "BC" "1" "August 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.nh
|
||||
.ad l
|
||||
.SH NAME
|
||||
|
|
@ -1731,7 +1731,7 @@ Functions\f[R] subsection below).
|
|||
.RE
|
||||
.TP
|
||||
\f[B]frand(p)\f[R]
|
||||
Generates a pseudo\-random integer between \f[B]0\f[R] (inclusive) and
|
||||
Generates a pseudo\-random number between \f[B]0\f[R] (inclusive) and
|
||||
\f[B]1\f[R] (exclusive) with the number of decimal digits after the
|
||||
decimal point equal to the truncated absolute value of \f[B]p\f[R].
|
||||
If \f[B]p\f[R] is not \f[B]0\f[R], then calling this function will
|
||||
|
|
@ -1740,7 +1740,7 @@ If \f[B]p\f[R] is \f[B]0\f[R], then \f[B]0\f[R] is returned, and
|
|||
\f[B]seed\f[R] is \f[I]not\f[R] changed.
|
||||
.TP
|
||||
\f[B]ifrand(i, p)\f[R]
|
||||
Generates a pseudo\-random integer that is between \f[B]0\f[R]
|
||||
Generates a pseudo\-random number that is between \f[B]0\f[R]
|
||||
(inclusive) and the truncated absolute value of \f[B]i\f[R] (exclusive)
|
||||
with the number of decimal digits after the decimal point equal to the
|
||||
truncated absolute value of \f[B]p\f[R].
|
||||
|
|
|
|||
|
|
@ -1433,7 +1433,7 @@ The extended library is a **non-portable extension**.
|
|||
|
||||
**frand(p)**
|
||||
|
||||
: Generates a pseudo-random integer between **0** (inclusive) and **1**
|
||||
: Generates a pseudo-random number between **0** (inclusive) and **1**
|
||||
(exclusive) with the number of decimal digits after the decimal point equal
|
||||
to the truncated absolute value of **p**. If **p** is not **0**, then
|
||||
calling this function will change the value of **seed**. If **p** is **0**,
|
||||
|
|
@ -1441,7 +1441,7 @@ The extended library is a **non-portable extension**.
|
|||
|
||||
**ifrand(i, p)**
|
||||
|
||||
: Generates a pseudo-random integer that is between **0** (inclusive) and the
|
||||
: Generates a pseudo-random number that is between **0** (inclusive) and the
|
||||
truncated absolute value of **i** (exclusive) with the number of decimal
|
||||
digits after the decimal point equal to the truncated absolute value of
|
||||
**p**. If the absolute value of **i** is greater than or equal to **2**, and
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.TH "BC" "1" "January 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.TH "BC" "1" "August 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.nh
|
||||
.ad l
|
||||
.SH NAME
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.TH "BC" "1" "January 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.TH "BC" "1" "August 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.nh
|
||||
.ad l
|
||||
.SH NAME
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.TH "BC" "1" "January 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.TH "BC" "1" "August 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.nh
|
||||
.ad l
|
||||
.SH NAME
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.TH "BC" "1" "January 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.TH "BC" "1" "August 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.nh
|
||||
.ad l
|
||||
.SH NAME
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.TH "BC" "1" "January 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.TH "BC" "1" "August 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.nh
|
||||
.ad l
|
||||
.SH NAME
|
||||
|
|
@ -1731,7 +1731,7 @@ Functions\f[R] subsection below).
|
|||
.RE
|
||||
.TP
|
||||
\f[B]frand(p)\f[R]
|
||||
Generates a pseudo\-random integer between \f[B]0\f[R] (inclusive) and
|
||||
Generates a pseudo\-random number between \f[B]0\f[R] (inclusive) and
|
||||
\f[B]1\f[R] (exclusive) with the number of decimal digits after the
|
||||
decimal point equal to the truncated absolute value of \f[B]p\f[R].
|
||||
If \f[B]p\f[R] is not \f[B]0\f[R], then calling this function will
|
||||
|
|
@ -1740,7 +1740,7 @@ If \f[B]p\f[R] is \f[B]0\f[R], then \f[B]0\f[R] is returned, and
|
|||
\f[B]seed\f[R] is \f[I]not\f[R] changed.
|
||||
.TP
|
||||
\f[B]ifrand(i, p)\f[R]
|
||||
Generates a pseudo\-random integer that is between \f[B]0\f[R]
|
||||
Generates a pseudo\-random number that is between \f[B]0\f[R]
|
||||
(inclusive) and the truncated absolute value of \f[B]i\f[R] (exclusive)
|
||||
with the number of decimal digits after the decimal point equal to the
|
||||
truncated absolute value of \f[B]p\f[R].
|
||||
|
|
|
|||
|
|
@ -1433,7 +1433,7 @@ The extended library is a **non-portable extension**.
|
|||
|
||||
**frand(p)**
|
||||
|
||||
: Generates a pseudo-random integer between **0** (inclusive) and **1**
|
||||
: Generates a pseudo-random number between **0** (inclusive) and **1**
|
||||
(exclusive) with the number of decimal digits after the decimal point equal
|
||||
to the truncated absolute value of **p**. If **p** is not **0**, then
|
||||
calling this function will change the value of **seed**. If **p** is **0**,
|
||||
|
|
@ -1441,7 +1441,7 @@ The extended library is a **non-portable extension**.
|
|||
|
||||
**ifrand(i, p)**
|
||||
|
||||
: Generates a pseudo-random integer that is between **0** (inclusive) and the
|
||||
: Generates a pseudo-random number that is between **0** (inclusive) and the
|
||||
truncated absolute value of **i** (exclusive) with the number of decimal
|
||||
digits after the decimal point equal to the truncated absolute value of
|
||||
**p**. If the absolute value of **i** is greater than or equal to **2**, and
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.TH "BC" "1" "January 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.TH "BC" "1" "August 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.nh
|
||||
.ad l
|
||||
.SH NAME
|
||||
|
|
@ -1731,7 +1731,7 @@ Functions\f[R] subsection below).
|
|||
.RE
|
||||
.TP
|
||||
\f[B]frand(p)\f[R]
|
||||
Generates a pseudo\-random integer between \f[B]0\f[R] (inclusive) and
|
||||
Generates a pseudo\-random number between \f[B]0\f[R] (inclusive) and
|
||||
\f[B]1\f[R] (exclusive) with the number of decimal digits after the
|
||||
decimal point equal to the truncated absolute value of \f[B]p\f[R].
|
||||
If \f[B]p\f[R] is not \f[B]0\f[R], then calling this function will
|
||||
|
|
@ -1740,7 +1740,7 @@ If \f[B]p\f[R] is \f[B]0\f[R], then \f[B]0\f[R] is returned, and
|
|||
\f[B]seed\f[R] is \f[I]not\f[R] changed.
|
||||
.TP
|
||||
\f[B]ifrand(i, p)\f[R]
|
||||
Generates a pseudo\-random integer that is between \f[B]0\f[R]
|
||||
Generates a pseudo\-random number that is between \f[B]0\f[R]
|
||||
(inclusive) and the truncated absolute value of \f[B]i\f[R] (exclusive)
|
||||
with the number of decimal digits after the decimal point equal to the
|
||||
truncated absolute value of \f[B]p\f[R].
|
||||
|
|
|
|||
|
|
@ -1433,7 +1433,7 @@ The extended library is a **non-portable extension**.
|
|||
|
||||
**frand(p)**
|
||||
|
||||
: Generates a pseudo-random integer between **0** (inclusive) and **1**
|
||||
: Generates a pseudo-random number between **0** (inclusive) and **1**
|
||||
(exclusive) with the number of decimal digits after the decimal point equal
|
||||
to the truncated absolute value of **p**. If **p** is not **0**, then
|
||||
calling this function will change the value of **seed**. If **p** is **0**,
|
||||
|
|
@ -1441,7 +1441,7 @@ The extended library is a **non-portable extension**.
|
|||
|
||||
**ifrand(i, p)**
|
||||
|
||||
: Generates a pseudo-random integer that is between **0** (inclusive) and the
|
||||
: Generates a pseudo-random number that is between **0** (inclusive) and the
|
||||
truncated absolute value of **i** (exclusive) with the number of decimal
|
||||
digits after the decimal point equal to the truncated absolute value of
|
||||
**p**. If the absolute value of **i** is greater than or equal to **2**, and
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.TH "BC" "1" "January 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.TH "BC" "1" "August 2024" "Gavin D. Howard" "General Commands Manual"
|
||||
.nh
|
||||
.ad l
|
||||
.SH NAME
|
||||
|
|
@ -1731,7 +1731,7 @@ Functions\f[R] subsection below).
|
|||
.RE
|
||||
.TP
|
||||
\f[B]frand(p)\f[R]
|
||||
Generates a pseudo\-random integer between \f[B]0\f[R] (inclusive) and
|
||||
Generates a pseudo\-random number between \f[B]0\f[R] (inclusive) and
|
||||
\f[B]1\f[R] (exclusive) with the number of decimal digits after the
|
||||
decimal point equal to the truncated absolute value of \f[B]p\f[R].
|
||||
If \f[B]p\f[R] is not \f[B]0\f[R], then calling this function will
|
||||
|
|
@ -1740,7 +1740,7 @@ If \f[B]p\f[R] is \f[B]0\f[R], then \f[B]0\f[R] is returned, and
|
|||
\f[B]seed\f[R] is \f[I]not\f[R] changed.
|
||||
.TP
|
||||
\f[B]ifrand(i, p)\f[R]
|
||||
Generates a pseudo\-random integer that is between \f[B]0\f[R]
|
||||
Generates a pseudo\-random number that is between \f[B]0\f[R]
|
||||
(inclusive) and the truncated absolute value of \f[B]i\f[R] (exclusive)
|
||||
with the number of decimal digits after the decimal point equal to the
|
||||
truncated absolute value of \f[B]p\f[R].
|
||||
|
|
|
|||
|
|
@ -1433,7 +1433,7 @@ The extended library is a **non-portable extension**.
|
|||
|
||||
**frand(p)**
|
||||
|
||||
: Generates a pseudo-random integer between **0** (inclusive) and **1**
|
||||
: Generates a pseudo-random number between **0** (inclusive) and **1**
|
||||
(exclusive) with the number of decimal digits after the decimal point equal
|
||||
to the truncated absolute value of **p**. If **p** is not **0**, then
|
||||
calling this function will change the value of **seed**. If **p** is **0**,
|
||||
|
|
@ -1441,7 +1441,7 @@ The extended library is a **non-portable extension**.
|
|||
|
||||
**ifrand(i, p)**
|
||||
|
||||
: Generates a pseudo-random integer that is between **0** (inclusive) and the
|
||||
: Generates a pseudo-random number that is between **0** (inclusive) and the
|
||||
truncated absolute value of **i** (exclusive) with the number of decimal
|
||||
digits after the decimal point equal to the truncated absolute value of
|
||||
**p**. If the absolute value of **i** is greater than or equal to **2**, and
|
||||
|
|
|
|||
|
|
@ -264,7 +264,18 @@ bc_history_line(BcHistory* h, BcVec* vec, const char* prompt)
|
|||
errno = EINTR;
|
||||
|
||||
// Get the line.
|
||||
while (line == NULL && (len == -1 || errno == EINTR))
|
||||
//
|
||||
// XXX: Why have a macro here? Because macOS needs to be special. Honestly,
|
||||
// it's starting to feel special like Windows at this point. Anyway, the
|
||||
// second SIGWINCH signal of multiple will return a valid line length on
|
||||
// macOS, so we need to allow for that on macOS. However, FreeBSD's editline
|
||||
// is different and will mess up the terminal if we do it that way.
|
||||
//
|
||||
// There is one limitation with this, however: Ctrl+D won't work on macOS.
|
||||
// But it's because of macOS that this problem exists, and I can't really do
|
||||
// anything about it. So macOS should fix their broken editline; once they
|
||||
// do, I'll fix Ctrl+D on macOS.
|
||||
while (BC_HISTORY_INVALID_LINE(line, len))
|
||||
{
|
||||
line = el_gets(h->el, &len);
|
||||
bc_history_use_prompt = false;
|
||||
|
|
|
|||
Loading…
Reference in a new issue