1
0
forked from drath/libratbag

ratbagd: create path if not present before installing dbus policy dir

Signed-off-by: Filipe Laíns <lains@archlinux.org>
This commit is contained in:
Filipe Laíns
2020-04-17 06:20:49 +01:00
committed by Filipe Laíns
parent 39769c57dd
commit a8316c07f3
3 changed files with 27 additions and 0 deletions

View File

@@ -29,6 +29,7 @@
#include <assert.h>
#include <errno.h>
#include <libgen.h>
#include <libratbag.h>
#include <libudev.h>
#include <stdio.h>
@@ -547,6 +548,13 @@ static bool install_ratbagd_devel_dbus_policy(void)
log_error("Failed to source policy file: %m\n");
goto out;
}
if (mkdir_p(dirname(strdupa(DBUS_POLICY_DST)), 0755)) {
log_error("Failed to create destination path: %m\n");
goto out;
}
out = open(DBUS_POLICY_DST, O_CREAT|O_WRONLY, 0644);
if (out == -1) {
log_error("Failed to open destination: %m\n");

View File

@@ -37,6 +37,8 @@
#include <stdlib.h>
#include <iconv.h>
#include <errno.h>
#include <libgen.h>
#include <sys/stat.h>
#include "libratbag-util.h"
#include "libratbag-private.h"
@@ -188,3 +190,18 @@ err:
iconv_close(converter);
return ret;
}
int mkdir_p(char *dir, mode_t mode)
{
struct stat sb;
if (!dir)
return EINVAL;
if (!stat(dir, &sb))
return 0;
mkdir_p(dirname(strdupa(dir)), mode);
return mkdir(dir, mode);
}

View File

@@ -62,6 +62,8 @@ int list_empty(const struct list *list);
pos = tmp, \
tmp = container_of(pos->member.next, tmp, member))
int mkdir_p(char *dir, mode_t mode);
static inline char*
strncpy_safe(char *dest, const char *src, size_t n)
{