X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Futil.c;h=f0e0c0dd3d0c6f1ea9583a0ac49d361034aae0aa;hb=9a67bcf27554ee0688198e4d4eb5e541861bf7cb;hp=3411cea34305b783420ec88f2f3cb91dd2a9e6bf;hpb=f4934dfaaac70c6d0d49463af62cbd089bfa64c8;p=elogind.git diff --git a/src/shared/util.c b/src/shared/util.c index 3411cea34..f0e0c0dd3 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -893,6 +893,28 @@ int readlink_malloc(const char *p, char **ret) { return readlinkat_malloc(AT_FDCWD, p, ret); } +int readlink_value(const char *p, char **ret) { + _cleanup_free_ char *link = NULL; + char *value; + int r; + + r = readlink_malloc(p, &link); + if (r < 0) + return r; + + value = basename(link); + if (!value) + return -ENOENT; + + value = strdup(value); + if (!value) + return -ENOMEM; + + *ret = value; + + return 0; +} + int readlink_and_make_absolute(const char *p, char **r) { _cleanup_free_ char *target = NULL; char *k;