diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2024-05-22 19:50:58 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-05-23 16:43:13 +0200 |
commit | ba23b05545e1e316235fad7a66f3cfd643c22146 (patch) | |
tree | cd590216a2fab87eea2f109ed28eadb16a551a9e | |
parent | 57d8aa8ffefcc226c5c3179e4a8d346cbe61e865 (diff) | |
download | passt-ba23b05545e1e316235fad7a66f3cfd643c22146.tar passt-ba23b05545e1e316235fad7a66f3cfd643c22146.tar.gz passt-ba23b05545e1e316235fad7a66f3cfd643c22146.tar.bz2 passt-ba23b05545e1e316235fad7a66f3cfd643c22146.tar.lz passt-ba23b05545e1e316235fad7a66f3cfd643c22146.tar.xz passt-ba23b05545e1e316235fad7a66f3cfd643c22146.tar.zst passt-ba23b05545e1e316235fad7a66f3cfd643c22146.zip |
passt, util: Move opening of PID file to its own function
We won't call it from main() any longer: move it.
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
-rw-r--r-- | passt.c | 11 | ||||
-rw-r--r-- | util.c | 22 | ||||
-rw-r--r-- | util.h | 1 |
3 files changed, 25 insertions, 9 deletions
@@ -199,7 +199,7 @@ void exit_handler(int signal) */ int main(int argc, char **argv) { - int nfds, i, devnull_fd = -1, pidfile_fd = -1; + int nfds, i, devnull_fd = -1, pidfile_fd; struct epoll_event events[EPOLL_EVENTS]; char *log_name, argv0[PATH_MAX], *name; struct ctx c = { 0 }; @@ -299,14 +299,7 @@ int main(int argc, char **argv) } } - if (*c.pid_file) { - if ((pidfile_fd = open(c.pid_file, - O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, - S_IRUSR | S_IWUSR)) < 0) { - perror("PID file open"); - exit(EXIT_FAILURE); - } - } + pidfile_fd = pidfile_open(c.pid_file); if (isolate_prefork(&c)) die("Failed to sandbox process, exiting"); @@ -403,6 +403,28 @@ void pidfile_write(int fd, pid_t pid) } /** + * pidfile_open() - Open PID file if needed + * @path: Path for PID file, empty string if no PID file is requested + * + * Return: descriptor for PID file, -1 if path is NULL, won't return on failure + */ +int pidfile_open(const char *path) +{ + int fd; + + if (!*path) + return -1; + + if ((fd = open(path, O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, + S_IRUSR | S_IWUSR)) < 0) { + perror("PID file open"); + exit(EXIT_FAILURE); + } + + return fd; +} + +/** * __daemon() - daemon()-like function writing PID file before parent exits * @pidfile_fd: Open PID file descriptor * @devnull_fd: Open file descriptor for /dev/null @@ -156,6 +156,7 @@ char *line_read(char *buf, size_t len, int fd); void ns_enter(const struct ctx *c); bool ns_is_init(void); int open_in_ns(const struct ctx *c, const char *path, int flags); +int pidfile_open(const char *path); void pidfile_write(int fd, pid_t pid); int __daemon(int pidfile_fd, int devnull_fd); int fls(unsigned long x); |