core-swap-advertise-Discard-over-dbus.patch
core-swap-only-make-configured-units-part-of-swap.ta.patch
swap-replace-Discard-setting-by-a-more-generic-Optio.patch
+shared-add-readlink_value.patch
## Debian specific patches:
Add-back-support-for-Debian-specific-config-files.patch
--- /dev/null
+From: Tom Gundersen <teg@jklm.no>
+Date: Fri, 7 Nov 2014 19:19:02 +0100
+Subject: shared: add readlink_value
+
+Reads the basename of the target of a symlink.
+---
+ src/shared/util.c | 22 ++++++++++++++++++++++
+ src/shared/util.h | 1 +
+ 2 files changed, 23 insertions(+)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 4143f6d..1b3bbeb 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;
+diff --git a/src/shared/util.h b/src/shared/util.h
+index 3558446..f928034 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -270,6 +270,7 @@ char **replace_env_argv(char **argv, char **env);
+
+ int readlinkat_malloc(int fd, const char *p, char **ret);
+ int readlink_malloc(const char *p, char **r);
++int readlink_value(const char *p, char **ret);
+ int readlink_and_make_absolute(const char *p, char **r);
+ int readlink_and_canonicalize(const char *p, char **r);
+