From d0d96d037adae0a1aa21e40edaa9c4ff7c29148d Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Tue, 3 Aug 2021 11:36:09 +0300 Subject: New macro: ARRAY_SIZE --- src/gdbmdefs.h | 3 +++ src/gdbmsetopt.c | 2 +- src/gdbmtool.c | 18 +++++++++--------- src/var.c | 3 +-- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/gdbmdefs.h b/src/gdbmdefs.h index e1dcc66..18ab8a0 100644 --- a/src/gdbmdefs.h +++ b/src/gdbmdefs.h @@ -54,6 +54,9 @@ off_t_sum_ok (off_t a, off_t b) return a >= 0 && b >= 0 && OFF_T_MAX - a >= b; } + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) + /* The type definitions are next. */ /* The available file space is stored in an "avail" table. The one with diff --git a/src/gdbmsetopt.c b/src/gdbmsetopt.c index a49ea40..22c5279 100644 --- a/src/gdbmsetopt.c +++ b/src/gdbmsetopt.c @@ -331,7 +331,7 @@ gdbm_setopt (GDBM_FILE dbf, int optflag, void *optval, int optlen) GDBM_ASSERT_CONSISTENCY (dbf, -1); if (optflag >= 0 - && optflag < sizeof (setopt_handler_tab) / sizeof (setopt_handler_tab[0]) + && optflag < ARRAY_SIZE (setopt_handler_tab) && setopt_handler_tab[optflag]) return setopt_handler_tab[optflag] (dbf, optval, optlen); diff --git a/src/gdbmtool.c b/src/gdbmtool.c index 88fc660..e12b349 100644 --- a/src/gdbmtool.c +++ b/src/gdbmtool.c @@ -924,8 +924,8 @@ print_snapshot (char const *snapname, FILE *fp) break; default: - error_push (errs, &errn, sizeof (errs) / sizeof (errs[0]), - N_("bad file mode"), 0, 0); + error_push (errs, &errn, ARRAY_SIZE (errs), N_("bad file mode"), + 0, 0); } fprintf (fp, "%s: ", snapname); @@ -949,17 +949,17 @@ print_snapshot (char const *snapname, FILE *fp) if (errno == EACCES) fprintf (fp, " ?"); else - error_push (errs, &errn, sizeof (errs) / sizeof (errs[0]), + error_push (errs, &errn, ARRAY_SIZE (errs), N_("can't open database"), gdbm_errno, errno); } else - error_push (errs, &errn, sizeof (errs) / sizeof (errs[0]), + error_push (errs, &errn, ARRAY_SIZE (errs), N_("can't open database"), gdbm_errno, 0); } else - error_push (errs, &errn, sizeof (errs) / sizeof (errs[0]), + error_push (errs, &errn, ARRAY_SIZE (errs), N_("not a regular file"), 0, 0); fputc ('\n', fp); @@ -1044,7 +1044,7 @@ snapshot_handler (struct handler_param *param) char const *sel; int rc = gdbm_latest_snapshot (sa, sb, &sel); - if (rc >= 0 && rc < sizeof(snapshot_status_info)/sizeof(snapshot_status_info[0])) + if (rc >= 0 && rc < ARRAY_SIZE (snapshot_status_info)) { fprintf (param->fp, "%s: %s.\n", @@ -1695,9 +1695,9 @@ cmdcmp (const void *a, const void *b) } void -sort_commands () +sort_commands (void) { - qsort (command_tab, sizeof (command_tab) / sizeof (command_tab[0]) - 1, + qsort (command_tab, ARRAY_SIZE (command_tab) - 1, sizeof (command_tab[0]), cmdcmp); } @@ -1742,7 +1742,7 @@ int help_begin (struct handler_param *param GDBM_ARG_UNUSED, size_t *exp_count) { if (exp_count) - *exp_count = sizeof (command_tab) / sizeof (command_tab[0]) + 1; + *exp_count = ARRAY_SIZE (command_tab) + 1; return 0; } diff --git a/src/var.c b/src/var.c index 869c127..c136c14 100644 --- a/src/var.c +++ b/src/var.c @@ -334,8 +334,7 @@ variable_print_all (FILE *fp) if (!sorted) { - qsort (vartab, sizeof (vartab) / sizeof (vartab[0]) - 1, - sizeof (vartab[0]), varcmp); + qsort (vartab, ARRAY_SIZE (vartab) - 1, sizeof (vartab[0]), varcmp); sorted = 1; } -- cgit v1.2.1