From e2a3ea04fc3018aed7852f1b86c68f0058de042f Mon Sep 17 00:00:00 2001
From: Didier Roche <didrocks@ubuntu.com>
Date: Thu, 27 Nov 2014 13:13:17 +0100
Subject: [PATCH 3/3] Cherry-pick Shared-add-readlink_value.patch as using that
 function in the generator.

---
 debian/changelog                               |  2 +
 debian/patches/Shared-add-readlink_value.patch | 59 ++++++++++++++++++++++++++
 debian/patches/series                          |  1 +
 3 files changed, 62 insertions(+)
 create mode 100644 debian/patches/Shared-add-readlink_value.patch

diff --git a/debian/changelog b/debian/changelog
index f1aa3ef..3c0a862 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -21,6 +21,8 @@ systemd (217-1) UNRELEASED; urgency=medium
       $x-display-manager tag if they don't match
       /etc/X11/default-display-manager. This avoids starting multiple dms at
       boot.
+  * Cherry-pick Shared-add-readlink_value.patch as using that function in the
+    generator.
 
  -- Martin Pitt <mpitt@debian.org>  Wed, 19 Nov 2014 08:06:34 +0100
 
diff --git a/debian/patches/Shared-add-readlink_value.patch b/debian/patches/Shared-add-readlink_value.patch
new file mode 100644
index 0000000..9a04ffc
--- /dev/null
+++ b/debian/patches/Shared-add-readlink_value.patch
@@ -0,0 +1,59 @@
+From 9a67bcf27554ee0688198e4d4eb5e541861bf7cb Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Fri, 7 Nov 2014 19:19:02 +0100
+Subject: [PATCH] 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 3411cea..f0e0c0d 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 24480be..04f2d8a 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);
+ 
+-- 
+2.1.3
+
diff --git a/debian/patches/series b/debian/patches/series
index 792c6fa..4b95563 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,6 +1,7 @@
 ## -stable patches:
 
 ## Cherry-picked patches:
+Shared-add-readlink_value.patch
 
 ## Debian specific patches:
 Add-back-support-for-Debian-specific-config-files.patch
-- 
2.1.3

