add ENABLE_FEATURE_SYSTEMD and use it in syslogd
No binary (build failed)
—
(log yok)
| @@ -1217,6 +1217,12 @@ extern void selinux_preserve_fcontext(int fdesc) FAST_FUNC; | |
| #endif | |
| extern void selinux_or_die(void) FAST_FUNC; | |
| + | |
| + | /* systemd support */ |
| + | #define SD_LISTEN_FDS_START 3 |
| + | int sd_listen_fds(void); |
| + | |
| + | |
| /* setup_environment: | |
| * if chdir pw->pw_dir: ok: else if to_tmp == 1: goto /tmp else: goto / or die | |
| * if clear_env = 1: cd(pw->pw_dir), clear environment, then set | |
| @@ -0,0 +1,62 @@ | |
| + | /* |
| + | * Copyright (C) 2011 Davide Cavalca <[email protected]> |
| + | * |
| + | * Based on http://cgit.freedesktop.org/systemd/tree/src/sd-daemon.c |
| + | * Copyright 2010 Lennart Poettering |
| + | * |
| + | * Permission is hereby granted, free of charge, to any person |
| + | * obtaining a copy of this software and associated documentation files |
| + | * (the "Software"), to deal in the Software without restriction, |
| + | * including without limitation the rights to use, copy, modify, merge, |
| + | * publish, distribute, sublicense, and/or sell copies of the Software, |
| + | * and to permit persons to whom the Software is furnished to do so, |
| + | * subject to the following conditions: |
| + | * |
| + | * The above copyright notice and this permission notice shall be |
| + | * included in all copies or substantial portions of the Software. |
| + | * |
| + | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| + | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| + | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| + | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
| + | * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| + | * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| + | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| + | * SOFTWARE. |
| + | */ |
| + | #include "libbb.h" |
| + | |
| + | //config:config FEATURE_SYSTEMD |
| + | //config: bool "Enable systemd support" |
| + | //config: default y |
| + | //config: help |
| + | //config: If you plan to use busybox daemons on a system where daemons |
| + | //config: are controlled by systemd, enable this option. |
| + | //config: If you don't use systemd, it is still safe to enable it, |
| + | //config: but yhe downside is increased code size. |
| + | |
| + | //kbuild:lib-$(CONFIG_FEATURE_SYSTEMD) += systemd_support.o |
| + | |
| + | int sd_listen_fds(void) |
| + | { |
| + | const char *e; |
| + | int n; |
| + | int fd; |
| + | |
| + | e = getenv("LISTEN_PID"); |
| + | if (!e) |
| + | return 0; |
| + | n = xatoi_positive(e); |
| + | /* Is this for us? */ |
| + | if (getpid() != (pid_t) n) |
| + | return 0; |
| + | |
| + | e = getenv("LISTEN_FDS"); |
| + | if (!e) |
| + | return 0; |
| + | n = xatoi_positive(e); |
| + | for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd++) |
| + | close_on_exec_on(fd); |
| + | |
| + | return n; |
| + | } |
| @@ -512,6 +512,11 @@ static NOINLINE int create_socket(void) | |
| int sock_fd; | |
| char *dev_log_name; | |
| + | #if ENABLE_FEATURE_SYSTEMD |
| + | if (sd_listen_fds() == 1) |
| + | return SD_LISTEN_FDS_START; |
| + | #endif |
| + | |
| memset(&sunx, 0, sizeof(sunx)); | |
| sunx.sun_family = AF_UNIX; | |