chiark / gitweb /
util: introduce readlink_and_make_absolute()
[elogind.git] / src / util.c
index 7664df59d06359150f0a5c1a82d13b16800038ed..2bc90da3d2b20bf92ad239c265d42f924e968e77 100644 (file)
@@ -582,6 +582,26 @@ int readlink_malloc(const char *p, char **r) {
         }
 }
 
+int readlink_and_make_absolute(const char *p, char **r) {
+        char *target, *k;
+        int j;
+
+        assert(p);
+        assert(r);
+
+        if ((j = readlink_malloc(p, &target)) < 0)
+                return j;
+
+        k = file_in_same_dir(p, target);
+        free(target);
+
+        if (!k)
+                return -ENOMEM;
+
+        *r = k;
+        return 0;
+}
+
 char *file_name_from_path(const char *p) {
         char *r;