bc: unbreak "BC only" and "DC only" configs

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-12-06 11:43:17 +01:00
parent 9ca9ef2d5b
commit 23c2e9fcf9

View File

@ -974,6 +974,7 @@ static NOINLINE int bc_error_fmt(const char *fmt, ...)
return BC_STATUS_FAILURE; return BC_STATUS_FAILURE;
} }
#if ENABLE_BC
static NOINLINE int bc_posix_error_fmt(const char *fmt, ...) static NOINLINE int bc_posix_error_fmt(const char *fmt, ...)
{ {
va_list p; va_list p;
@ -993,6 +994,7 @@ static NOINLINE int bc_posix_error_fmt(const char *fmt, ...)
exit(1); exit(1);
return BC_STATUS_FAILURE; return BC_STATUS_FAILURE;
} }
#endif
// We use error functions with "return bc_error(FMT[, PARAMS])" idiom. // We use error functions with "return bc_error(FMT[, PARAMS])" idiom.
// This idiom begs for tail-call optimization, but for it to work, // This idiom begs for tail-call optimization, but for it to work,
@ -1003,6 +1005,7 @@ static int bc_error(const char *msg)
{ {
return bc_error_fmt("%s", msg); return bc_error_fmt("%s", msg);
} }
#if ENABLE_BC
static int bc_POSIX_requires(const char *msg) static int bc_POSIX_requires(const char *msg)
{ {
return bc_posix_error_fmt("POSIX requires %s", msg); 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)
{ {
return bc_posix_error_fmt("%san empty %s expression in a for loop", "POSIX does not allow ", msg); return bc_posix_error_fmt("%san empty %s expression in a for loop", "POSIX does not allow ", msg);
} }
#endif
static int bc_error_bad_character(char c) static int bc_error_bad_character(char c)
{ {
return bc_error_fmt("bad character '%c'", c); 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)
return 1; // "was inserted" return 1; // "was inserted"
} }
#if ENABLE_BC
static size_t bc_map_index(const BcVec *v, const void *ptr) static size_t bc_map_index(const BcVec *v, const void *ptr)
{ {
size_t i = bc_map_find(v, ptr); size_t i = bc_map_find(v, ptr);
if (i >= v->len) return BC_VEC_INVALID_IDX; if (i >= v->len) return BC_VEC_INVALID_IDX;
return bc_id_cmp(ptr, bc_vec_item(v, i)) ? BC_VEC_INVALID_IDX : i; return bc_id_cmp(ptr, bc_vec_item(v, i)) ? BC_VEC_INVALID_IDX : i;
} }
#endif
static int push_input_byte(BcVec *vec, char c) static int push_input_byte(BcVec *vec, char c)
{ {
@ -2673,6 +2679,7 @@ err:
} }
#endif // ENABLE_DC #endif // ENABLE_DC
#if ENABLE_BC
static BcStatus bc_func_insert(BcFunc *f, char *name, bool var) static BcStatus bc_func_insert(BcFunc *f, char *name, bool var)
{ {
BcId a; BcId a;
@ -2690,6 +2697,7 @@ static BcStatus bc_func_insert(BcFunc *f, char *name, bool var)
return BC_STATUS_SUCCESS; return BC_STATUS_SUCCESS;
} }
#endif
static void bc_func_init(BcFunc *f) static void bc_func_init(BcFunc *f)
{ {
@ -5227,18 +5235,18 @@ static void dc_parse_init(BcParse *p, size_t func)
static void common_parse_init(BcParse *p, size_t func) static void common_parse_init(BcParse *p, size_t func)
{ {
if (IS_BC) { if (IS_BC) {
bc_parse_init(p, func); IF_BC(bc_parse_init(p, func);)
} else { } else {
dc_parse_init(p, func); IF_DC(dc_parse_init(p, func);)
} }
} }
static BcStatus common_parse_expr(BcParse *p, uint8_t flags) static BcStatus common_parse_expr(BcParse *p, uint8_t flags)
{ {
if (IS_BC) { if (IS_BC) {
return bc_parse_expression(p, flags); IF_BC(return bc_parse_expression(p, flags);)
} else { } else {
return dc_parse_expr(p, flags); IF_DC(return dc_parse_expr(p, flags);)
} }
} }
@ -7427,12 +7435,12 @@ static void bc_vm_init(void)
{ {
bc_vec_init(&G.files, sizeof(char *), NULL); bc_vec_init(&G.files, sizeof(char *), NULL);
if (IS_BC) if (IS_BC)
bc_vm_envArgs(); IF_BC(bc_vm_envArgs();)
bc_program_init(); bc_program_init();
if (IS_BC) { if (IS_BC) {
bc_parse_init(&G.prs, BC_PROG_MAIN); IF_BC(bc_parse_init(&G.prs, BC_PROG_MAIN);)
} else { } else {
dc_parse_init(&G.prs, BC_PROG_MAIN); IF_DC(dc_parse_init(&G.prs, BC_PROG_MAIN);)
} }
} }