From 46995fe446acb48a55f35b7d3c3d2e5373cdd54d Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Sat, 13 Mar 2021 00:37:47 +0100 Subject: [PATCH] Add mksusbys() to helpers.c, a kind-of tmpfiles.d in C Signed-off-by: Joachim Wiberg --- src/helpers.c | 23 +++++++++++++++++++++++ src/helpers.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/src/helpers.c b/src/helpers.c index fa04e39d..6ccf713e 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -447,6 +447,29 @@ int getcgroup(char *buf, size_t len) return 0; } +int mksubsys(const char *dir, mode_t mode, char *user, char *group) +{ + mode_t omask; + int uid, gid; + int rc = 0; + + omask = umask(0); + + uid = getuser(user, NULL); + if (uid >= 0) { + gid = getgroup(group); + if (gid < 0) + gid = 0; + + rc = makedir(dir, mode); + chown(dir, uid, gid); + } + + umask(omask); + + return rc; +} + void set_hostname(char **hostname) { FILE *fp; diff --git a/src/helpers.h b/src/helpers.h index 87315875..a6f3a115 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -85,6 +85,8 @@ int getgroup (char *group); int getcuser (char *buf, size_t len); int getcgroup (char *buf, size_t len); +int mksubsys (const char *dir, mode_t mode, char *user, char *group); + void set_hostname (char **hostname); void networking (int updown);