/* SPDX-License-Identifier: LGPL-2.1+ */
/***
- This file is part of systemd.
-
- Copyright 2013 Zbigniew Jędrzejewski-Szmek
+ Copyright © 2013 Zbigniew Jędrzejewski-Szmek
***/
#include <getopt.h>
static int add_epoll(int epoll_fd, int fd) {
struct epoll_event ev = {
- .events = EPOLLIN
+ .events = EPOLLIN,
+ .data.fd = fd,
};
- int r;
assert(epoll_fd >= 0);
assert(fd >= 0);
- ev.data.fd = fd;
- r = epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &ev);
- if (r < 0)
+ if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &ev) < 0)
return log_error_errno(errno, "Failed to add event on epoll fd:%d for fd:%d: %m", epoll_fd, fd);
return 0;
return count;
}
-static int exec_process(const char* name, char **argv, char **env, int start_fd, int n_fds) {
+static int exec_process(const char* name, char **argv, char **env, int start_fd, size_t n_fds) {
_cleanup_strv_free_ char **envp = NULL;
_cleanup_free_ char *joined = NULL;
- unsigned n_env = 0, length;
+ size_t n_env = 0, length;
const char *tocopy;
char **s;
int r;
r = rearrange_stdio(start_fd, start_fd, STDERR_FILENO); /* invalidates start_fd on success + error */
if (r < 0)
- return log_error_errno(errno, "Failed to move fd to stdin+stdout: %m");
+ return log_error_errno(r, "Failed to move fd to stdin+stdout: %m");
} else {
if (start_fd != SD_LISTEN_FDS_START) {
assert(n_fds == 1);
- r = dup2(start_fd, SD_LISTEN_FDS_START);
- if (r < 0)
+ if (dup2(start_fd, SD_LISTEN_FDS_START) < 0)
return log_error_errno(errno, "Failed to dup connection: %m");
safe_close(start_fd);
start_fd = SD_LISTEN_FDS_START;
}
- if (asprintf((char**)(envp + n_env++), "LISTEN_FDS=%i", n_fds) < 0)
+ if (asprintf((char**)(envp + n_env++), "LISTEN_FDS=%zu", n_fds) < 0)
return log_oom();
if (asprintf((char**)(envp + n_env++), "LISTEN_PID=" PID_FMT, getpid_cached()) < 0)
_cleanup_free_ char *names = NULL;
size_t len;
char *e;
- int i;
len = strv_length(arg_fdnames);
- if (len == 1)
+ if (len == 1) {
+ size_t i;
+
for (i = 1; i < n_fds; i++) {
r = strv_extend(&arg_fdnames, arg_fdnames[0]);
if (r < 0)
return log_error_errno(r, "Failed to extend strv: %m");
}
- else if (len != (unsigned) n_fds)
- log_warning("The number of fd names is different than number of fds: %zu vs %d",
- len, n_fds);
+ } else if (len != n_fds)
+ log_warning("The number of fd names is different than number of fds: %zu vs %zu", len, n_fds);
names = strv_join(arg_fdnames, ":");
if (!names)
.sa_handler = sigchld_hdl,
};
- int r;
-
- r = sigaction(SIGCHLD, &act, 0);
- if (r < 0)
+ if (sigaction(SIGCHLD, &act, 0) < 0)
return log_error_errno(errno, "Failed to install SIGCHLD handler: %m");
return 0;
for (;;) {
struct epoll_event event;
- r = epoll_wait(epoll_fd, &event, 1, -1);
- if (r < 0) {
+ if (epoll_wait(epoll_fd, &event, 1, -1) < 0) {
if (errno == EINTR)
continue;
break;
}
- exec_process(argv[optind], argv + optind, envp, SD_LISTEN_FDS_START, n);
+ exec_process(argv[optind], argv + optind, envp, SD_LISTEN_FDS_START, (size_t) n);
return EXIT_SUCCESS;
}