[git commit] bc: remove "error ids": serve no useful purpose, error message should be explanatory enough

Denys Vlasenko vda.linux at googlemail.com
Wed Dec 5 14:43:35 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=b8860a8892f077091177170fe483d545d33789a6
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
bc_warn_fmt                                           17      14      -3
bc_err_fmt                                            15      12      -3
bc_vm_posixError                                     205     189     -16
bc_vm_error                                          156     138     -18
bc_errs                                               28       -     -28
bc_err_ids                                            58       -     -58
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 0/4 up/down: 0/-126)           Total: -126 bytes
   text	   data	    bss	    dec	    hex	filename
 988288	    485	   7296	 996069	  f32e5	busybox_old
 988122	    485	   7296	 995903	  f323f	busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 miscutils/bc.c | 68 ++++++++++------------------------------------------------
 1 file changed, 11 insertions(+), 57 deletions(-)

diff --git a/miscutils/bc.c b/miscutils/bc.c
index e224c8dd4..a8b170f0c 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -242,16 +242,6 @@ typedef enum BcStatus {
 
 } BcStatus;
 
-#define BC_ERR_IDX_VM (0)
-#define BC_ERR_IDX_LEX (1)
-#define BC_ERR_IDX_PARSE (2)
-#define BC_ERR_IDX_MATH (3)
-#define BC_ERR_IDX_EXEC (4)
-#define BC_ERR_IDX_VEC (5)
-#if ENABLE_BC
-#define BC_ERR_IDX_POSIX (6)
-#endif
-
 #define BC_VEC_INVALID_IDX ((size_t) -1)
 #define BC_VEC_START_CAP (1 << 5)
 
@@ -844,49 +834,10 @@ static BcStatus bc_vm_posixError(BcStatus s, const char *file, size_t line,
 
 static void bc_vm_info(void);
 
-static const char bc_err_fmt[] = "\n%s error: %s\n";
-static const char bc_warn_fmt[] = "\n%s warning: %s\n";
+static const char bc_err_fmt[] = "\nerror: %s\n";
+static const char bc_warn_fmt[] = "\nwarning: %s\n";
 static const char bc_err_line[] = ":%zu\n\n";
 
-static const char *bc_errs[] = {
-	"VM",
-	"Lex",
-	"Parse",
-	"Math",
-	"Runtime",
-	"Vector",
-#if ENABLE_BC
-	"POSIX",
-#endif
-};
-
-static const uint8_t bc_err_ids[] = {
-	BC_ERR_IDX_VM, BC_ERR_IDX_VM, BC_ERR_IDX_VM, BC_ERR_IDX_VM, BC_ERR_IDX_VM,
-	BC_ERR_IDX_LEX, BC_ERR_IDX_LEX, BC_ERR_IDX_LEX, BC_ERR_IDX_LEX,
-#if ENABLE_DC
-	BC_ERR_IDX_LEX,
-#endif
-	BC_ERR_IDX_PARSE, BC_ERR_IDX_PARSE, BC_ERR_IDX_PARSE, BC_ERR_IDX_PARSE,
-	BC_ERR_IDX_PARSE, BC_ERR_IDX_PARSE, BC_ERR_IDX_PARSE, BC_ERR_IDX_PARSE,
-	BC_ERR_IDX_MATH, BC_ERR_IDX_MATH, BC_ERR_IDX_MATH, BC_ERR_IDX_MATH,
-	BC_ERR_IDX_MATH,
-#if ENABLE_DC
-	BC_ERR_IDX_MATH,
-#endif
-	BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC,
-	BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC,
-	BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC,
-	BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC, BC_ERR_IDX_EXEC,
-	BC_ERR_IDX_EXEC,
-	BC_ERR_IDX_VEC, BC_ERR_IDX_VEC,
-#if ENABLE_BC
-	BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX,
-	BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX,
-	BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX, BC_ERR_IDX_POSIX,
-#endif
-	BC_ERR_IDX_VM, BC_ERR_IDX_VM, BC_ERR_IDX_VM,
-};
-
 static const char *bc_err_msgs[] = {
 
 	NULL,
@@ -6863,7 +6814,7 @@ static BcStatus bc_vm_error(BcStatus s, const char *file, size_t line)
 {
 	if (!s || s > BC_STATUS_VEC_ITEM_EXISTS) return s;
 
-	fprintf(stderr, bc_err_fmt, bc_errs[bc_err_ids[s]], bc_err_msgs[s]);
+	fprintf(stderr, bc_err_fmt, bc_err_msgs[s]);
 	fprintf(stderr, "    %s", file);
 	fprintf(stderr, bc_err_line + 4 * !line, line);
 
@@ -6874,17 +6825,20 @@ static BcStatus bc_vm_error(BcStatus s, const char *file, size_t line)
 static BcStatus bc_vm_posixError(BcStatus s, const char *file, size_t line,
                                  const char *msg)
 {
-	int p = (int) G_posix, w = (int) G_warn;
-	const char *const fmt = p ? bc_err_fmt : bc_warn_fmt;
+	const char *fmt;
 
-	if (!(p || w) || s < BC_STATUS_POSIX_NAME_LEN) return BC_STATUS_SUCCESS;
+	if (!(G.flags & (BC_FLAG_S|BC_FLAG_W))) return BC_STATUS_SUCCESS;
+	if (s < BC_STATUS_POSIX_NAME_LEN) return BC_STATUS_SUCCESS;
 
-	fprintf(stderr, fmt, bc_errs[bc_err_ids[s]], bc_err_msgs[s]);
+	fmt = G_posix ? bc_err_fmt : bc_warn_fmt;
+	fprintf(stderr, fmt, bc_err_msgs[s]);
 	if (msg) fprintf(stderr, "    %s\n", msg);
 	fprintf(stderr, "    %s", file);
 	fprintf(stderr, bc_err_line + 4 * !line, line);
 
-	return s * (!G.ttyin && !!p);
+	if (G.ttyin || !G_posix)
+		s = BC_STATUS_SUCCESS;
+	return s;
 }
 
 static void bc_vm_envArgs(void)


More information about the busybox-cvs mailing list