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

Import version 3.1.4

This version makes dc exit after processing all commands passed via -e or -f
instead of waiting for more input on STDIN (add "-f -" to the command line
to emulate the behavior of versionm 3.1.3 and earlier, if desired).

The version and copyright message are no longer printed for interactive
sessions as was the case with the prior implementation in the FreeBSD base
system.

Obtained from:	https://git.yzena.com/gavin/bc
parent ee177a09
......@@ -29,7 +29,7 @@
#
.POSIX:
VERSION = 3.1.3
VERSION = 3.1.4
SRC = %%SRC%%
OBJ = %%OBJ%%
......
# News
## 3.1.4
This is a production release that fixes one bug, changes two behaviors, and
removes one environment variable.
The bug is like the one in the last release except it applies if files are being
executed. I also made the fix more general.
The behavior that was changed is that `bc` now exits when given `-e`, `-f`,
`--expression` or `--file`. However, if the last one of those is `-f-` (using
`stdin` as the file), `bc` does not exit. If `-f-` exists and is not the last of
the `-e` and `-f` options (and equivalents), `bc` gives a fatal error and exits.
Next, I removed the `BC_EXPR_EXIT` and `DC_EXPR_EXIT` environment variables
since their use is not needed with the behavior change.
Finally, I made it so `bc` does not print the header, though the `-q` and
`--quiet` options were kept for compatibility with GNU `bc`.
## 3.1.3
This is a production release that fixes one minor bug: if `bc` was invoked like
......
......@@ -262,8 +262,8 @@ Other projects based on this bc are:
toybox `bc` should be reported there.
* [FreeBSD `bc`][23]. While the `bc` in FreeBSD is kept up-to-date, it is better
to report bugs there, and the maintainers of the package will contact me if
necessary.
to [report bugs there][24], as well as [submit patches][25], and the
maintainers of the package will contact me if necessary.
## Language
......@@ -332,4 +332,6 @@ 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://github.com/freebsd/freebsd/tree/master/contrib/bc
[23]: https://svnweb.freebsd.org/base/head/contrib/bc/
[24]: https://bugs.freebsd.org/
[25]: https://reviews.freebsd.org/
......@@ -159,9 +159,6 @@ void bc_parse_expr(BcParse *p, uint8_t flags);
void bc_parse_parse(BcParse *p);
void bc_parse_expr_status(BcParse *p, uint8_t flags, BcParseNext next);
// This is necessary to clear up for if statements at the end of files.
void bc_parse_noElse(BcParse *p);
extern const char bc_sig_msg[];
extern const uchar bc_sig_msg_len;
......
......@@ -102,11 +102,10 @@
#define BC_FLAG_G (UINTMAX_C(1)<<4)
#endif // BC_ENABLED
#define BC_FLAG_Q (UINTMAX_C(1)<<5)
#define BC_FLAG_I (UINTMAX_C(1)<<6)
#define BC_FLAG_P (UINTMAX_C(1)<<7)
#define BC_FLAG_TTYIN (UINTMAX_C(1)<<8)
#define BC_FLAG_TTY (UINTMAX_C(1)<<9)
#define BC_FLAG_I (UINTMAX_C(1)<<5)
#define BC_FLAG_P (UINTMAX_C(1)<<6)
#define BC_FLAG_TTYIN (UINTMAX_C(1)<<7)
#define BC_FLAG_TTY (UINTMAX_C(1)<<8)
#define BC_TTYIN (vm.flags & BC_FLAG_TTYIN)
#define BC_TTY (vm.flags & BC_FLAG_TTY)
......@@ -279,12 +278,6 @@
#define BC_VM_INVALID_CATALOG ((nl_catd) -1)
// dc does not use is_stdin.
#if !BC_ENABLED
#define bc_vm_process(text, is_stdin) bc_vm_process(text)
#else // BC_ENABLED
#endif // BC_ENABLED
typedef struct BcVm {
volatile sig_atomic_t status;
......@@ -310,6 +303,7 @@ typedef struct BcVm {
uint16_t nchars;
uint16_t line_len;
bool no_exit_exprs;
bool eof;
BcBigDig maxes[BC_PROG_GLOBALS_LEN + BC_ENABLE_EXTRA_MATH];
......@@ -360,7 +354,7 @@ typedef struct BcVm {
void bc_vm_info(const char* const help);
void bc_vm_boot(int argc, char *argv[], const char *env_len,
const char* const env_args, const char* env_exp_quit);
const char* const env_args);
void bc_vm_shutdown(void);
void bc_vm_printf(const char *fmt, ...);
......
......@@ -195,10 +195,10 @@ The following are the options that bc(1) accepts.
**-q**, **--quiet**
: Do not print copyright header. bc(1) will also suppress the header in
non-interactive mode.
This is mostly for compatibility with the [GNU bc(1)][2].
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
Without this option, GNU bc(1) prints a copyright header. This bc(1) only
prints the copyright header if one or more of the **-v**, **-V**, or
**--version** options are given.
This is a **non-portable extension**.
......@@ -229,9 +229,10 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the expressions and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
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.
This is a **non-portable extension**.
......@@ -241,9 +242,8 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the files and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
This is a **non-portable extension**.
......@@ -1615,12 +1615,6 @@ bc(1) recognizes the following environment variables:
lines to that length, including the backslash (**\\**). The default line
length is **70**.
**BC_EXPR_EXIT**
: If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the **-e** and/or
**-f** command-line options (and any equivalents).
# EXIT STATUS
bc(1) returns the following exit statuses:
......
......@@ -187,13 +187,13 @@ This is a \f[B]non\-portable extension\f[].
.RE
.TP
.B \f[B]\-q\f[], \f[B]\-\-quiet\f[]
Do not print copyright header.
bc(1) will also suppress the header in non\-interactive mode.
This option is for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/); it is a no\-op.
Without this option, GNU bc(1) prints a copyright header.
This bc(1) only prints the copyright header if one or more of the
\f[B]\-v\f[], \f[B]\-V\f[], or \f[B]\-\-version\f[] options are given.
.RS
.PP
This is mostly for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/).
.PP
This is a \f[B]non\-portable extension\f[].
.RE
.TP
......@@ -231,10 +231,12 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
In other bc(1) implementations, this option causes the program to
execute the expressions and then exit.
This bc(1) does not, unless the \f[B]BC_EXPR_EXIT\f[] is defined (see
the \f[B]ENVIRONMENT VARIABLES\f[] section).
After processing all expressions and files, bc(1) will exit, unless
\f[B]\-\f[] (\f[B]stdin\f[]) was given as an argument at least once to
\f[B]\-f\f[] or \f[B]\-\-file\f[].
However, if any other \f[B]\-e\f[], \f[B]\-\-expression\f[],
\f[B]\-f\f[], or \f[B]\-\-file\f[] arguments are given after that, bc(1)
will give a fatal error and exit.
.PP
This is a \f[B]non\-portable extension\f[].
.RE
......@@ -246,10 +248,9 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
In other bc(1) implementations, this option causes the program to
execute the files and then exit.
This bc(1) does not, unless the \f[B]BC_EXPR_EXIT\f[] is defined (see
the \f[B]ENVIRONMENT VARIABLES\f[] section).
After processing all expressions and files, bc(1) will exit, unless
\f[B]\-\f[] (\f[B]stdin\f[]) was given as an argument at least once to
\f[B]\-f\f[] or \f[B]\-\-file\f[].
.PP
This is a \f[B]non\-portable extension\f[].
.RE
......@@ -1915,14 +1916,6 @@ the backslash (\f[B]\\\f[]).
The default line length is \f[B]70\f[].
.RS
.RE
.TP
.B \f[B]BC_EXPR_EXIT\f[]
If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the
\f[B]\-e\f[] and/or \f[B]\-f\f[] command\-line options (and any
equivalents).
.RS
.RE
.SH EXIT STATUS
.PP
bc(1) returns the following exit statuses:
......
......@@ -153,10 +153,10 @@ The following are the options that bc(1) accepts.
**-q**, **--quiet**
: Do not print copyright header. bc(1) will also suppress the header in
non-interactive mode.
This is mostly for compatibility with the [GNU bc(1)][2].
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
Without this option, GNU bc(1) prints a copyright header. This bc(1) only
prints the copyright header if one or more of the **-v**, **-V**, or
**--version** options are given.
This is a **non-portable extension**.
......@@ -187,9 +187,10 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the expressions and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
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.
This is a **non-portable extension**.
......@@ -199,9 +200,8 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the files and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
This is a **non-portable extension**.
......@@ -1524,12 +1524,6 @@ bc(1) recognizes the following environment variables:
lines to that length, including the backslash (**\\**). The default line
length is **70**.
**BC_EXPR_EXIT**
: If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the **-e** and/or
**-f** command-line options (and any equivalents).
# EXIT STATUS
bc(1) returns the following exit statuses:
......
......@@ -148,13 +148,13 @@ This is a \f[B]non\-portable extension\f[].
.RE
.TP
.B \f[B]\-q\f[], \f[B]\-\-quiet\f[]
Do not print copyright header.
bc(1) will also suppress the header in non\-interactive mode.
This option is for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/); it is a no\-op.
Without this option, GNU bc(1) prints a copyright header.
This bc(1) only prints the copyright header if one or more of the
\f[B]\-v\f[], \f[B]\-V\f[], or \f[B]\-\-version\f[] options are given.
.RS
.PP
This is mostly for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/).
.PP
This is a \f[B]non\-portable extension\f[].
.RE
.TP
......@@ -192,10 +192,12 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
In other bc(1) implementations, this option causes the program to
execute the expressions and then exit.
This bc(1) does not, unless the \f[B]BC_EXPR_EXIT\f[] is defined (see
the \f[B]ENVIRONMENT VARIABLES\f[] section).
After processing all expressions and files, bc(1) will exit, unless
\f[B]\-\f[] (\f[B]stdin\f[]) was given as an argument at least once to
\f[B]\-f\f[] or \f[B]\-\-file\f[].
However, if any other \f[B]\-e\f[], \f[B]\-\-expression\f[],
\f[B]\-f\f[], or \f[B]\-\-file\f[] arguments are given after that, bc(1)
will give a fatal error and exit.
.PP
This is a \f[B]non\-portable extension\f[].
.RE
......@@ -207,10 +209,9 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
In other bc(1) implementations, this option causes the program to
execute the files and then exit.
This bc(1) does not, unless the \f[B]BC_EXPR_EXIT\f[] is defined (see
the \f[B]ENVIRONMENT VARIABLES\f[] section).
After processing all expressions and files, bc(1) will exit, unless
\f[B]\-\f[] (\f[B]stdin\f[]) was given as an argument at least once to
\f[B]\-f\f[] or \f[B]\-\-file\f[].
.PP
This is a \f[B]non\-portable extension\f[].
.RE
......@@ -1161,14 +1162,6 @@ the backslash (\f[B]\\\f[]).
The default line length is \f[B]70\f[].
.RS
.RE
.TP
.B \f[B]BC_EXPR_EXIT\f[]
If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the
\f[B]\-e\f[] and/or \f[B]\-f\f[] command\-line options (and any
equivalents).
.RS
.RE
.SH EXIT STATUS
.PP
bc(1) returns the following exit statuses:
......
......@@ -137,10 +137,10 @@ The following are the options that bc(1) accepts.
**-q**, **--quiet**
: Do not print copyright header. bc(1) will also suppress the header in
non-interactive mode.
This is mostly for compatibility with the [GNU bc(1)][2].
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
Without this option, GNU bc(1) prints a copyright header. This bc(1) only
prints the copyright header if one or more of the **-v**, **-V**, or
**--version** options are given.
This is a **non-portable extension**.
......@@ -171,9 +171,10 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the expressions and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
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.
This is a **non-portable extension**.
......@@ -183,9 +184,8 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the files and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
This is a **non-portable extension**.
......@@ -920,12 +920,6 @@ bc(1) recognizes the following environment variables:
lines to that length, including the backslash (**\\**). The default line
length is **70**.
**BC_EXPR_EXIT**
: If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the **-e** and/or
**-f** command-line options (and any equivalents).
# EXIT STATUS
bc(1) returns the following exit statuses:
......
......@@ -145,13 +145,13 @@ This is a \f[B]non\-portable extension\f[].
.RE
.TP
.B \f[B]\-q\f[], \f[B]\-\-quiet\f[]
Do not print copyright header.
bc(1) will also suppress the header in non\-interactive mode.
This option is for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/); it is a no\-op.
Without this option, GNU bc(1) prints a copyright header.
This bc(1) only prints the copyright header if one or more of the
\f[B]\-v\f[], \f[B]\-V\f[], or \f[B]\-\-version\f[] options are given.
.RS
.PP
This is mostly for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/).
.PP
This is a \f[B]non\-portable extension\f[].
.RE
.TP
......@@ -189,10 +189,12 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
In other bc(1) implementations, this option causes the program to
execute the expressions and then exit.
This bc(1) does not, unless the \f[B]BC_EXPR_EXIT\f[] is defined (see
the \f[B]ENVIRONMENT VARIABLES\f[] section).
After processing all expressions and files, bc(1) will exit, unless
\f[B]\-\f[] (\f[B]stdin\f[]) was given as an argument at least once to
\f[B]\-f\f[] or \f[B]\-\-file\f[].
However, if any other \f[B]\-e\f[], \f[B]\-\-expression\f[],
\f[B]\-f\f[], or \f[B]\-\-file\f[] arguments are given after that, bc(1)
will give a fatal error and exit.
.PP
This is a \f[B]non\-portable extension\f[].
.RE
......@@ -204,10 +206,9 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
In other bc(1) implementations, this option causes the program to
execute the files and then exit.
This bc(1) does not, unless the \f[B]BC_EXPR_EXIT\f[] is defined (see
the \f[B]ENVIRONMENT VARIABLES\f[] section).
After processing all expressions and files, bc(1) will exit, unless
\f[B]\-\f[] (\f[B]stdin\f[]) was given as an argument at least once to
\f[B]\-f\f[] or \f[B]\-\-file\f[].
.PP
This is a \f[B]non\-portable extension\f[].
.RE
......@@ -1158,14 +1159,6 @@ the backslash (\f[B]\\\f[]).
The default line length is \f[B]70\f[].
.RS
.RE
.TP
.B \f[B]BC_EXPR_EXIT\f[]
If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the
\f[B]\-e\f[] and/or \f[B]\-f\f[] command\-line options (and any
equivalents).
.RS
.RE
.SH EXIT STATUS
.PP
bc(1) returns the following exit statuses:
......
......@@ -134,10 +134,10 @@ The following are the options that bc(1) accepts.
**-q**, **--quiet**
: Do not print copyright header. bc(1) will also suppress the header in
non-interactive mode.
This is mostly for compatibility with the [GNU bc(1)][2].
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
Without this option, GNU bc(1) prints a copyright header. This bc(1) only
prints the copyright header if one or more of the **-v**, **-V**, or
**--version** options are given.
This is a **non-portable extension**.
......@@ -168,9 +168,10 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the expressions and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
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.
This is a **non-portable extension**.
......@@ -180,9 +181,8 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the files and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
This is a **non-portable extension**.
......@@ -917,12 +917,6 @@ bc(1) recognizes the following environment variables:
lines to that length, including the backslash (**\\**). The default line
length is **70**.
**BC_EXPR_EXIT**
: If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the **-e** and/or
**-f** command-line options (and any equivalents).
# EXIT STATUS
bc(1) returns the following exit statuses:
......
......@@ -145,13 +145,13 @@ This is a \f[B]non\-portable extension\f[].
.RE
.TP
.B \f[B]\-q\f[], \f[B]\-\-quiet\f[]
Do not print copyright header.
bc(1) will also suppress the header in non\-interactive mode.
This option is for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/); it is a no\-op.
Without this option, GNU bc(1) prints a copyright header.
This bc(1) only prints the copyright header if one or more of the
\f[B]\-v\f[], \f[B]\-V\f[], or \f[B]\-\-version\f[] options are given.
.RS
.PP
This is mostly for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/).
.PP
This is a \f[B]non\-portable extension\f[].
.RE
.TP
......@@ -189,10 +189,12 @@ This means that if a file is given before an expression, the file is
read in and evaluated first.
.RS
.PP
In other bc(1) implementations, this option causes the program to
execute the expressions and then exit.
This bc(1) does not, unless the \f[B]BC_EXPR_EXIT\f[] is defined (see
the \f[B]ENVIRONMENT VARIABLES\f[] section).
After processing all expressions and files, bc(1) will exit, unless
\f[B]\-\f[] (\f[B]stdin\f[]) was given as an argument at least once to
\f[B]\-f\f[] or \f[B]\-\-file\f[].
However, if any other \f[B]\-e\f[], \f[B]\-\-expression\f[],
\f[B]\-f\f[], or \f[B]\-\-file\f[] arguments are given after that, bc(1)
will give a fatal error and exit.
.PP
This is a \f[B]non\-portable extension\f[].
.RE
......@@ -204,10 +206,9 @@ If expressions are also given (see above), the expressions are evaluated
in the order given.
.RS
.PP
In other bc(1) implementations, this option causes the program to
execute the files and then exit.
This bc(1) does not, unless the \f[B]BC_EXPR_EXIT\f[] is defined (see
the \f[B]ENVIRONMENT VARIABLES\f[] section).
After processing all expressions and files, bc(1) will exit, unless
\f[B]\-\f[] (\f[B]stdin\f[]) was given as an argument at least once to
\f[B]\-f\f[] or \f[B]\-\-file\f[].
.PP
This is a \f[B]non\-portable extension\f[].
.RE
......@@ -1158,14 +1159,6 @@ the backslash (\f[B]\\\f[]).
The default line length is \f[B]70\f[].
.RS
.RE
.TP
.B \f[B]BC_EXPR_EXIT\f[]
If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the
\f[B]\-e\f[] and/or \f[B]\-f\f[] command\-line options (and any
equivalents).
.RS
.RE
.SH EXIT STATUS
.PP
bc(1) returns the following exit statuses:
......
......@@ -134,10 +134,10 @@ The following are the options that bc(1) accepts.
**-q**, **--quiet**
: Do not print copyright header. bc(1) will also suppress the header in
non-interactive mode.
This is mostly for compatibility with the [GNU bc(1)][2].
: This option is for compatibility with the [GNU bc(1)][2]; it is a no-op.
Without this option, GNU bc(1) prints a copyright header. This bc(1) only
prints the copyright header if one or more of the **-v**, **-V**, or
**--version** options are given.
This is a **non-portable extension**.
......@@ -168,9 +168,10 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the expressions and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
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.
This is a **non-portable extension**.
......@@ -180,9 +181,8 @@ 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.
In other bc(1) implementations, this option causes the program to execute
the files and then exit. This bc(1) does not, unless the
**BC_EXPR_EXIT** is defined (see the **ENVIRONMENT VARIABLES** section).
After processing all expressions and files, bc(1) will exit, unless **-**
(**stdin**) was given as an argument at least once to **-f** or **--file**.
This is a **non-portable extension**.
......@@ -917,12 +917,6 @@ bc(1) recognizes the following environment variables:
lines to that length, including the backslash (**\\**). The default line
length is **70**.
**BC_EXPR_EXIT**
: If this variable exists (no matter the contents), bc(1) will exit
immediately after executing expressions and files given by the **-e** and/or
**-f** command-line options (and any equivalents).
# EXIT STATUS
bc(1) returns the following exit statuses:
......
......@@ -140,13 +140,13 @@ This is a \f[B]non\-portable extension\f[].
.RE
.TP
.B \f[B]\-q\f[], \f[B]\-\-quiet\f[]
Do not print copyright header.
bc(1) will also suppress the header in non\-interactive mode.
This option is for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/); it is a no\-op.
Without this option, GNU bc(1) prints a copyright header.
This bc(1) only prints the copyright header if one or more of the
\f[B]\-v\f[], \f[B]\-V\f[], or \f[B]\-\-version\f[] options are given.
.RS
.PP
This is mostly for compatibility with the GNU
bc(1) (https://www.gnu.org/software/bc/).
.PP
This is a \f[B]non\-portable extension\f[].
.RE