aboutsummaryrefslogtreecommitdiff
path: root/miscutils/bc.c
diff options
context:
space:
mode:
Diffstat (limited to 'miscutils/bc.c')
-rw-r--r--miscutils/bc.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 45cdeae7f..0330c43e5 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -771,11 +771,12 @@ struct globals {
771#define G_posix (ENABLE_BC && (option_mask32 & BC_FLAG_S)) 771#define G_posix (ENABLE_BC && (option_mask32 & BC_FLAG_S))
772#define G_warn (ENABLE_BC && (option_mask32 & BC_FLAG_W)) 772#define G_warn (ENABLE_BC && (option_mask32 & BC_FLAG_W))
773#define G_exreg (ENABLE_DC && (option_mask32 & DC_FLAG_X)) 773#define G_exreg (ENABLE_DC && (option_mask32 & DC_FLAG_X))
774#define G_interrupt (ENABLE_FEATURE_BC_SIGNALS ? bb_got_signal : 0)
775#if ENABLE_FEATURE_BC_SIGNALS 774#if ENABLE_FEATURE_BC_SIGNALS
776# define G_ttyin G.ttyin 775# define G_interrupt bb_got_signal
776# define G_ttyin G.ttyin
777#else 777#else
778# define G_ttyin 0 778# define G_interrupt 0
779# define G_ttyin 0
779#endif 780#endif
780#if ENABLE_FEATURE_CLEAN_UP 781#if ENABLE_FEATURE_CLEAN_UP
781# define G_exiting G.exiting 782# define G_exiting G.exiting
@@ -1262,9 +1263,9 @@ static BcStatus bc_read_line(BcVec *vec, const char *prompt)
1262 fflush_and_check(); 1263 fflush_and_check();
1263 1264
1264#if ENABLE_FEATURE_BC_SIGNALS 1265#if ENABLE_FEATURE_BC_SIGNALS
1265 if (bb_got_signal) { // ^C was pressed 1266 if (G_interrupt) { // ^C was pressed
1266 intr: 1267 intr:
1267 bb_got_signal = 0; // resets G_interrupt to zero 1268 G_interrupt = 0;
1268 fputs(IS_BC 1269 fputs(IS_BC
1269 ? "\ninterrupt (type \"quit\" to exit)\n" 1270 ? "\ninterrupt (type \"quit\" to exit)\n"
1270 : "\ninterrupt (type \"q\" to exit)\n" 1271 : "\ninterrupt (type \"q\" to exit)\n"
@@ -1299,7 +1300,7 @@ static BcStatus bc_read_line(BcVec *vec, const char *prompt)
1299 c = fgetc(stdin); 1300 c = fgetc(stdin);
1300#if ENABLE_FEATURE_BC_SIGNALS && !ENABLE_FEATURE_EDITING 1301#if ENABLE_FEATURE_BC_SIGNALS && !ENABLE_FEATURE_EDITING
1301 // Both conditions appear simultaneously, check both just in case 1302 // Both conditions appear simultaneously, check both just in case
1302 if (errno == EINTR || bb_got_signal) { 1303 if (errno == EINTR || G_interrupt) {
1303 // ^C was pressed 1304 // ^C was pressed
1304 clearerr(stdin); 1305 clearerr(stdin);
1305 goto intr; 1306 goto intr;