summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-04-22 22:47:27 +0200
committerAlejandro Colomar <alx@kernel.org>2024-06-18 22:59:45 +0200
commiteca38349cb25ccae89acf3a0dc4dfd9a6ca8770c (patch)
tree4148dd7038e38d04f8d9436d5b8b909a0ef7851c /src
parenta9aed2044c6191b93af0199aa77b26ab39cbbad2 (diff)
downloadunit-eca38349cb25ccae89acf3a0dc4dfd9a6ca8770c.tar.gz
unit-eca38349cb25ccae89acf3a0dc4dfd9a6ca8770c.tar.bz2
fs: Make the full directory path for the pid file and the control socket
Build systems should not attempt to create $runstatedir (or anything under it). Doing so causes warnings in packaging systems, such as in Alpine Linux, as reported by Andy. But unitd(8) can be configured to be installed under /opt, or other trees, where no directories exist before hand. Expecting that the user creates the entire directory trees that unit will need is a bit unreasonable. Instead, let's just create any directories that we need, with all their parents, at run time. Fixes: 57fc9201cb91 ("Socket: Created control socket & pid file directories.") Link: <https://github.com/nginx/unit/issues/742> Reported-by: Andy Postnikov <apostnikov@gmail.com> Tested-by: Andy Postnikov <apostnikov@gmail.com> Tested-by: Andrew Clayton <a.clayton@nginx.com> Reviewed-by: Andrew Clayton <a.clayton@nginx.com> Acked-by: Konstantin Pavlov <thresh@nginx.com> Cc: Liam Crilly <liam@nginx.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
Diffstat (limited to 'src')
-rw-r--r--src/nxt_controller.c2
-rw-r--r--src/nxt_fs.c4
-rw-r--r--src/nxt_fs.h2
-rw-r--r--src/nxt_runtime.c2
4 files changed, 5 insertions, 5 deletions
diff --git a/src/nxt_controller.c b/src/nxt_controller.c
index 109324b8..b4ae8d09 100644
--- a/src/nxt_controller.c
+++ b/src/nxt_controller.c
@@ -695,7 +695,7 @@ nxt_runtime_controller_socket(nxt_task_t *task, nxt_runtime_t *rt)
if (ls->sockaddr->u.sockaddr.sa_family == AF_UNIX) {
const char *path = ls->sockaddr->u.sockaddr_un.sun_path;
- nxt_fs_mkdir_dirname((const u_char *) path, 0755);
+ nxt_fs_mkdir_p_dirname((const u_char *) path, 0755);
}
#endif
diff --git a/src/nxt_fs.c b/src/nxt_fs.c
index 788c3ee2..8ea8e186 100644
--- a/src/nxt_fs.c
+++ b/src/nxt_fs.c
@@ -46,7 +46,7 @@ nxt_fs_mkdir_p(const u_char *dir, mode_t mode)
nxt_int_t
-nxt_fs_mkdir_dirname(const u_char *path, mode_t mode)
+nxt_fs_mkdir_p_dirname(const u_char *path, mode_t mode)
{
char *ptr, *dir;
nxt_int_t ret;
@@ -64,7 +64,7 @@ nxt_fs_mkdir_dirname(const u_char *path, mode_t mode)
}
*ptr = '\0';
- ret = nxt_fs_mkdir((const u_char *) dir, mode);
+ ret = nxt_fs_mkdir_p((const u_char *) dir, mode);
out_free:
nxt_free(dir);
diff --git a/src/nxt_fs.h b/src/nxt_fs.h
index 9a256bd2..a06e4d3d 100644
--- a/src/nxt_fs.h
+++ b/src/nxt_fs.h
@@ -6,7 +6,7 @@
#define _NXT_FS_H_INCLUDED_
-nxt_int_t nxt_fs_mkdir_dirname(const u_char *path, mode_t mode);
+nxt_int_t nxt_fs_mkdir_p_dirname(const u_char *path, mode_t mode);
nxt_int_t nxt_fs_mkdir_p(const u_char *dir, mode_t mode);
diff --git a/src/nxt_runtime.c b/src/nxt_runtime.c
index b368647e..afe5a0b2 100644
--- a/src/nxt_runtime.c
+++ b/src/nxt_runtime.c
@@ -1490,7 +1490,7 @@ nxt_runtime_pid_file_create(nxt_task_t *task, nxt_file_name_t *pid_file)
file.name = pid_file;
- nxt_fs_mkdir_dirname(pid_file, 0755);
+ nxt_fs_mkdir_p_dirname(pid_file, 0755);
n = nxt_file_open(task, &file, O_WRONLY, O_CREAT | O_TRUNC,
NXT_FILE_DEFAULT_ACCESS);