diff options
author | Ian Stakenvicius <axs@gentoo.org> | 2013-04-02 15:59:28 -0400 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2013-04-04 10:14:46 -0400 |
commit | 9315b3d16fe2fd451414095a5829786f42d1fb23 (patch) | |
tree | 98d91ceab35700052d1292c4b1831fa80bda9068 | |
parent | 45f9def27267be94265487df03ea3cccfd10f622 (diff) |
Add support for legacy behaviour in udev_device_get_sysattr_value()
Wraps the changes made in systemd commits 5ae18ddc and 53726349
with a #if's on LIBUDEV_LEGACY_VERSION so that old behaviour
can be chosen at build-time if users find it necessary to support
legacy software dependent on the original behaviour
Original Authors:
Kay Sievers
Signed-off-by: Ian Stakenvicius <axs@gentoo.org>
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
-rw-r--r-- | src/libudev/Makefile.am | 1 | ||||
-rw-r--r-- | src/libudev/libudev-device.c | 11 | ||||
-rw-r--r-- | src/libudev/libudev.h | 4 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/libudev/Makefile.am b/src/libudev/Makefile.am index f497995056..98d6e4e0f8 100644 --- a/src/libudev/Makefile.am +++ b/src/libudev/Makefile.am @@ -18,6 +18,7 @@ AM_CPPFLAGS = \ -include $(top_builddir)/config.h \ -DUDEV_CONF_FILE=\"$(udevconffile)\" \ -DUDEV_HWDB_BIN=\"$(udevhwdbbin)\" \ + -DUDEV_VERSION=$(UDEV_VERSION) \ -I $(top_srcdir)/src/udev lib_LTLIBRARIES = \ diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c index aa82507e94..3c9783ffd8 100644 --- a/src/libudev/libudev-device.c +++ b/src/libudev/libudev-device.c @@ -1381,7 +1381,9 @@ _public_ const char *udev_device_get_sysattr_value(struct udev_device *udev_devi } if (S_ISLNK(statbuf.st_mode)) { +#if LIBUDEV_LEGACY_VERSION < 199 struct udev_device *dev; +#endif /* * Some core links return only the last element of the target path, @@ -1398,6 +1400,11 @@ _public_ const char *udev_device_get_sysattr_value(struct udev_device *udev_devi goto out; } +#if LIBUDEV_LEGACY_VERSION < 199 +#if LIBUDEV_LEGACY_VERSION >= 196 + /* resolve only custom link to a device */ + if (!streq(sysattr, "device")) { +#endif /* resolve link to a device and return its syspath */ util_strscpyl(path, sizeof(path), udev_device->syspath, "/", sysattr, NULL); dev = udev_device_new_from_syspath(udev_device->udev, path); @@ -1407,6 +1414,10 @@ _public_ const char *udev_device_get_sysattr_value(struct udev_device *udev_devi val = udev_list_entry_get_value(list_entry); udev_device_unref(dev); } +#if LIBUDEV_LEGACY_VERSION >= 196 + } +#endif +#endif goto out; } diff --git a/src/libudev/libudev.h b/src/libudev/libudev.h index 61567b1d67..e54c5bf67c 100644 --- a/src/libudev/libudev.h +++ b/src/libudev/libudev.h @@ -20,6 +20,10 @@ #ifndef _LIBUDEV_H_ #define _LIBUDEV_H_ +#ifndef LIBUDEV_LEGACY_VERSION +#define LIBUDEV_LEGACY_VERSION UDEV_VERSION +#endif + #include <stdarg.h> #include <sys/types.h> #include <sys/stat.h> |