URI: 
       app-admin/sysklogd: Add 1.5.1 with musl fixes. - parlay - yet another gentoo overlay
  HTML git clone https://git.parazyd.org/parlay
   DIR Log
   DIR Files
   DIR Refs
   DIR README
       ---
   DIR commit b9f6cee92a151b09337fa9062d4b2fc07cb8318b
   DIR parent f7931d044c67b927d0ec78a24eface8cecb18c81
  HTML Author: parazyd <parazyd@dyne.org>
       Date:   Thu, 15 Feb 2018 00:53:25 +0100
       
       app-admin/sysklogd: Add 1.5.1 with musl fixes.
       
       Diffstat:
         A app-admin/sysklogd/Manifest         |       2 ++
         A app-admin/sysklogd/files/musl-fixe… |      84 +++++++++++++++++++++++++++++++
         A app-admin/sysklogd/files/sysklogd-… |     162 ++++++++++++++++++++++++++++++
         A app-admin/sysklogd/files/sysklogd-… |     103 +++++++++++++++++++++++++++++++
         A app-admin/sysklogd/files/sysklogd-… |     118 +++++++++++++++++++++++++++++++
         A app-admin/sysklogd/files/sysklogd-… |      20 ++++++++++++++++++++
         A app-admin/sysklogd/files/sysklogd-… |      38 +++++++++++++++++++++++++++++++
         A app-admin/sysklogd/files/sysklogd-… |      11 +++++++++++
         A app-admin/sysklogd/files/sysklogd-… |     103 +++++++++++++++++++++++++++++++
         A app-admin/sysklogd/files/sysklogd.… |       6 ++++++
         A app-admin/sysklogd/files/sysklogd.… |       8 ++++++++
         A app-admin/sysklogd/files/sysklogd.… |      74 +++++++++++++++++++++++++++++++
         A app-admin/sysklogd/metadata.xml     |      11 +++++++++++
         A app-admin/sysklogd/sysklogd-1.5.1-… |      71 +++++++++++++++++++++++++++++++
       
       14 files changed, 811 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/app-admin/sysklogd/Manifest b/app-admin/sysklogd/Manifest
       @@ -0,0 +1,2 @@
       +DIST sysklogd-1.5.1.tar.gz 90011 BLAKE2B c40bd8d5769f7d3d4141d602c74ac41e05a140743d18c4923d9368da7ba193ccb89a6837173994f0b7a9c290cc23f64513040434d7ab8df81b5d09b73b0263ad SHA512 a72196a1a172d25be1c4791ef6256fe71fa2ba8c1383d230e646e93f8a65c3a57c535189726325da4c792fdb2e9cb119bba43c878816a8e78e78189fd32b12b7
       +DIST sysklogd_1.5-6.diff.gz 25677 BLAKE2B 3cb1f596490998b6002d4656a2321a500ce9941a37737c0b9d4702bbb87d7bc9ba21b68e06d175e3c1714a701adc6b3312e18a556ebc9ef395d8968762830cb5 SHA512 816961a835a43057569f62fd20d9f7b5e0bfcfcb173b68947457708504db3ce47e635956c8a9564f9bd577d8f3c49dfc725d321dfd3370b2de918363c30f838e
   DIR diff --git a/app-admin/sysklogd/files/musl-fixes.patch b/app-admin/sysklogd/files/musl-fixes.patch
       @@ -0,0 +1,84 @@
       +diff --git a/klogd.c b/klogd.c
       +index 2bd331f..8e8e76b 100644
       +--- a/klogd.c
       ++++ b/klogd.c
       +@@ -262,9 +262,6 @@
       + #include <errno.h>
       + #include <sys/fcntl.h>
       + #include <sys/stat.h>
       +-#if !defined(__GLIBC__)
       +-#include <linux/time.h>
       +-#endif /* __GLIBC__ */
       + #include <paths.h>
       + #include <stdlib.h>
       + #include <pwd.h>
       +@@ -278,13 +275,8 @@
       + 
       + #define __LIBRARY__
       + #include <linux/unistd.h>
       +-#if !defined(__GLIBC__)
       +-# define __NR_ksyslog __NR_syslog
       +-_syscall3(int,ksyslog,int, type, char *, buf, int, len);
       +-#else
       + #include <sys/klog.h>
       + #define ksyslog klogctl
       +-#endif
       + 
       + #define LOG_BUFFER_SIZE 4096
       + #define LOG_LINE_LENGTH 1000
       +diff --git a/ksym_mod.c b/ksym_mod.c
       +index 063f911..3a799be 100644
       +--- a/ksym_mod.c
       ++++ b/ksym_mod.c
       +@@ -113,12 +113,9 @@
       + #include <unistd.h>
       + #include <signal.h>
       + #include <errno.h>
       +-#include <sys/fcntl.h>
       ++#include <fcntl.h>
       + #include <sys/stat.h>
       + #include "module.h"
       +-#if !defined(__GLIBC__)
       +-#include <linux/time.h>
       +-#endif /* __GLIBC__ */
       + #include <paths.h>
       + #include <linux/version.h>
       + 
       +diff --git a/pidfile.c b/pidfile.c
       +index e0959a0..e688370 100644
       +--- a/pidfile.c
       ++++ b/pidfile.c
       +@@ -28,6 +28,7 @@
       + #include <unistd.h>
       + #include <sys/stat.h>
       + #include <sys/file.h>
       ++#include <fcntl.h>
       + #include <string.h>
       + #include <errno.h>
       + #include <signal.h>
       +diff --git a/syslog.c b/syslog.c
       +index 2d1ad38..98e339e 100644
       +--- a/syslog.c
       ++++ b/syslog.c
       +@@ -72,6 +72,7 @@ static char sccsid[] = "@(#)syslog.c        5.28 (Berkeley) 6/27/90";
       + #include <stdarg.h>
       + #include <paths.h>
       + #include <stdio.h>
       ++#include <fcntl.h>
       + 
       + #define        _PATH_LOGNAME        "/dev/log"
       + 
       +diff --git a/syslogd.c b/syslogd.c
       +index c22dda7..f6bb6bf 100644
       +--- a/syslogd.c
       ++++ b/syslogd.c
       +@@ -825,9 +825,7 @@ void doexit(int sig);
       + void init();
       + void cfline(char *line, register struct filed *f);
       + int decode(char *name, struct code *codetab);
       +-#if defined(__GLIBC__)
       + #define dprintf mydprintf
       +-#endif /* __GLIBC__ */
       + static void dprintf(char *, ...);
       + static void allocate_log(void);
       + void sighup_handler();
   DIR diff --git a/app-admin/sysklogd/files/sysklogd-1.4.2-caen-owl-klogd-drop-root.diff b/app-admin/sysklogd/files/sysklogd-1.4.2-caen-owl-klogd-drop-root.diff
       @@ -0,0 +1,162 @@
       +http://cvsweb.openwall.com/cgi/cvsweb.cgi/~checkout~/Owl/packages/sysklogd/sysklogd-1.4.2-caen-owl-klogd-drop-root.diff?rev=1.2;content-type=text%2Fplain
       +diff -upk.orig sysklogd-1.4.2.orig/klogd.8 sysklogd-1.4.2/klogd.8
       +--- sysklogd-1.4.2.orig/klogd.8        2005-03-11 16:12:09 +0000
       ++++ sysklogd-1.4.2/klogd.8        2005-08-18 14:37:47 +0000
       +@@ -18,6 +19,12 @@ klogd \- Kernel Log Daemon
       + .RB [ " \-f "
       + .I fname
       + ]
       ++.RB [ " \-u "
       ++.I username
       ++]
       ++.RB [ " \-j "
       ++.I chroot_dir
       ++]
       + .RB [ " \-iI " ]
       + .RB [ " \-n " ]
       + .RB [ " \-o " ]
       +@@ -53,6 +60,20 @@ stderr.
       + .BI "\-f " file
       + Log messages to the specified filename rather than to the syslog facility.
       + .TP
       ++.BI "\-u " username
       ++Tells klogd to become the specified user and drop root privileges before
       ++starting logging.
       ++.TP
       ++.BI "\-j " chroot_dir
       ++Tells klogd to
       ++.BR chroot (2)
       ++into this directory after initializing.
       ++This option is only valid if the \-u option is also used to run klogd
       ++without root privileges.
       ++Note that the use of this option will prevent \-i and \-I from working
       ++unless you set up the chroot directory in such a way that klogd can still
       ++read the kernel module symbols.
       ++.TP
       + .BI "\-i \-I"
       + Signal the currently executing klogd daemon.  Both of these switches control
       + the loading/reloading of symbol information.  The \-i switch signals the
       +diff -upk.orig sysklogd-1.4.2.orig/klogd.c sysklogd-1.4.2/klogd.c
       +--- sysklogd-1.4.2.orig/klogd.c        2005-08-18 12:29:52 +0000
       ++++ sysklogd-1.4.2/klogd.c        2005-08-18 14:37:47 +0000
       +@@ -261,6 +261,8 @@
       + #include <stdarg.h>
       + #include <paths.h>
       + #include <stdlib.h>
       ++#include <pwd.h>
       ++#include <grp.h>
       + #include "klogd.h"
       + #include "ksyms.h"
       + #ifndef TESTING
       +@@ -315,6 +317,9 @@ static enum LOGSRC {none, proc, kernel} 
       + int debugging = 0;
       + int symbols_twice = 0;
       + 
       ++char *server_user = NULL;
       ++char *chroot_dir = NULL;
       ++int log_flags = 0;
       + 
       + /* Function prototypes. */
       + extern int ksyslog(int type, char *buf, int len);
       +@@ -535,8 +540,9 @@ static enum LOGSRC GetKernelLogSrc(void)
       +          * First do a stat to determine whether or not the proc based
       +          * file system is available to get kernel messages from.
       +          */
       +-        if ( use_syscall ||
       +-            ((stat(_PATH_KLOG, &sb) < 0) && (errno == ENOENT)) )
       ++        if (!server_user &&
       ++            (use_syscall ||
       ++            ((stat(_PATH_KLOG, &sb) < 0) && (errno == ENOENT))))
       +         {
       +                   /* Initialize kernel logging. */
       +                   ksyslog(1, NULL, 0);
       +@@ -983,6 +989,27 @@ static void LogProcLine(void)
       + }
       + 
       + 
       ++static int drop_root(void)
       ++{
       ++        struct passwd *pw;
       ++
       ++        if (!(pw = getpwnam(server_user))) return -1;
       ++
       ++        if (!pw->pw_uid) return -1;
       ++
       ++        if (chroot_dir) {
       ++                if (chdir(chroot_dir)) return -1;
       ++                if (chroot(".")) return -1;
       ++        }
       ++
       ++        if (setgroups(0, NULL)) return -1;
       ++        if (setgid(pw->pw_gid)) return -1;
       ++        if (setuid(pw->pw_uid)) return -1;
       ++
       ++        return 0;
       ++}
       ++
       ++
       + int main(argc, argv)
       + 
       +         int argc;
       +@@ -1000,7 +1027,7 @@ int main(argc, argv)
       +         chdir ("/");
       + #endif
       +         /* Parse the command-line. */
       +-        while ((ch = getopt(argc, argv, "c:df:iIk:nopsvx2")) != EOF)
       ++        while ((ch = getopt(argc, argv, "c:df:u:j:iIk:nopsvx2")) != EOF)
       +                 switch((char)ch)
       +                 {
       +                     case '2':                /* Print lines with symbols twice. */
       +@@ -1022,6 +1049,10 @@ int main(argc, argv)
       +                     case 'I':
       +                         SignalDaemon(SIGUSR2);
       +                         return(0);
       ++                    case 'j':                /* chroot 'j'ail */
       ++                        chroot_dir = optarg;
       ++                        log_flags |= LOG_NDELAY;
       ++                        break;
       +                     case 'k':                /* Kernel symbol file. */
       +                         symfile = optarg;
       +                         break;
       +@@ -1037,6 +1068,9 @@ int main(argc, argv)
       +                     case 's':                /* Use syscall interface. */
       +                         use_syscall = 1;
       +                         break;
       ++                    case 'u':                /* Run as this user */
       ++                        server_user = optarg;
       ++                        break;
       +                     case 'v':
       +                         printf("klogd %s.%s\n", VERSION, PATCHLEVEL);
       +                         exit (1);
       +@@ -1045,6 +1079,10 @@ int main(argc, argv)
       +                         break;
       +                 }
       + 
       ++        if (chroot_dir && !server_user) {
       ++                fputs("'-j' is only valid with '-u'\n", stderr);
       ++                exit(1);
       ++        }
       + 
       +         /* Set console logging level. */
       +         if ( log_level != (char *) 0 )
       +@@ -1158,7 +1196,7 @@ int main(argc, argv)
       +                 }
       +         }
       +         else
       +-                openlog("kernel", 0, LOG_KERN);
       ++                openlog("kernel", log_flags, LOG_KERN);
       + 
       + 
       +         /* Handle one-shot logging. */
       +@@ -1191,6 +1229,11 @@ int main(argc, argv)
       +                 }
       +         }
       + 
       ++        if (server_user && drop_root()) {
       ++                syslog(LOG_ALERT, "klogd: failed to drop root");
       ++                Terminate();
       ++        }
       ++
       +         /* The main loop. */
       +         while (1)
       +         {
   DIR diff --git a/app-admin/sysklogd/files/sysklogd-1.4.2-caen-owl-syslogd-bind.diff b/app-admin/sysklogd/files/sysklogd-1.4.2-caen-owl-syslogd-bind.diff
       @@ -0,0 +1,103 @@
       +http://cvsweb.openwall.com/cgi/cvsweb.cgi/~checkout~/Owl/packages/sysklogd/sysklogd-1.4.2-caen-owl-syslogd-bind.diff?rev=1.1;content-type=text%2Fplain
       +diff -upk.orig sysklogd-1.4.2.orig/sysklogd.8 sysklogd-1.4.2/sysklogd.8
       +--- sysklogd-1.4.2.orig/sysklogd.8        2004-07-09 17:33:32 +0000
       ++++ sysklogd-1.4.2/sysklogd.8        2005-08-18 14:40:25 +0000
       +@@ -15,6 +15,9 @@ sysklogd \- Linux system logging utiliti
       + .I config file
       + ]
       + .RB [ " \-h " ] 
       ++.RB [ " \-i "
       ++.I IP address
       ++]
       + .RB [ " \-l "
       + .I hostlist
       + ]
       +@@ -104,6 +107,13 @@ Specifying this switch on the command li
       + This can cause syslog loops that fill up hard disks quite fast and
       + thus needs to be used with caution.
       + .TP
       ++.BI "\-i " "IP address"
       ++If
       ++.B syslogd
       ++is configured to accept log input from a UDP port, specify an IP address
       ++to bind to, rather than the default of INADDR_ANY.  The address must be in
       ++dotted quad notation, DNS host names are not allowed.
       ++.TP
       + .BI "\-l " "hostlist"
       + Specify a hostname that should be logged only with its simple hostname
       + and not the fqdn.  Multiple hosts may be specified using the colon
       +diff -upk.orig sysklogd-1.4.2.orig/syslogd.c sysklogd-1.4.2/syslogd.c
       +--- sysklogd-1.4.2.orig/syslogd.c        2005-08-18 14:33:22 +0000
       ++++ sysklogd-1.4.2/syslogd.c        2005-08-18 14:40:25 +0000
       +@@ -774,6 +774,8 @@ char        **LocalHosts = NULL;        /* these hosts
       + int        NoHops = 1;                /* Can we bounce syslog messages through an
       +                                    intermediate host. */
       + 
       ++char        *bind_addr = NULL;        /* bind UDP port to this interface only */
       ++
       + extern        int errno;
       + 
       + /* Function prototypes. */
       +@@ -878,7 +880,7 @@ int main(argc, argv)
       +                 funix[i]  = -1;
       +         }
       + 
       +-        while ((ch = getopt(argc, argv, "a:dhf:l:m:np:rs:v")) != EOF)
       ++        while ((ch = getopt(argc, argv, "a:dhf:i:l:m:np:rs:v")) != EOF)
       +                 switch((char)ch) {
       +                 case 'a':
       +                         if (nfunix < MAXFUNIX)
       +@@ -895,9 +897,17 @@ int main(argc, argv)
       +                 case 'h':
       +                         NoHops = 0;
       +                         break;
       ++                case 'i':
       ++                        if (bind_addr) {
       ++                                fprintf(stderr, "Only one -i argument allowed, "
       ++                                        "the first one is taken.\n");
       ++                                break;
       ++                        }
       ++                        bind_addr = optarg;
       ++                        break;
       +                 case 'l':
       +                         if (LocalHosts) {
       +-                                fprintf (stderr, "Only one -l argument allowed," \
       ++                                fprintf(stderr, "Only one -l argument allowed, "
       +                                         "the first one is taken.\n");
       +                                 break;
       +                         }
       +@@ -1244,7 +1254,7 @@ int main(argc, argv)
       + int usage()
       + {
       +         fprintf(stderr, "usage: syslogd [-drvh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
       +-                " [-s domainlist] [-f conffile]\n");
       ++                " [-s domainlist] [-f conffile] [-i IP address]\n");
       +         exit(1);
       + }
       + 
       +@@ -1286,15 +1296,22 @@ static int create_inet_socket()
       +         int fd, on = 1;
       +         struct sockaddr_in sin;
       + 
       ++        memset(&sin, 0, sizeof(sin));
       ++        sin.sin_family = AF_INET;
       ++        sin.sin_port = LogPort;
       ++        if (bind_addr) {
       ++                if (!inet_aton(bind_addr, &sin.sin_addr)) {
       ++                        logerror("syslog: not a valid IP address to bind to.");
       ++                        return -1;
       ++                }
       ++        }
       ++
       +         fd = socket(AF_INET, SOCK_DGRAM, 0);
       +         if (fd < 0) {
       +                 logerror("syslog: Unknown protocol, suspending inet service.");
       +                 return fd;
       +         }
       + 
       +-        memset(&sin, 0, sizeof(sin));
       +-        sin.sin_family = AF_INET;
       +-        sin.sin_port = LogPort;
       +         if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, \
       +                        (char *) &on, sizeof(on)) < 0 ) {
       +                 logerror("setsockopt(REUSEADDR), suspending inet");
   DIR diff --git a/app-admin/sysklogd/files/sysklogd-1.4.2-caen-owl-syslogd-drop-root.diff b/app-admin/sysklogd/files/sysklogd-1.4.2-caen-owl-syslogd-drop-root.diff
       @@ -0,0 +1,118 @@
       +http://cvsweb.openwall.com/cgi/cvsweb.cgi/~checkout~/Owl/packages/sysklogd/sysklogd-1.4.2-caen-owl-syslogd-drop-root.diff?rev=1.1;content-type=text%2Fplain
       +diff -upk.orig sysklogd-1.4.2.orig/sysklogd.8 sysklogd-1.4.2/sysklogd.8
       +--- sysklogd-1.4.2.orig/sysklogd.8        2005-08-18 14:40:25 +0000
       ++++ sysklogd-1.4.2/sysklogd.8        2005-08-18 14:41:26 +0000
       +@@ -32,6 +32,9 @@ sysklogd \- Linux system logging utiliti
       + .RB [ " \-s "
       + .I domainlist
       + ]
       ++.RB [ " \-u"
       ++.IB username
       ++]
       + .RB [ " \-v " ]
       + .LP
       + .SH DESCRIPTION
       +@@ -161,6 +164,19 @@ is specified and the host logging resolv
       + no domain would be cut, you will have to specify two domains like:
       + .BR "\-s north.de:infodrom.north.de" .
       + .TP
       ++.BI "\-u " "username"
       ++This causes the
       ++.B syslogd
       ++daemon to become the named user before starting up logging.
       ++
       ++Note that when this option is in use,
       ++.B syslogd
       ++will open all log files as root when the daemon is first started;
       ++however, after a
       ++.B SIGHUP
       ++the files will be reopened as the non-privileged user.  You should
       ++take this into account when deciding the ownership of the log files.
       ++.TP
       + .B "\-v"
       + Print version and exit.
       + .LP
       +diff -upk.orig sysklogd-1.4.2.orig/syslogd.c sysklogd-1.4.2/syslogd.c
       +--- sysklogd-1.4.2.orig/syslogd.c        2005-08-18 14:40:25 +0000
       ++++ sysklogd-1.4.2/syslogd.c        2005-08-18 14:41:26 +0000
       +@@ -524,6 +524,10 @@ static char sccsid[] = "@(#)syslogd.c        5.
       + #include <arpa/nameser.h>
       + #include <arpa/inet.h>
       + #include <resolv.h>
       ++
       ++#include <pwd.h>
       ++#include <grp.h>
       ++
       + #ifndef TESTING
       + #include "pidfile.h"
       + #endif
       +@@ -775,6 +779,7 @@ int        NoHops = 1;                /* Can we bounce syslog
       +                                    intermediate host. */
       + 
       + char        *bind_addr = NULL;        /* bind UDP port to this interface only */
       ++char        *server_user = NULL;        /* user name to run server as */
       + 
       + extern        int errno;
       + 
       +@@ -827,6 +832,21 @@ static int set_nonblock_flag(int desc)
       +         return fcntl(desc, F_SETFL, flags | O_NONBLOCK);
       + }
       + 
       ++static int drop_root(void)
       ++{
       ++        struct passwd *pw;
       ++
       ++        if (!(pw = getpwnam(server_user))) return -1;
       ++
       ++        if (!pw->pw_uid) return -1;
       ++
       ++        if (initgroups(server_user, pw->pw_gid)) return -1;
       ++        if (setgid(pw->pw_gid)) return -1;
       ++        if (setuid(pw->pw_uid)) return -1;
       ++
       ++        return 0;
       ++}
       ++
       + int main(argc, argv)
       +         int argc;
       +         char **argv;
       +@@ -880,7 +900,7 @@ int main(argc, argv)
       +                 funix[i]  = -1;
       +         }
       + 
       +-        while ((ch = getopt(argc, argv, "a:dhf:i:l:m:np:rs:v")) != EOF)
       ++        while ((ch = getopt(argc, argv, "a:dhf:i:l:m:np:rs:u:v")) != EOF)
       +                 switch((char)ch) {
       +                 case 'a':
       +                         if (nfunix < MAXFUNIX)
       +@@ -933,6 +953,9 @@ int main(argc, argv)
       +                         }
       +                         StripDomains = crunch_list(optarg);
       +                         break;
       ++                case 'u':
       ++                        server_user = optarg;
       ++                        break;
       +                 case 'v':
       +                         printf("syslogd %s.%s\n", VERSION, PATCHLEVEL);
       +                         exit (0);
       +@@ -1100,6 +1123,11 @@ int main(argc, argv)
       +                 kill (ppid, SIGTERM);
       + #endif
       + 
       ++        if (server_user && drop_root()) {
       ++                dprintf("syslogd: failed to drop root\n");
       ++                exit(1);
       ++        }
       ++
       +         /* Main loop begins here. */
       +         for (;;) {
       +                 int nfds;
       +@@ -1254,7 +1282,7 @@ int main(argc, argv)
       + int usage()
       + {
       +         fprintf(stderr, "usage: syslogd [-drvh] [-l hostlist] [-m markinterval] [-n] [-p path]\n" \
       +-                " [-s domainlist] [-f conffile] [-i IP address]\n");
       ++                " [-s domainlist] [-f conffile] [-i IP address] [-u username]\n");
       +         exit(1);
       + }
       + 
   DIR diff --git a/app-admin/sysklogd/files/sysklogd-1.5-build.patch b/app-admin/sysklogd/files/sysklogd-1.5-build.patch
       @@ -0,0 +1,20 @@
       +respect env CC/CFLAGS/CPPFLAGS/LDFLAGS
       +
       +--- Makefile
       ++++ Makefile
       +@@ -17,14 +17,12 @@
       + #   along with this program; if not, write to the Free Software
       + #   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
       + 
       +-CC= gcc
       + #SKFLAGS= -g -DSYSV -Wall
       + #LDFLAGS= -g
       +-SKFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce
       ++SKFLAGS= $(CFLAGS) $(CPPFLAGS) -DSYSV -Wall -fno-strength-reduce
       + # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
       + # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
       + # $(shell getconf LFS_SKFLAGS)
       +-LDFLAGS= -s
       + 
       + # Look where your install program is.
       + INSTALL = /usr/bin/install
   DIR diff --git a/app-admin/sysklogd/files/sysklogd-1.5-debian-cron.patch b/app-admin/sysklogd/files/sysklogd-1.5-debian-cron.patch
       @@ -0,0 +1,38 @@
       +--- debian/cron.daily
       ++++ debian/cron.daily
       +@@ -20,10 +20,6 @@
       + #                Written by Martin Schulze <joey@debian.org>.
       + #                $Id: cron.daily,v 1.14 2007-05-28 16:33:34 joey Exp $
       + 
       +-test -x /usr/sbin/syslogd-listfiles || exit 0
       +-test -x /sbin/syslogd || exit 0
       +-test -f /usr/share/sysklogd/dummy || exit 0
       +-
       + set -e
       + 
       + cd /var/log
       +@@ -41,4 +37,4 @@
       + 
       + # Restart syslogd
       + #
       +-/etc/init.d/sysklogd reload-or-restart > /dev/null
       ++/etc/init.d/sysklogd --quiet reload
       +--- debian/cron.weekly
       ++++ debian/cron.weekly
       +@@ -19,10 +19,6 @@
       + #                Written by Ian A. Murdock <imurdock@debian.org>.
       + #                $Id: cron.weekly,v 1.11 2007-05-28 16:33:34 joey Exp $
       + 
       +-test -x /usr/sbin/syslogd-listfiles || exit 0
       +-test -x /sbin/syslogd || exit 0
       +-test -f /usr/share/sysklogd/dummy || exit 0
       +-
       + set -e
       + 
       + cd /var/log
       +@@ -40,4 +36,4 @@
       + 
       + # Restart syslogd
       + #
       +-/etc/init.d/sysklogd reload-or-restart > /dev/null
       ++/etc/init.d/sysklogd --quiet reload
   DIR diff --git a/app-admin/sysklogd/files/sysklogd-1.5-glibc-2.24.patch b/app-admin/sysklogd/files/sysklogd-1.5-glibc-2.24.patch
       @@ -0,0 +1,11 @@
       +--- sysklogd-1.5.1/syslogd.c
       ++++ sysklogd-1.5.1/syslogd.c
       +@@ -2094,7 +2094,7 @@
       +         (void) signal(SIGCHLD, reapchild);        /* reset signal handler -ASP */
       +         wait ((int *)0);
       + #else
       +-        union wait status;
       ++        int status;
       + 
       +         while (wait3(&status, WNOHANG, (struct rusage *) NULL) > 0)
       +                 ;
   DIR diff --git a/app-admin/sysklogd/files/sysklogd-1.5-syslog-func-collision.patch b/app-admin/sysklogd/files/sysklogd-1.5-syslog-func-collision.patch
       @@ -0,0 +1,103 @@
       +http://bugs.gentoo.org/342601
       +
       +rename local "syslog" and "vsyslog" functions to avoid conflicts with glibc's
       +
       +patch by Dmitriy Matrosov
       +
       +--- sysklogd-1.5/klogd.c
       ++++ sysklogd-1.5/klogd.c
       +@@ -258,7 +262,6 @@
       + #if !defined(__GLIBC__)
       + #include <linux/time.h>
       + #endif /* __GLIBC__ */
       +-#include <stdarg.h>
       + #include <paths.h>
       + #include <stdlib.h>
       + #include <pwd.h>
       +@@ -637,7 +640,7 @@
       +                         }
       +                         argl += 3;
       +                 }
       +-                syslog(priority, fmt, argl);
       ++                syslog_own(priority, fmt, argl);
       +                 va_end(ap);
       + #ifdef TESTING
       +                 putchar('\n');
       +@@ -646,7 +649,7 @@
       +         }
       + 
       +         va_start(ap, fmt);
       +-        vsyslog(priority, fmt, ap);
       ++        vsyslog_own(priority, fmt, ap);
       +         va_end(ap);
       + #ifdef TESTING
       +         printf ("\n");
       +@@ -1205,7 +1208,7 @@
       +         }
       + 
       +         if (server_user && drop_root()) {
       +-                syslog(LOG_ALERT, "klogd: failed to drop root");
       ++                syslog_own(LOG_ALERT, "klogd: failed to drop root");
       +                 Terminate();
       +         }
       + 
       +--- sysklogd-1.5/klogd.h
       ++++ sysklogd-1.5/klogd.h
       +@@ -24,6 +24,7 @@
       + #include <stdio.h>
       + #include <syslog.h>
       + #include <string.h>
       ++#include <stdarg.h>
       + 
       + 
       + /* Function prototypes. */
       +@@ -38,3 +43,5 @@
       + extern char * ExpandKadds(char *, char *);
       + extern void SetParanoiaLevel(int);
       + extern void Syslog(int priority, char *fmt, ...);
       ++extern void syslog_own(int, const char *, ...);
       ++extern void vsyslog_own(int, const char *, va_list);
       +--- sysklogd-1.5/ksym_mod.c
       ++++ sysklogd-1.5/ksym_mod.c
       +@@ -95,7 +98,6 @@
       + #if !defined(__GLIBC__)
       + #include <linux/time.h>
       + #endif /* __GLIBC__ */
       +-#include <stdarg.h>
       + #include <paths.h>
       + #include <linux/version.h>
       + 
       +--- sysklogd-1.5/syslog.c
       ++++ sysklogd-1.5/syslog.c
       +@@ -75,6 +79,10 @@
       + 
       + #define        _PATH_LOGNAME        "/dev/log"
       + 
       ++
       ++void syslog_own(int, const char *, ...);
       ++void vsyslog_own(int, const char *, va_list);
       ++
       + static int        LogFile = -1;                /* fd for log */
       + static int        connected;                /* have done connect */
       + static int        LogStat = 0;                /* status bits, set by openlog() */
       +@@ -82,17 +90,17 @@
       + static int        LogFacility = LOG_USER;        /* default facility code */
       + 
       + void
       +-syslog(int pri, const char *fmt, ...)
       ++syslog_own(int pri, const char *fmt, ...)
       + {
       +         va_list ap;
       + 
       +         va_start(ap, fmt);
       +-        vsyslog(pri, fmt, ap);
       ++        vsyslog_own(pri, fmt, ap);
       +         va_end(ap);
       + }
       + 
       + void
       +-vsyslog(pri, fmt, ap)
       ++vsyslog_own(pri, fmt, ap)
       +         int pri;
       +         const char *fmt;
       +         va_list ap;
   DIR diff --git a/app-admin/sysklogd/files/sysklogd.confd b/app-admin/sysklogd/files/sysklogd.confd
       @@ -0,0 +1,6 @@
       +# Config file for /etc/init.d/sysklogd
       +
       +SYSLOGD="-m 0"
       +# send warnings and above to the console
       +KLOGD="-c 3 -2"
       +
   DIR diff --git a/app-admin/sysklogd/files/sysklogd.logrotate b/app-admin/sysklogd/files/sysklogd.logrotate
       @@ -0,0 +1,8 @@
       +/var/log/auth.log /var/log/daemon.log /var/log/debug /var/log/kern.log /var/log/lpr.log /var/log/mail.err /var/log/mail.info /var/log/mail.log /var/log/mail.warn /var/log/messages /var/log/news/news.crit /var/log/news/news.err /var/log/news/news.notice /var/log/syslog /var/log/user.log {
       +  create 640 root root
       +  sharedscripts
       +  missingok
       +  postrotate
       +    /etc/init.d/sysklogd -q reload
       +  endscript
       +}
   DIR diff --git a/app-admin/sysklogd/files/sysklogd.rc7 b/app-admin/sysklogd/files/sysklogd.rc7
       @@ -0,0 +1,74 @@
       +#!/sbin/openrc-run
       +# Copyright 1999-2011 Gentoo Foundation
       +# Distributed under the terms of the GNU General Public License, v2 or later
       +
       +extra_started_commands="reload"
       +
       +depend() {
       +        need clock hostname
       +        provide logger
       +}
       +
       +start_daemon() {
       +        local retval=0
       +        local daemon="$1"
       +        local options="$2"
       +
       +        [ -z "${daemon}" ] && return 1
       +
       +        ebegin "sysklogd -> start: ${daemon}"
       +        start-stop-daemon --start --exec /usr/sbin/"${daemon}" \
       +                --pidfile /var/run/"${daemon}".pid -- ${options}
       +        retval=$?
       +        eend ${retval} "Failed to start ${daemon}"
       +
       +        return ${retval}
       +}
       +
       +stop_daemon() {
       +        local retval=0
       +        local daemon="$1"
       +
       +        [ -z "${daemon}" ] && return 1
       +        
       +        ebegin "sysklogd -> stop: ${daemon}"
       +        # syslogd can be stubborn some times (--retry 15)...
       +        start-stop-daemon --stop --retry 15 --quiet --pidfile /var/run/"${daemon}".pid
       +        retval=$?
       +        eend ${retval} "Failed to stop ${daemon}"
       +
       +        return ${retval}
       +}
       +
       +start() {
       +        start_daemon "syslogd" "${SYSLOGD}" || return 1
       +
       +        # klogd do not always start proper if started too early
       +        sleep 1
       +
       +        if ! start_daemon "klogd" "${KLOGD}" ; then
       +                stop_daemon "syslogd"
       +                return 1
       +        fi
       +
       +        return 0
       +}
       +
       +stop() {
       +        stop_daemon "klogd" || return 1
       +        stop_daemon "syslogd" || return 1 
       +        return 0
       +}
       +
       +reload() {
       +        local ret=0
       +
       +        ebegin "Reloading configuration"
       +
       +        start-stop-daemon --signal HUP --pidfile /var/run/syslogd.pid
       +        ret=$((${ret} + $?))
       +        start-stop-daemon --signal USR1 --pidfile /var/run/klogd.pid
       +        ret=$((${ret} + $?))
       +
       +        eend ${ret}
       +}
   DIR diff --git a/app-admin/sysklogd/metadata.xml b/app-admin/sysklogd/metadata.xml
       @@ -0,0 +1,11 @@
       +<?xml version="1.0" encoding="UTF-8"?>
       +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
       +<pkgmetadata>
       +        <maintainer type="project">
       +                <email>base-system@gentoo.org</email>
       +                <name>Gentoo Base System</name>
       +        </maintainer>
       +        <use>
       +                <flag name="logrotate">use app-admin/logrotate for rotating logs rather than custom cron scripts</flag>
       +        </use>
       +</pkgmetadata>
   DIR diff --git a/app-admin/sysklogd/sysklogd-1.5.1-r1.ebuild b/app-admin/sysklogd/sysklogd-1.5.1-r1.ebuild
       @@ -0,0 +1,71 @@
       +# Copyright 1999-2018 Gentoo Foundation
       +# Distributed under the terms of the GNU General Public License v2
       +
       +EAPI=5
       +
       +inherit eutils flag-o-matic toolchain-funcs
       +
       +DEB_PV="1.5-6"
       +DESCRIPTION="Standard log daemons"
       +HOMEPAGE="http://www.infodrom.org/projects/sysklogd/"
       +SRC_URI="http://www.infodrom.org/projects/sysklogd/download/${P}.tar.gz
       +        mirror://debian/pool/main/s/sysklogd/${PN}_${DEB_PV}.diff.gz"
       +
       +LICENSE="BSD"
       +SLOT="0"
       +KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86"
       +IUSE="logrotate"
       +RESTRICT="test"
       +
       +DEPEND=""
       +RDEPEND="dev-lang/perl
       +        sys-apps/debianutils"
       +
       +DOCS=( ANNOUNCE CHANGES NEWS README.1st README.linux )
       +
       +PATCHES=(
       +        "${WORKDIR}"/${PN}_${DEB_PV}.diff
       +
       +        "${FILESDIR}"/${PN}-1.5-debian-cron.patch
       +        "${FILESDIR}"/${PN}-1.5-build.patch
       +
       +        # CAEN/OWL security patches
       +        "${FILESDIR}"/${PN}-1.4.2-caen-owl-syslogd-bind.diff
       +        "${FILESDIR}"/${PN}-1.4.2-caen-owl-syslogd-drop-root.diff
       +        "${FILESDIR}"/${PN}-1.4.2-caen-owl-klogd-drop-root.diff
       +
       +        "${FILESDIR}"/${PN}-1.5-syslog-func-collision.patch #342601
       +        "${FILESDIR}"/${PN}-1.5-glibc-2.24.patch #604232
       +
       +        "${FILESDIR}"/musl-fixes.patch
       +)
       +
       +src_prepare() {
       +        epatch "${PATCHES[@]}"
       +}
       +
       +src_configure() {
       +        append-lfs-flags
       +        tc-export CC
       +}
       +
       +src_install() {
       +        dosbin syslogd klogd debian/syslog-facility debian/syslogd-listfiles
       +        doman *.[1-9] debian/syslogd-listfiles.8
       +        insinto /etc
       +        doins debian/syslog.conf
       +        if use logrotate ; then
       +                insinto /etc/logrotate.d
       +                newins "${FILESDIR}"/sysklogd.logrotate sysklogd
       +        else
       +                exeinto /etc/cron.daily
       +                newexe debian/cron.daily syslog
       +                exeinto /etc/cron.weekly
       +                newexe debian/cron.weekly syslog
       +        fi
       +
       +        einstalldocs
       +
       +        newinitd "${FILESDIR}"/sysklogd.rc7 sysklogd
       +        newconfd "${FILESDIR}"/sysklogd.confd sysklogd
       +}