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>
This commit is contained in:
parent
57d8aa8ffe
commit
ba23b05545
3 changed files with 25 additions and 9 deletions
11
passt.c
11
passt.c
|
@ -199,7 +199,7 @@ void exit_handler(int signal)
|
||||||
*/
|
*/
|
||||||
int main(int argc, char **argv)
|
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];
|
struct epoll_event events[EPOLL_EVENTS];
|
||||||
char *log_name, argv0[PATH_MAX], *name;
|
char *log_name, argv0[PATH_MAX], *name;
|
||||||
struct ctx c = { 0 };
|
struct ctx c = { 0 };
|
||||||
|
@ -299,14 +299,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*c.pid_file) {
|
pidfile_fd = pidfile_open(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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isolate_prefork(&c))
|
if (isolate_prefork(&c))
|
||||||
die("Failed to sandbox process, exiting");
|
die("Failed to sandbox process, exiting");
|
||||||
|
|
22
util.c
22
util.c
|
@ -402,6 +402,28 @@ void pidfile_write(int fd, pid_t pid)
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
* __daemon() - daemon()-like function writing PID file before parent exits
|
||||||
* @pidfile_fd: Open PID file descriptor
|
* @pidfile_fd: Open PID file descriptor
|
||||||
|
|
1
util.h
1
util.h
|
@ -156,6 +156,7 @@ char *line_read(char *buf, size_t len, int fd);
|
||||||
void ns_enter(const struct ctx *c);
|
void ns_enter(const struct ctx *c);
|
||||||
bool ns_is_init(void);
|
bool ns_is_init(void);
|
||||||
int open_in_ns(const struct ctx *c, const char *path, int flags);
|
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);
|
void pidfile_write(int fd, pid_t pid);
|
||||||
int __daemon(int pidfile_fd, int devnull_fd);
|
int __daemon(int pidfile_fd, int devnull_fd);
|
||||||
int fls(unsigned long x);
|
int fls(unsigned long x);
|
||||||
|
|
Loading…
Reference in a new issue