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);