Commit f1310903 authored by Stefan Eßer's avatar Stefan Eßer
Browse files

Vendor import of Gavin Howard's bc-3.3.0

parent 47a52dc4
......@@ -29,7 +29,7 @@
#
.POSIX:
VERSION = 3.2.6
VERSION = 3.3.0
SRC = %%SRC%%
OBJ = %%OBJ%%
......
# News
## 3.3.0
This is a production release that changes one behavior and fixes documentation
bugs.
The changed behavior is the treatment of `-e` and `-f` when given through
`BC_ENV_ARGS` or `DC_ENV_ARGS`. Now `bc` and `dc` do not exit when those options
(or their equivalents) are given through those environment variables. However,
`bc` and `dc` still exit when they or their equivalents are given on the
command-line.
## 3.2.7
This is a production release that removes a small non-portable shell operation
in `configure.sh`. This problem was only noticed on OpenBSD, not FreeBSD or
Linux.
Non-OpenBSD users do ***NOT*** need to upgrade, although NetBSD users may also
need to upgrade.
## 3.2.6
This is a production release that fixes the build on FreeBSD.
......
......@@ -342,7 +342,7 @@ Folders:
[20]: https://git.yzena.com/gavin/bc
[21]: https://gavinhoward.com/2020/04/i-am-moving-away-from-github/
[22]: https://www.deepl.com/translator
[23]: https://svnweb.freebsd.org/base/head/contrib/bc/
[23]: https://cgit.freebsd.org/src/tree/contrib/bc
[24]: https://bugs.freebsd.org/
[25]: https://reviews.freebsd.org/
[26]: ./manuals/bcl.3.md
......@@ -253,7 +253,7 @@ replace_ext() {
_replace_ext_ext1="$2"
_replace_ext_ext2="$3"
_replace_ext_result=${_replace_ext_file%.$_replace_ext_ext1}.$_replace_ext_ext2
_replace_ext_result="${_replace_ext_file%.$_replace_ext_ext1}.$_replace_ext_ext2"
printf '%s\n' "$_replace_ext_result"
}
......@@ -1199,17 +1199,12 @@ SRC_TARGETS=""
src_files=$(find_src_files $unneeded)
temp_ifs="$IFS"
IFS=$'\n'
for f in $src_files; do
o=$(replace_ext "$f" "c" "o")
SRC_TARGETS=$(printf '%s\n\n%s: %s %s\n\t$(CC) $(CFLAGS) -o %s -c %s\n' \
"$SRC_TARGETS" "$o" "$headers" "$f" "$o" "$f")
done
IFS="$temp_ifs"
contents=$(replace "$contents" "HEADERS" "$headers")
contents=$(replace "$contents" "BC_ENABLED" "$bc")
......
......@@ -39,7 +39,7 @@
#include <status.h>
#include <vm.h>
void bc_args(int argc, char *argv[]);
void bc_args(int argc, char *argv[], bool exit_exprs);
extern const char* const bc_args_env_name;
......
......@@ -176,11 +176,15 @@ typedef enum BcErr {
#endif // __STDC_VERSION__
#if defined(__clang__) || defined(__GNUC__)
#if defined(__has_attribute) && __has_attribute(fallthrough)
#if defined(__has_attribute)
#if __has_attribute(fallthrough)
#define BC_FALLTHROUGH __attribute__((fallthrough));
#else // defined(__has_attribute) && __has_attribute(fallthrough)
#else // __has_attribute(fallthrough)
#define BC_FALLTHROUGH
#endif // defined(__has_attribute) && __has_attribute(fallthrough)
#endif // __has_attribute(fallthrough)
#else // defined(__has_attribute)
#define BC_FALLTHROUGH
#endif // defined(__has_attribute)
#else // defined(__clang__) || defined(__GNUC__)
#define BC_FALLTHROUGH
#endif // defined(__clang__) || defined(__GNUC__)
......
......@@ -356,6 +356,7 @@ typedef struct BcVm {
uint16_t line_len;
bool no_exit_exprs;
bool exit_exprs;
bool eof;
#endif // !BC_ENABLE_LIBRARY
......
......@@ -229,10 +229,13 @@ The following are the options that bc(1) accepts.
evaluated in the order given. This means that if a file is given before an
expression, the file is read in and evaluated first.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
However, if any other **-e**, **--expression**, **-f**, or **--file**
arguments are given after that, bc(1) will give a fatal error and exit.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**, whether on the
command-line or in **BC_ENV_ARGS**. However, if any other **-e**,
**--expression**, **-f**, or **--file** arguments are given after **-f-** or
equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -242,8 +245,12 @@ The following are the options that bc(1) accepts.
through **stdin**. If expressions are also given (see above), the
expressions are evaluated in the order given.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**. However, if any other
**-e**, **--expression**, **-f**, or **--file** arguments are given after
**-f-** or equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -251,7 +258,9 @@ All long options are **non-portable extensions**.
# STDOUT
Any non-error output is written to **stdout**.
Any non-error output is written to **stdout**. In addition, if history (see the
**HISTORY** section) and the prompt (see the **TTY MODE** section) are enabled,
both are output to **stdout**.
**Note**: Unlike other bc(1) implementations, this bc(1) will issue a fatal
error (see the **EXIT STATUS** section) if it cannot write to **stdout**, so if
......
......@@ -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 2021" "Gavin D. Howard" "General Commands Manual"
.TH "BC" "1" "February 2021" "Gavin D. Howard" "General Commands Manual"
.SH NAME
.PP
bc - arbitrary-precision decimal arithmetic language and calculator
......@@ -230,12 +230,16 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
\f[B]-f\f[R] or \f[B]\[en]file\f[R], whether on the command-line or in
\f[B]BC_ENV_ARGS\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after that,
bc(1) will give a fatal error and exit.
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -247,9 +251,15 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -258,6 +268,9 @@ All long options are \f[B]non-portable extensions\f[R].
.SH STDOUT
.PP
Any non-error output is written to \f[B]stdout\f[R].
In addition, if history (see the \f[B]HISTORY\f[R] section) and the
prompt (see the \f[B]TTY MODE\f[R] section) are enabled, both are output
to \f[B]stdout\f[R].
.PP
\f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will
issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot
......
......@@ -187,10 +187,13 @@ The following are the options that bc(1) accepts.
evaluated in the order given. This means that if a file is given before an
expression, the file is read in and evaluated first.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
However, if any other **-e**, **--expression**, **-f**, or **--file**
arguments are given after that, bc(1) will give a fatal error and exit.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**, whether on the
command-line or in **BC_ENV_ARGS**. However, if any other **-e**,
**--expression**, **-f**, or **--file** arguments are given after **-f-** or
equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -200,8 +203,12 @@ The following are the options that bc(1) accepts.
through **stdin**. If expressions are also given (see above), the
expressions are evaluated in the order given.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**. However, if any other
**-e**, **--expression**, **-f**, or **--file** arguments are given after
**-f-** or equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -209,7 +216,9 @@ All long options are **non-portable extensions**.
# STDOUT
Any non-error output is written to **stdout**.
Any non-error output is written to **stdout**. In addition, if history (see the
**HISTORY** section) and the prompt (see the **TTY MODE** section) are enabled,
both are output to **stdout**.
**Note**: Unlike other bc(1) implementations, this bc(1) will issue a fatal
error (see the **EXIT STATUS** section) if it cannot write to **stdout**, so if
......
......@@ -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 2021" "Gavin D. Howard" "General Commands Manual"
.TH "BC" "1" "February 2021" "Gavin D. Howard" "General Commands Manual"
.SH NAME
.PP
bc - arbitrary-precision decimal arithmetic language and calculator
......@@ -192,12 +192,16 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
\f[B]-f\f[R] or \f[B]\[en]file\f[R], whether on the command-line or in
\f[B]BC_ENV_ARGS\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after that,
bc(1) will give a fatal error and exit.
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -209,9 +213,15 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -220,6 +230,9 @@ All long options are \f[B]non-portable extensions\f[R].
.SH STDOUT
.PP
Any non-error output is written to \f[B]stdout\f[R].
In addition, if history (see the \f[B]HISTORY\f[R] section) and the
prompt (see the \f[B]TTY MODE\f[R] section) are enabled, both are output
to \f[B]stdout\f[R].
.PP
\f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will
issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot
......
......@@ -171,10 +171,13 @@ The following are the options that bc(1) accepts.
evaluated in the order given. This means that if a file is given before an
expression, the file is read in and evaluated first.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
However, if any other **-e**, **--expression**, **-f**, or **--file**
arguments are given after that, bc(1) will give a fatal error and exit.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**, whether on the
command-line or in **BC_ENV_ARGS**. However, if any other **-e**,
**--expression**, **-f**, or **--file** arguments are given after **-f-** or
equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -184,8 +187,12 @@ The following are the options that bc(1) accepts.
through **stdin**. If expressions are also given (see above), the
expressions are evaluated in the order given.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**. However, if any other
**-e**, **--expression**, **-f**, or **--file** arguments are given after
**-f-** or equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -193,7 +200,9 @@ All long options are **non-portable extensions**.
# STDOUT
Any non-error output is written to **stdout**.
Any non-error output is written to **stdout**. In addition, if history (see the
**HISTORY** section) and the prompt (see the **TTY MODE** section) are enabled,
both are output to **stdout**.
**Note**: Unlike other bc(1) implementations, this bc(1) will issue a fatal
error (see the **EXIT STATUS** section) if it cannot write to **stdout**, so if
......
......@@ -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 2021" "Gavin D. Howard" "General Commands Manual"
.TH "BC" "1" "February 2021" "Gavin D. Howard" "General Commands Manual"
.SH NAME
.PP
bc - arbitrary-precision decimal arithmetic language and calculator
......@@ -189,12 +189,16 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
\f[B]-f\f[R] or \f[B]\[en]file\f[R], whether on the command-line or in
\f[B]BC_ENV_ARGS\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after that,
bc(1) will give a fatal error and exit.
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -206,9 +210,15 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -217,6 +227,9 @@ All long options are \f[B]non-portable extensions\f[R].
.SH STDOUT
.PP
Any non-error output is written to \f[B]stdout\f[R].
In addition, if history (see the \f[B]HISTORY\f[R] section) and the
prompt (see the \f[B]TTY MODE\f[R] section) are enabled, both are output
to \f[B]stdout\f[R].
.PP
\f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will
issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot
......
......@@ -168,10 +168,13 @@ The following are the options that bc(1) accepts.
evaluated in the order given. This means that if a file is given before an
expression, the file is read in and evaluated first.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
However, if any other **-e**, **--expression**, **-f**, or **--file**
arguments are given after that, bc(1) will give a fatal error and exit.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**, whether on the
command-line or in **BC_ENV_ARGS**. However, if any other **-e**,
**--expression**, **-f**, or **--file** arguments are given after **-f-** or
equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -181,8 +184,12 @@ The following are the options that bc(1) accepts.
through **stdin**. If expressions are also given (see above), the
expressions are evaluated in the order given.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**. However, if any other
**-e**, **--expression**, **-f**, or **--file** arguments are given after
**-f-** or equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -190,7 +197,9 @@ All long options are **non-portable extensions**.
# STDOUT
Any non-error output is written to **stdout**.
Any non-error output is written to **stdout**. In addition, if history (see the
**HISTORY** section) and the prompt (see the **TTY MODE** section) are enabled,
both are output to **stdout**.
**Note**: Unlike other bc(1) implementations, this bc(1) will issue a fatal
error (see the **EXIT STATUS** section) if it cannot write to **stdout**, so if
......
......@@ -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 2021" "Gavin D. Howard" "General Commands Manual"
.TH "BC" "1" "February 2021" "Gavin D. Howard" "General Commands Manual"
.SH NAME
.PP
bc - arbitrary-precision decimal arithmetic language and calculator
......@@ -189,12 +189,16 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
\f[B]-f\f[R] or \f[B]\[en]file\f[R], whether on the command-line or in
\f[B]BC_ENV_ARGS\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after that,
bc(1) will give a fatal error and exit.
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -206,9 +210,15 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -217,6 +227,9 @@ All long options are \f[B]non-portable extensions\f[R].
.SH STDOUT
.PP
Any non-error output is written to \f[B]stdout\f[R].
In addition, if history (see the \f[B]HISTORY\f[R] section) and the
prompt (see the \f[B]TTY MODE\f[R] section) are enabled, both are output
to \f[B]stdout\f[R].
.PP
\f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will
issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot
......
......@@ -168,10 +168,13 @@ The following are the options that bc(1) accepts.
evaluated in the order given. This means that if a file is given before an
expression, the file is read in and evaluated first.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
However, if any other **-e**, **--expression**, **-f**, or **--file**
arguments are given after that, bc(1) will give a fatal error and exit.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**, whether on the
command-line or in **BC_ENV_ARGS**. However, if any other **-e**,
**--expression**, **-f**, or **--file** arguments are given after **-f-** or
equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -181,8 +184,12 @@ The following are the options that bc(1) accepts.
through **stdin**. If expressions are also given (see above), the
expressions are evaluated in the order given.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**. However, if any other
**-e**, **--expression**, **-f**, or **--file** arguments are given after
**-f-** or equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -190,7 +197,9 @@ All long options are **non-portable extensions**.
# STDOUT
Any non-error output is written to **stdout**.
Any non-error output is written to **stdout**. In addition, if history (see the
**HISTORY** section) and the prompt (see the **TTY MODE** section) are enabled,
both are output to **stdout**.
**Note**: Unlike other bc(1) implementations, this bc(1) will issue a fatal
error (see the **EXIT STATUS** section) if it cannot write to **stdout**, so if
......
......@@ -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 2021" "Gavin D. Howard" "General Commands Manual"
.TH "BC" "1" "February 2021" "Gavin D. Howard" "General Commands Manual"
.SH NAME
.PP
bc - arbitrary-precision decimal arithmetic language and calculator
......@@ -184,12 +184,16 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
\f[B]-f\f[R] or \f[B]\[en]file\f[R], whether on the command-line or in
\f[B]BC_ENV_ARGS\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after that,
bc(1) will give a fatal error and exit.
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -201,9 +205,15 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
After processing all expressions and files, bc(1) will exit, unless
If this option is given on the command-line (i.e., not in
\f[B]BC_ENV_ARGS\f[R], see the \f[B]ENVIRONMENT VARIABLES\f[R] section),
then after processing all expressions and files, bc(1) will exit, unless
\f[B]-\f[R] (\f[B]stdin\f[R]) was given as an argument at least once to
\f[B]-f\f[R] or \f[B]\[en]file\f[R].
However, if any other \f[B]-e\f[R], \f[B]\[en]expression\f[R],
\f[B]-f\f[R], or \f[B]\[en]file\f[R] arguments are given after
\f[B]-f-\f[R] or equivalent is given, bc(1) will give a fatal error and
exit.
.PP
This is a \f[B]non-portable extension\f[R].
.RE
......@@ -212,6 +222,9 @@ All long options are \f[B]non-portable extensions\f[R].
.SH STDOUT
.PP
Any non-error output is written to \f[B]stdout\f[R].
In addition, if history (see the \f[B]HISTORY\f[R] section) and the
prompt (see the \f[B]TTY MODE\f[R] section) are enabled, both are output
to \f[B]stdout\f[R].
.PP
\f[B]Note\f[R]: Unlike other bc(1) implementations, this bc(1) will
issue a fatal error (see the \f[B]EXIT STATUS\f[R] section) if it cannot
......
......@@ -164,10 +164,13 @@ The following are the options that bc(1) accepts.
evaluated in the order given. This means that if a file is given before an
expression, the file is read in and evaluated first.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
However, if any other **-e**, **--expression**, **-f**, or **--file**
arguments are given after that, bc(1) will give a fatal error and exit.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**, whether on the
command-line or in **BC_ENV_ARGS**. However, if any other **-e**,
**--expression**, **-f**, or **--file** arguments are given after **-f-** or
equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -177,8 +180,12 @@ The following are the options that bc(1) accepts.
through **stdin**. If expressions are also given (see above), the
expressions are evaluated in the order given.
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
If this option is given on the command-line (i.e., not in **BC_ENV_ARGS**,
see the **ENVIRONMENT VARIABLES** section), then after processing all
expressions and files, bc(1) will exit, unless **-** (**stdin**) was given
as an argument at least once to **-f** or **--file**. However, if any other
**-e**, **--expression**, **-f**, or **--file** arguments are given after
**-f-** or equivalent is given, bc(1) will give a fatal error and exit.
This is a **non-portable extension**.
......@@ -186,7 +193,9 @@ All long options are **non-portable extensions**.
# STDOUT
Any non-error output is written to **stdout**.
Any non-error output is written to **stdout**. In addition, if history (see the
**HISTORY** section) and the prompt (see the **TTY MODE** section) are enabled,
both are output to **stdout**.