*
* "circular buffer" Copyright (C) 2000 by Gennady Feldman <gfeldman@mail.com>
*
+ * Maintainer: Gennady Feldman <gena01@cachier.com> as of Mar 12, 2001
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
#include <ctype.h>
#include <sys/syslog.h>
-#if ! defined __GLIBC__ && ! defined __UCLIBC__
-#include <sys/syscall.h>
-#include <linux/unistd.h>
-typedef unsigned int socklen_t;
-
-#ifndef __alpha__
-# define __NR_klogctl __NR_syslog
-static inline _syscall3(int, klogctl, int, type, char *, b, int, len);
-#else /* __alpha__ */
-#define klogctl syslog
-#endif
-
+#if __GNU_LIBRARY__ < 5
+# ifdef __alpha__
+# define klogctl syslog
+# endif
#else
# include <sys/klog.h>
#endif
+
#include "busybox.h"
static void klogd_signal(int sig)
/* "Open the log. Currently a NOP." */
klogctl(1, NULL, 0);
- syslog_msg(LOG_DAEMON, 0, "klogd started: BusyBox v" BB_VER " (" BB_BT ")");
+ syslog_msg(LOG_DAEMON, 0, "klogd started: " BB_BANNER);
while (1) {
/* Use kernel syscalls */
}
}
-static void daemon_init (char **argv, char *dz, void fn (void))
-{
- setsid(); /* start a new session? */
- strncpy(argv[0], dz, strlen(argv[0]));
- fn();
- exit(0);
-}
-
extern int klogd_main(int argc, char **argv)
{
/* no options, no getopt */
- int opt, pid;
+ int opt;
int doFork = TRUE;
/* do normal option parsing */
}
if (doFork == TRUE) {
- pid = fork();
- if (pid < 0)
- exit(pid);
- else if (pid == 0) {
- daemon_init (argv, "klogd", doKlogd);
- }
- } else {
- doKlogd();
+ if (daemon(0, 1) < 0)
+ perror_msg_and_die("daemon");
}
+ doKlogd();
return EXIT_SUCCESS;
}