]> err.no Git - dpkg/commitdiff
Use sizeof_array() instead of ad-hoc calculations
authorGuillem Jover <guillem@debian.org>
Mon, 12 May 2008 04:02:29 +0000 (07:02 +0300)
committerGuillem Jover <guillem@debian.org>
Mon, 12 May 2008 18:03:57 +0000 (21:03 +0300)
TODO
lib/dpkg-priv.h
lib/parse.c
lib/subproc.c

diff --git a/TODO b/TODO
index 938ad346b6e00159eba14042e56f76824d85f30f..96e5ba167dc0e7eab104015344f9a1eea82823db 100644 (file)
--- a/TODO
+++ b/TODO
@@ -37,7 +37,6 @@ lenny
    - Refactor src/processarc.c.
    - Make sure all vsnprintf callers are checking the return value, as the
      system version will not ohsite on us.
-   - Refactor ARRAY_SIZE (need to push the patch).
    - Fix ncursesw headers.
    - Consider ferror_fclose function.
 
index ff42869afaa05c2048ed7e8e2f82497c0f1638fd..f5fb1445b4593095e4d8dd13176d02811c023b79 100644 (file)
 extern "C" {
 #endif
 
+/* Language definitions. */
+
+#ifndef sizeof_array
+#define sizeof_array(a) (sizeof(a) / sizeof((a)[0]))
+#endif
+
 /* Path handling. */
 
 void rtrim_slash_slashdot(char *path);
index d562566bcc7becdcb36a63bb61e0a31c9bd99cea..a1937357c1d82ecd2306692b0f65ff4e3cfbe074 100644 (file)
@@ -34,6 +34,7 @@
 
 #include <dpkg.h>
 #include <dpkg-db.h>
+#include <dpkg-priv.h>
 #include "parsedump.h"
 
 #ifdef HAVE_MMAP
@@ -76,8 +77,8 @@ const struct fieldinfo fieldinfos[]= {
   /* Note that aliases are added to the nicknames table in parsehelp.c. */
   {  NULL   /* sentinel - tells code that list is ended */                               }
 };
-#define NFIELDS (sizeof(fieldinfos)/sizeof(struct fieldinfo))
-const int nfields= NFIELDS;
+
+const int nfields = sizeof_array(fieldinfos);
 
 int parsedb(const char *filename, enum parsedbflags flags,
             struct pkginfo **donep, FILE *warnto, int *warncount) {
@@ -92,7 +93,7 @@ int parsedb(const char *filename, enum parsedbflags flags,
   struct trigaw *ta;
   int lno;
   int pdone;
-  int fieldencountered[NFIELDS];
+  int fieldencountered[sizeof_array(fieldinfos)];
   const struct fieldinfo *fip;
   const struct nickname *nick;
   char *data, *dataptr, *endptr;
index cfcfe0dcc406bee290cef364e55f0fe1dcb43a42..85a9162b0d06e1b212759137b28f157c3ebe63c6 100644 (file)
@@ -29,9 +29,8 @@
 #include <dpkg.h>
 #include <dpkg-priv.h>
 
-#define NCATCHSIGNALS (int)(sizeof(catch_signals) / sizeof(int) - 1)
 static int catch_signals[] = { SIGQUIT, SIGINT, 0 };
-static struct sigaction uncatch_signals[NCATCHSIGNALS];
+static struct sigaction uncatch_signals[sizeof_array(catch_signals)];
 
 void
 setup_subproc_signals(const char *name)
@@ -44,7 +43,7 @@ setup_subproc_signals(const char *name)
        catchsig.sa_handler = SIG_IGN;
        sigemptyset(&catchsig.sa_mask);
        catchsig.sa_flags = 0;
-       for (i = 0; i < NCATCHSIGNALS; i++)
+       for (i = 0; i < sizeof_array(catch_signals); i++)
        if (sigaction(catch_signals[i], &catchsig, &uncatch_signals[i]))
                ohshite(_("unable to ignore signal %s before running %.250s"),
                        strsignal(catch_signals[i]), name);
@@ -57,7 +56,7 @@ cu_subproc_signals(int argc, void **argv)
 {
        int i;
 
-       for (i = 0; i < NCATCHSIGNALS; i++) {
+       for (i = 0; i < sizeof_array(catch_signals); i++) {
                if (sigaction(catch_signals[i], &uncatch_signals[i], NULL)) {
                        fprintf(stderr, _("error un-catching signal %s: %s\n"),
                                strsignal(catch_signals[i]), strerror(errno));