diff options
| author | Mattias Andrée <m@maandree.se> | 2025-02-10 17:50:58 +0100 | 
|---|---|---|
| committer | Mattias Andrée <m@maandree.se> | 2025-02-10 17:52:46 +0100 | 
| commit | ec1bcdcd0dd6e196303e8d9a30b3b2740e32c502 (patch) | |
| tree | dcc759aaf897c915827659e00644f12503cf1268 /libcoopgamma_get_pid_file.c | |
| parent | Improve makefile (diff) | |
| download | libcoopgamma-ec1bcdcd0dd6e196303e8d9a30b3b2740e32c502.tar.gz libcoopgamma-ec1bcdcd0dd6e196303e8d9a30b3b2740e32c502.tar.bz2 libcoopgamma-ec1bcdcd0dd6e196303e8d9a30b3b2740e32c502.tar.xz | |
Minor code improvements and split into multiple c files
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'libcoopgamma_get_pid_file.c')
| -rw-r--r-- | libcoopgamma_get_pid_file.c | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/libcoopgamma_get_pid_file.c b/libcoopgamma_get_pid_file.c new file mode 100644 index 0000000..45afd1b --- /dev/null +++ b/libcoopgamma_get_pid_file.c @@ -0,0 +1,35 @@ +/* See LICENSE file for copyright and license details. */ +#include "common.h" + + +/** + * Get the PID file of the coopgamma server + *  + * SIGCHLD must not be ignored or blocked + *  + * @param   method   The adjustment method, `NULL` for automatic + * @param   site     The site, `NULL` for automatic + * @return           The pathname of the server's PID file, `NULL` on error + *                   or if there server does not use PID files. The later + *                   case is detected by checking that `errno` is set to 0. + */ +char * +libcoopgamma_get_pid_file(const char *restrict method, const char *restrict site) +{ +	char *path; +	size_t n; + +	path = libcoopgamma_get_socket_file(method, site); +	if (!path) +		return NULL; + +	n = strlen(path); +	if (n < 7U || strcmp(&path[n - 7U], ".socket")) { +		free(path); +		errno = EBADMSG; +		return NULL; +	} + +	stpcpy(&path[n - 7U], ".pid"); +	return path; +} | 
