@@ -27,11 +27,13 @@ char* SOCKET_CTRL_PATH = NULL;
char *get_ctrl_socket(void) {
if (!SOCKET_CTRL_PATH || !strlen(SOCKET_CTRL_PATH)) {
- const char *tmpdir = getenv("TMPDIR");
- if (!tmpdir)
- tmpdir = "/tmp";
-
- if (asprintf(&SOCKET_CTRL_PATH, "%s/%s", tmpdir, SOCKET_CTRL_DEFAULT) == -1)
+ const char *socketdir = getenv("RUNTIME_DIRECTORY");
+ if(!socketdir){
+ socketdir = getenv("TMPDIR");
+ }
+ if (!socketdir)
+ socketdir = "/tmp";
+ if (asprintf(&SOCKET_CTRL_PATH, "%s/%s", socketdir, SOCKET_CTRL_DEFAULT) == -1)
return (char *)"/tmp/"SOCKET_CTRL_DEFAULT;
}
@@ -26,11 +26,14 @@ char *SOCKET_PROGRESS_PATH = NULL;
char *get_prog_socket(void) {
if (!SOCKET_PROGRESS_PATH || !strlen(SOCKET_PROGRESS_PATH)) {
- const char *tmpdir = getenv("TMPDIR");
- if (!tmpdir)
- tmpdir = "/tmp";
-
- if (asprintf(&SOCKET_PROGRESS_PATH, "%s/%s", tmpdir, SOCKET_PROGRESS_DEFAULT) == -1)
+ const char *socketdir = getenv("RUNTIME_DIRECTORY");
+ if(!socketdir){
+ socketdir = getenv("TMPDIR");
+ }
+ if(!socketdir){
+ socketdir = "/tmp";
+ }
+ if (asprintf(&SOCKET_PROGRESS_PATH, "%s/%s", socketdir, SOCKET_PROGRESS_DEFAULT) == -1)
return (char *)"/tmp/"SOCKET_PROGRESS_DEFAULT;
}
@@ -273,6 +273,9 @@ int main(int argc, char **argv)
if (opt_p) {
rundir = getenv("PSPLASH_FIFO_DIR");
+ if(!rundir){
+ rundir = getenv("RUNTIME_DIRECTORY");
+ }
if (!rundir)
rundir = "/run";
snprintf(psplash_pipe_path, sizeof(psplash_pipe_path), "%s/psplash_fifo", rundir);
The RUNTIME_DIRECTORY variable is set by systemd (when setting RuntimeDirectory=) and points to a systemd managed folder where sockets shall be created. In case this variable is set, we create the IPC sockets there. If it is not set, continue with the existing logic. Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com> --- ipc/network_ipc.c | 12 +++++++----- ipc/progress_ipc.c | 13 ++++++++----- tools/swupdate-progress.c | 3 +++ 3 files changed, 18 insertions(+), 10 deletions(-)