+int common_setup(const char* pidfile, bool unsafe, const char* runas_user,
+ const char* runas_group, bool daemonize);
+
+#define DECLARE_MAIN \
+ static int main_initialize(void) \
+ { \
+ openlog(DAEMON_NAME, LOG_PID, LOG_MAIL); \
+ signal(SIGPIPE, SIG_IGN); \
+ signal(SIGINT, &common_sighandler); \
+ signal(SIGTERM, &common_sighandler); \
+ signal(SIGHUP, &common_sighandler); \
+ signal(SIGSEGV, &common_sighandler); \
+ syslog(LOG_INFO, "Starting..."); \
+ return 0; \
+ } \
+ \
+ static void main_shutdown(void) \
+ { \
+ closelog(); \
+ } \
+ \
+ module_init(main_initialize); \
+ module_exit(main_shutdown);
+