aboutsummaryrefslogtreecommitdiffstats
path: root/src/args.c
diff options
context:
space:
mode:
authorGavin Howard <yzena.tech@gmail.com>2021-02-16 09:42:46 -0700
committerGavin Howard <yzena.tech@gmail.com>2021-02-16 09:42:46 -0700
commit580e4ada7319f34a06d0ab0ef8c3037283af085e (patch)
tree7300730cfb3b525ca1bfe8605b0d402f474de0b3 /src/args.c
parent38a619a84880493fed378e05df6972bac8614855 (diff)
downloadplatform_external_bc-580e4ada7319f34a06d0ab0ef8c3037283af085e.tar.gz
platform_external_bc-580e4ada7319f34a06d0ab0ef8c3037283af085e.tar.bz2
platform_external_bc-580e4ada7319f34a06d0ab0ef8c3037283af085e.zip
Make bc/dc not exit with -e and -f in B/DC_ENV_ARGS
This behavior was requested by my one user on NetBSD, and after checking with Stefan Esser of FreeBSD, we decided that it wasn't a big enough deal to not do. In fact, in my mind, it fixes a lot of problems with how B/DC_ENV_ARGS interacts with scripts.
Diffstat (limited to 'src/args.c')
-rw-r--r--src/args.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/args.c b/src/args.c
index b26062c6..9c26b7c1 100644
--- a/src/args.c
+++ b/src/args.c
@@ -89,7 +89,7 @@ static void bc_args_file(const char *file) {
free(buf);
}
-void bc_args(int argc, char *argv[]) {
+void bc_args(int argc, char *argv[], bool exit_exprs) {
int c;
size_t i;
@@ -109,6 +109,7 @@ void bc_args(int argc, char *argv[]) {
if (vm.no_exit_exprs)
bc_vm_verr(BC_ERR_FATAL_OPTION, "-e (--expression)");
bc_args_exprs(opts.optarg);
+ vm.exit_exprs = (exit_exprs || vm.exit_exprs);
break;
}
@@ -119,6 +120,7 @@ void bc_args(int argc, char *argv[]) {
if (vm.no_exit_exprs)
bc_vm_verr(BC_ERR_FATAL_OPTION, "-f (--file)");
bc_args_file(opts.optarg);
+ vm.exit_exprs = (exit_exprs || vm.exit_exprs);
}
break;
}