X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Futil.c;h=2241b79859ff16233f4a33e7f66aea13efb11464;hp=8fa01fa8a49609baf640ef850da891ac19dfcb85;hb=844ec79b3c2f246114ea316ebe1f36044bdb688e;hpb=18cd5fe99f70a55a2d6f2303d6ee0624942695b1 diff --git a/src/shared/util.c b/src/shared/util.c index 8fa01fa8a..2241b7985 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -59,6 +59,7 @@ #include #include #include +#include #include "macro.h" #include "util.h" @@ -2356,6 +2357,24 @@ int dir_is_empty(const char *path) { } } +char* dirname_malloc(const char *path) { + char *d, *dir, *dir2; + + d = strdup(path); + if (!d) + return NULL; + dir = dirname(d); + assert(dir); + + if (dir != d) { + dir2 = strdup(dir); + free(d); + return dir2; + } + + return dir; +} + unsigned long long random_ull(void) { _cleanup_close_ int fd; uint64_t ull;