diff --git a/src/callback.c b/src/callback.c
index a760a8a843ac23d835fa7c6419f2285f10eaf461..80dac895506fb9507ae94a40704d42ba51d1c256 100644
--- a/src/callback.c
+++ b/src/callback.c
@@ -33,7 +33,7 @@ static struct callback *get_free_callback()
     struct callback_block *tmp2;
     tmp2=ALLOC_STRUCT(callback_block);
 
-    for(e=0;e<sizeof(CALLBACK_CHUNK);e++)
+    for(e=0;e<(int)sizeof(CALLBACK_CHUNK);e++)
     {
       tmp2->callbacks[e].next=tmp;
       tmp=tmp2->callbacks+e;
@@ -43,21 +43,20 @@ static struct callback *get_free_callback()
   return tmp;
 }
 
-void call_callback(struct callback **ptr)
+void call_callback(struct callback **ptr, void *arg)
 {
   struct callback *l;
   while(l=*ptr)
   {
-    if(l->call) l->call(l,l->arg);
+    if(l->call) l->call(l,l->arg, arg);
 
     if(!l->call)
     {
       *ptr=l->next;
-      free((char *)l);
-    }else{
-      ptr=& l->next;
       l->next=free_callbacks;
       free_callbacks=l;
+    }else{
+      ptr=& l->next;
     }
   }
 }
@@ -92,7 +91,7 @@ void free_callback(struct callback **ptr)
   while(l=*ptr)
   {
     if(l->arg && l->free_func)
-      l->free_func(l, l->arg);
+      l->free_func(l, l->arg, 0);
     *ptr=l->next;
     l->next=free_callbacks;
     free_callbacks=l;
diff --git a/src/callback.h b/src/callback.h
index 6ba2257f7081b7ddfacd91f76b504203e4941def..0836801e7266c43d57f28c94f501e59fcf0a3c8d 100644
--- a/src/callback.h
+++ b/src/callback.h
@@ -10,12 +10,12 @@
 
 struct callback;
 
-typedef void (*callback_func)(struct callback *, void *);
+typedef void (*callback_func)(struct callback *, void *,void *);
 
 /* Prototypes begin here */
 struct callback;
 struct callback_block;
-void call_callback(struct callback **ptr);
+void call_callback(struct callback **ptr, void *arg);
 struct callback *add_to_callback(struct callback **ptr,
 				 callback_func call,
 				 void *arg,
diff --git a/src/machine.h.in b/src/machine.h.in
index f2fd1293272c758d0f8474903da1d81a42f12d69..70b4987c1edef088cb121b7d62a6dda4d391bdb1 100644
--- a/src/machine.h.in
+++ b/src/machine.h.in
@@ -161,6 +161,9 @@
 /* Define if you have getenv.  */
 #undef HAVE_GETENV
 
+/* Define if you have gettimeofday.  */
+#undef HAVE_GETTIMEOFDAY
+
 /* Does your unix have a putenv function? */
 #undef HAVE_PUTENV
 
diff --git a/src/main.c b/src/main.c
index a3e17682021b4371aceddc2b0624ae799e3c3a4a..46c3a9608f36b12fb4abe53744acae009943d0c2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -157,7 +157,7 @@ void main(int argc, char **argv, char **env)
 
   init_modules_efuns();
   master();
-  call_callback(& post_master_callbacks);
+  call_callback(& post_master_callbacks, 0);
   free_callback(& post_master_callbacks);
   init_modules_programs();