Imported Upstream version 2.6.0
[debian/amanda] / common-src / event.c
index 94ae1ac7aeb0efe946972c46b0235bfdde22833c..11bad8bf576575ef3d58c2b9e514328d4e71fd3a 100644 (file)
  * file named AUTHORS, in the root directory of this distribution.
  */
 /*
- * $Id: event.c,v 1.24.2.1 2006/12/12 14:56:38 martinea Exp $
+ * $Id: event.c,v 1.24 2006/06/16 10:55:05 martinea Exp $
  *
  * Event handler.  Serializes different kinds of events to allow for
  * a uniform interface, central state storage, and centralized
  * interdependency logic.
  */
 
-/*#define      EVENT_DEBUG*/
-
-#ifdef EVENT_DEBUG
-#define eventprintf(x)    dbprintf(x)
-#else
-#define eventprintf(x)
-#endif
-
 #include "amanda.h"
 #include "event.h"
 #include "queue.h"
+#include "conffile.h"
+
+#define event_debug(i, ...) do {       \
+       if ((i) <= debug_event) {       \
+           dbprintf(__VA_ARGS__);      \
+       }                               \
+} while (0)
 
 /*
  * The opaque handle passed back to the caller.  This is typedefed to
@@ -89,9 +88,7 @@ static struct sigtabent {
     void (*oldhandler)(int);/* old handler (for unsetting) */
 } sigtable[NSIG];
 
-#ifdef EVENT_DEBUG
 static const char *event_type2str(event_type_t);
-#endif
 #define        fire(eh)        (*(eh)->fn)((eh)->arg)
 static void signal_handler(int);
 static event_handle_t *gethandle(void);
@@ -113,23 +110,23 @@ event_register(
 
     if ((type == EV_READFD) || (type == EV_WRITEFD)) {
        /* make sure we aren't given a high fd that will overflow a fd_set */
-       if (data >= FD_SETSIZE) {
-           error("event_register: Invalid file descriptor %lu", data);
+       if (data >= (int)FD_SETSIZE) {
+           error(_("event_register: Invalid file descriptor %lu"), data);
            /*NOTREACHED*/
        }
 #if !defined(__lint) /* Global checking knows that these are never called */
     } else if (type == EV_SIG) {
        /* make sure signals are within range */
        if (data >= NSIG) {
-           error("event_register: Invalid signal %lu", data);
+           error(_("event_register: Invalid signal %lu"), data);
            /*NOTREACHED*/
        }
        if (sigtable[data].handle != NULL) { 
-           error("event_register: signal %lu already registered", data);
+           error(_("event_register: signal %lu already registered"), data);
            /*NOTREACHED*/
        }
     } else if (type >= EV_DEAD) {
-       error("event_register: Invalid event type %d", type);
+       error(_("event_register: Invalid event type %d"), type);
        /*NOTREACHED*/
 #endif
     }
@@ -143,9 +140,8 @@ event_register(
     eventq_add(eventq, handle);
     eventq.qlength++;
 
-    eventprintf(("%s: event: register: %p->data=%lu, type=%s\n",
-               debug_prefix_time(NULL), handle, handle->data,
-               event_type2str(handle->type)));
+    event_debug(1, _("event: register: %p->data=%lu, type=%s\n"),
+                   handle, handle->data, event_type2str(handle->type));
     return (handle);
 }
 
@@ -161,9 +157,9 @@ event_release(
 
     assert(handle != NULL);
 
-    eventprintf(("%s: event: release (mark): %p data=%lu, type=%s\n",
-                debug_prefix_time(NULL), handle, handle->data,
-                event_type2str(handle->type)));
+    event_debug(1, _("event: release (mark): %p data=%lu, type=%s\n"),
+                   handle, handle->data,
+                   event_type2str(handle->type));
     assert(handle->type != EV_DEAD);
 
     /*
@@ -201,14 +197,12 @@ event_wakeup(
     event_handle_t *eh;
     int nwaken = 0;
 
-    eventprintf(("%s: event: wakeup: enter (%lu)\n",
-                debug_prefix_time(NULL), id));
+    event_debug(1, _("event: wakeup: enter (%lu)\n"), id);
 
     for (eh = eventq_first(eventq); eh != NULL; eh = eventq_next(eh)) {
 
        if (eh->type == EV_WAIT && eh->data == id) {
-           eventprintf(("%s: event: wakeup: %p id=%lu\n",
-                        debug_prefix_time(NULL), eh, id));
+           event_debug(1, _("event: wakeup: %p id=%lu\n"), eh, id);
            fire(eh);
            nwaken++;
        }
@@ -251,7 +245,7 @@ event_loop_wait(
 #ifdef ASSERTIONS
     static int entry = 0;
 #endif
-    fd_set readfds, writefds, errfds, werrfds;
+    SELECT_ARG_TYPE readfds, writefds, errfds, werrfds;
     struct timeval timeout, *tvptr;
     int ntries, maxfd, rc;
     long interval;
@@ -261,9 +255,8 @@ event_loop_wait(
     int event_wait_fired = 0;
     int see_event;
 
-    eventprintf(("%s: event: loop: enter: dontblock=%d, qlength=%d, eh=%p\n",
-                debug_prefix_time(NULL),
-                dontblock, eventq.qlength, wait_eh));
+    event_debug(1, _("event: loop: enter: dontblock=%d, qlength=%d, eh=%p\n"),
+                   dontblock, eventq.qlength, wait_eh);
 
     /*
      * If we have no events, we have nothing to do
@@ -285,17 +278,15 @@ event_loop_wait(
     curtime = time(NULL);
 
     do {
-#ifdef EVENT_DEBUG
-       eventprintf(("%s: event: loop: dontblock=%d, qlength=%d eh=%p\n",
-                    debug_prefix_time(NULL), dontblock, eventq.qlength,
-                    wait_eh));
-       for (eh = eventq_first(eventq); eh != NULL; eh = eventq_next(eh)) {
-           eventprintf(("%s: %p): %s data=%lu fn=%p arg=%p\n",
-                        debug_prefix_time(NULL), eh,
-                        event_type2str(eh->type), eh->data, eh->fn,
-                        eh->arg));
+       if (debug_event >= 1) {
+           event_debug(1, _("event: loop: dontblock=%d, qlength=%d eh=%p\n"),
+                           dontblock, eventq.qlength, wait_eh);
+           for (eh = eventq_first(eventq); eh != NULL; eh = eventq_next(eh)) {
+               event_debug(1, _("%p): %s data=%lu fn=%p arg=%p\n"),
+                               eh, event_type2str(eh->type), eh->data, eh->fn,
+                               eh->arg);
+           }
        }
-#endif
        /*
         * Set ourselves up with no timeout initially.
         */
@@ -429,13 +420,12 @@ event_loop_wait(
        /*
         * Let 'er rip
         */
-       eventprintf((
-                   "%s: event: select: dontblock=%d, maxfd=%d, timeout=%ld\n",
-                   debug_prefix_time(NULL), dontblock, maxfd,
-                   tvptr != NULL ? timeout.tv_sec : -1));
+       event_debug(1,
+                   _("event: select: dontblock=%d, maxfd=%d, timeout=%ld\n"),
+                    dontblock, maxfd,
+                    tvptr != NULL ? timeout.tv_sec : -1);
        rc = select(maxfd + 1, &readfds, &writefds, &errfds, tvptr);
-       eventprintf(("%s: event: select returns %d\n",
-                    debug_prefix_time(NULL), rc));
+       event_debug(1, _("event: select returns %d\n"), rc);
 
        /*
         * Select errors can mean many things.  Interrupted events should
@@ -445,7 +435,7 @@ event_loop_wait(
        if (rc < 0) {
            if (errno != EINTR) {
                if (++ntries > 5) {
-                   error("select failed: %s", strerror(errno));
+                   error(_("select failed: %s"), strerror(errno));
                    /*NOTREACHED*/
                }
                continue;
@@ -601,7 +591,6 @@ puthandle(
     cache.qlength++;
 }
 
-#ifdef EVENT_DEBUG
 /*
  * Convert an event type into a string
  */
@@ -627,6 +616,5 @@ event_type2str(
     for (i = 0; i < (size_t)(sizeof(event_types) / sizeof(event_types[0])); i++)
        if (type == event_types[i].type)
            return (event_types[i].name);
-    return ("BOGUS EVENT TYPE");
+    return (_("BOGUS EVENT TYPE"));
 }
-#endif /* EVENT_DEBUG */