Implement usage
[apps/pfixtools.git] / common.h
index 6a885d9..e70c9a7 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1,5 +1,5 @@
 /******************************************************************************/
-/*          postlicyd: a postfix policy daemon with a lot of features         */
+/*          pfixtools: a collection of postfix related tools                  */
 /*          ~~~~~~~~~                                                         */
 /*  ________________________________________________________________________  */
 /*                                                                            */
  * Copyright © 2007 Pierre Habouzit
  */
 
-#ifndef POSTLICYD_H
-#define POSTLICYD_H
+#ifndef PFIXTOOLS_COMMON_H
+#define PFIXTOOLS_COMMON_H
 
 #include <errno.h>
+#include <fcntl.h>
 #include <limits.h>
-#include <pthread.h>
+#include <netinet/in.h>
+#include <signal.h>
 #include <stdbool.h>
 #include <stdbool.h>
-#include <stdio.h>
 #include <stdint.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <syslog.h>
 #include <sys/socket.h>
+#include <sys/stat.h>
 #include <sys/types.h>
+#include <time.h>
 #include <unistd.h>
 
+#include "mem.h"
+
 #define UNIXERR(fun)                                    \
         syslog(LOG_ERR, "%s:%d:%s: %s: %m",             \
                __FILE__, __LINE__, __func__, fun)
 
+typedef int  (*initcall_t)(void);
+typedef void (*exitcall_t)(void);
+
+#define __init __attribute__((__used__,__section__(".mad.init")))
+#define __exit __attribute__((__used__,__section__(".mad.exit")))
+
+#define module_init(fn)  static __init initcall_t __init_##fn = fn;
+#define module_exit(fn)  static __exit exitcall_t __exit_##fn = fn;
+
+/* common.c */
+extern sig_atomic_t sigint;
+extern sig_atomic_t sighup;
+
+void common_sighandler(int sig);
+
+/* daemon.c */
+int tcp_listen_nonblock(const struct sockaddr *addr, socklen_t len);
+int accept_nonblock(int fd);
+
+int daemon_detach(void);
+int drop_privileges(const char *user, const char *group);
+
 #endif