aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-12-06 11:43:17 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-12-06 11:43:17 +0100
commit23c2e9fcf9a61da814aee986b30efd9c531fb94d (patch)
treeff38463dacfc873d56252a7bbd0ed245969bf755
parent9ca9ef2d5b4eea4ee79784b226c556ab8b0818de (diff)
downloadbusybox-w32-23c2e9fcf9a61da814aee986b30efd9c531fb94d.tar.gz
busybox-w32-23c2e9fcf9a61da814aee986b30efd9c531fb94d.tar.bz2
busybox-w32-23c2e9fcf9a61da814aee986b30efd9c531fb94d.zip
bc: unbreak "BC only" and "DC only" configs
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--miscutils/bc.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 26044afbc..ad6831683 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -974,6 +974,7 @@ static NOINLINE int bc_error_fmt(const char *fmt, ...)
974 return BC_STATUS_FAILURE; 974 return BC_STATUS_FAILURE;
975} 975}
976 976
977#if ENABLE_BC
977static NOINLINE int bc_posix_error_fmt(const char *fmt, ...) 978static NOINLINE int bc_posix_error_fmt(const char *fmt, ...)
978{ 979{
979 va_list p; 980 va_list p;
@@ -993,6 +994,7 @@ static NOINLINE int bc_posix_error_fmt(const char *fmt, ...)
993 exit(1); 994 exit(1);
994 return BC_STATUS_FAILURE; 995 return BC_STATUS_FAILURE;
995} 996}
997#endif
996 998
997// We use error functions with "return bc_error(FMT[, PARAMS])" idiom. 999// We use error functions with "return bc_error(FMT[, PARAMS])" idiom.
998// This idiom begs for tail-call optimization, but for it to work, 1000// This idiom begs for tail-call optimization, but for it to work,
@@ -1003,6 +1005,7 @@ static int bc_error(const char *msg)
1003{ 1005{
1004 return bc_error_fmt("%s", msg); 1006 return bc_error_fmt("%s", msg);
1005} 1007}
1008#if ENABLE_BC
1006static int bc_POSIX_requires(const char *msg) 1009static int bc_POSIX_requires(const char *msg)
1007{ 1010{
1008 return bc_posix_error_fmt("POSIX requires %s", msg); 1011 return bc_posix_error_fmt("POSIX requires %s", msg);
@@ -1019,6 +1022,7 @@ static int bc_POSIX_does_not_allow_empty_X_expression_in_for(const char *msg)
1019{ 1022{
1020 return bc_posix_error_fmt("%san empty %s expression in a for loop", "POSIX does not allow ", msg); 1023 return bc_posix_error_fmt("%san empty %s expression in a for loop", "POSIX does not allow ", msg);
1021} 1024}
1025#endif
1022static int bc_error_bad_character(char c) 1026static int bc_error_bad_character(char c)
1023{ 1027{
1024 return bc_error_fmt("bad character '%c'", c); 1028 return bc_error_fmt("bad character '%c'", c);
@@ -1210,12 +1214,14 @@ static int bc_map_insert(BcVec *v, const void *ptr, size_t *i)
1210 return 1; // "was inserted" 1214 return 1; // "was inserted"
1211} 1215}
1212 1216
1217#if ENABLE_BC
1213static size_t bc_map_index(const BcVec *v, const void *ptr) 1218static size_t bc_map_index(const BcVec *v, const void *ptr)
1214{ 1219{
1215 size_t i = bc_map_find(v, ptr); 1220 size_t i = bc_map_find(v, ptr);
1216 if (i >= v->len) return BC_VEC_INVALID_IDX; 1221 if (i >= v->len) return BC_VEC_INVALID_IDX;
1217 return bc_id_cmp(ptr, bc_vec_item(v, i)) ? BC_VEC_INVALID_IDX : i; 1222 return bc_id_cmp(ptr, bc_vec_item(v, i)) ? BC_VEC_INVALID_IDX : i;
1218} 1223}
1224#endif
1219 1225
1220static int push_input_byte(BcVec *vec, char c) 1226static int push_input_byte(BcVec *vec, char c)
1221{ 1227{
@@ -2673,6 +2679,7 @@ err:
2673} 2679}
2674#endif // ENABLE_DC 2680#endif // ENABLE_DC
2675 2681
2682#if ENABLE_BC
2676static BcStatus bc_func_insert(BcFunc *f, char *name, bool var) 2683static BcStatus bc_func_insert(BcFunc *f, char *name, bool var)
2677{ 2684{
2678 BcId a; 2685 BcId a;
@@ -2690,6 +2697,7 @@ static BcStatus bc_func_insert(BcFunc *f, char *name, bool var)
2690 2697
2691 return BC_STATUS_SUCCESS; 2698 return BC_STATUS_SUCCESS;
2692} 2699}
2700#endif
2693 2701
2694static void bc_func_init(BcFunc *f) 2702static void bc_func_init(BcFunc *f)
2695{ 2703{
@@ -5227,18 +5235,18 @@ static void dc_parse_init(BcParse *p, size_t func)
5227static void common_parse_init(BcParse *p, size_t func) 5235static void common_parse_init(BcParse *p, size_t func)
5228{ 5236{
5229 if (IS_BC) { 5237 if (IS_BC) {
5230 bc_parse_init(p, func); 5238 IF_BC(bc_parse_init(p, func);)
5231 } else { 5239 } else {
5232 dc_parse_init(p, func); 5240 IF_DC(dc_parse_init(p, func);)
5233 } 5241 }
5234} 5242}
5235 5243
5236static BcStatus common_parse_expr(BcParse *p, uint8_t flags) 5244static BcStatus common_parse_expr(BcParse *p, uint8_t flags)
5237{ 5245{
5238 if (IS_BC) { 5246 if (IS_BC) {
5239 return bc_parse_expression(p, flags); 5247 IF_BC(return bc_parse_expression(p, flags);)
5240 } else { 5248 } else {
5241 return dc_parse_expr(p, flags); 5249 IF_DC(return dc_parse_expr(p, flags);)
5242 } 5250 }
5243} 5251}
5244 5252
@@ -7427,12 +7435,12 @@ static void bc_vm_init(void)
7427{ 7435{
7428 bc_vec_init(&G.files, sizeof(char *), NULL); 7436 bc_vec_init(&G.files, sizeof(char *), NULL);
7429 if (IS_BC) 7437 if (IS_BC)
7430 bc_vm_envArgs(); 7438 IF_BC(bc_vm_envArgs();)
7431 bc_program_init(); 7439 bc_program_init();
7432 if (IS_BC) { 7440 if (IS_BC) {
7433 bc_parse_init(&G.prs, BC_PROG_MAIN); 7441 IF_BC(bc_parse_init(&G.prs, BC_PROG_MAIN);)
7434 } else { 7442 } else {
7435 dc_parse_init(&G.prs, BC_PROG_MAIN); 7443 IF_DC(dc_parse_init(&G.prs, BC_PROG_MAIN);)
7436 } 7444 }
7437} 7445}
7438 7446