summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/CMakeLists.txt2
-rw-r--r--apt-pkg/cdrom.cc47
-rw-r--r--apt-pkg/cdrom.h31
3 files changed, 28 insertions, 52 deletions
diff --git a/apt-pkg/CMakeLists.txt b/apt-pkg/CMakeLists.txt
index e3e078b81..651e55c79 100644
--- a/apt-pkg/CMakeLists.txt
+++ b/apt-pkg/CMakeLists.txt
@@ -44,6 +44,7 @@ target_include_directories(apt-pkg
${BZIP2_INCLUDE_DIR}
${LZMA_INCLUDE_DIRS}
${LZ4_INCLUDE_DIRS}
+ ${UDEV_INCLUDE_DIRS}
${ICONV_INCLUDE_DIRS}
)
@@ -54,6 +55,7 @@ target_link_libraries(apt-pkg
${BZIP2_LIBRARIES}
${LZMA_LIBRARIES}
${LZ4_LIBRARIES}
+ ${UDEV_LIBRARIES}
${ICONV_LIBRARIES}
)
set_target_properties(apt-pkg PROPERTIES VERSION ${MAJOR}.${MINOR})
diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc
index 2dccc6d12..4f57153f9 100644
--- a/apt-pkg/cdrom.cc
+++ b/apt-pkg/cdrom.cc
@@ -27,6 +27,10 @@
#include <apti18n.h>
+#ifdef HAVE_UDEV
+#include <libudev.h>
+#endif
+
using namespace std;
// FindPackages - Find the package files on the CDROM /*{{{*/
@@ -913,43 +917,15 @@ bool pkgCdrom::Add(pkgCdromStatus *log) /*{{{*/
return true;
}
/*}}}*/
-pkgUdevCdromDevices::pkgUdevCdromDevices() /*{{{*/
-: d(NULL), libudev_handle(NULL), udev_new(NULL), udev_enumerate_add_match_property(NULL),
- udev_enumerate_scan_devices(NULL), udev_enumerate_get_list_entry(NULL),
- udev_device_new_from_syspath(NULL), udev_enumerate_get_udev(NULL),
- udev_list_entry_get_name(NULL), udev_device_get_devnode(NULL),
- udev_enumerate_new(NULL), udev_list_entry_get_next(NULL),
- udev_device_get_property_value(NULL), udev_enumerate_add_match_sysattr(NULL)
+
+pkgUdevCdromDevices::pkgUdevCdromDevices() /*{{{*/
+ : d(NULL)
{
}
/*}}}*/
bool pkgUdevCdromDevices::Dlopen() /*{{{*/
{
- // alread open
- if(libudev_handle != NULL)
- return true;
-
- // see if we can get libudev
- void *h = ::dlopen("libudev.so.0", RTLD_LAZY);
- if(h == NULL)
- return false;
-
- // get the pointers to the udev structs
- libudev_handle = h;
- udev_new = (udev* (*)(void)) dlsym(h, "udev_new");
- udev_enumerate_add_match_property = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_property");
- udev_enumerate_add_match_sysattr = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_sysattr");
- udev_enumerate_scan_devices = (int (*)(udev_enumerate*))dlsym(h, "udev_enumerate_scan_devices");
- udev_enumerate_get_list_entry = (udev_list_entry* (*)(udev_enumerate*))dlsym(h, "udev_enumerate_get_list_entry");
- udev_device_new_from_syspath = (udev_device* (*)(udev*, const char*))dlsym(h, "udev_device_new_from_syspath");
- udev_enumerate_get_udev = (udev* (*)(udev_enumerate*))dlsym(h, "udev_enumerate_get_udev");
- udev_list_entry_get_name = (const char* (*)(udev_list_entry*))dlsym(h, "udev_list_entry_get_name");
- udev_device_get_devnode = (const char* (*)(udev_device*))dlsym(h, "udev_device_get_devnode");
- udev_enumerate_new = (udev_enumerate* (*)(udev*))dlsym(h, "udev_enumerate_new");
- udev_list_entry_get_next = (udev_list_entry* (*)(udev_list_entry*))dlsym(h, "udev_list_entry_get_next");
- udev_device_get_property_value = (const char* (*)(udev_device *, const char *))dlsym(h, "udev_device_get_property_value");
-
return true;
}
/*}}}*/
@@ -963,13 +939,11 @@ vector<CdromDevice> pkgUdevCdromDevices::Scan()
vector<CdromDevice> pkgUdevCdromDevices::ScanForRemovable(bool CdromOnly)/*{{{*/
{
vector<CdromDevice> cdrom_devices;
+#ifdef HAVE_UDEV
struct udev_enumerate *enumerate;
struct udev_list_entry *l, *devices;
struct udev *udev_ctx;
- if(libudev_handle == NULL)
- return cdrom_devices;
-
udev_ctx = udev_new();
enumerate = udev_enumerate_new (udev_ctx);
if (CdromOnly)
@@ -1008,15 +982,14 @@ vector<CdromDevice> pkgUdevCdromDevices::ScanForRemovable(bool CdromOnly)/*{{{*/
cdrom.MountPath = "";
}
cdrom_devices.push_back(cdrom);
- }
+ }
+#endif
return cdrom_devices;
}
/*}}}*/
pkgUdevCdromDevices::~pkgUdevCdromDevices() /*{{{*/
{
- if (libudev_handle != NULL)
- dlclose(libudev_handle);
}
/*}}}*/
diff --git a/apt-pkg/cdrom.h b/apt-pkg/cdrom.h
index 7425c09c1..6bc2b34f9 100644
--- a/apt-pkg/cdrom.h
+++ b/apt-pkg/cdrom.h
@@ -99,22 +99,23 @@ struct CdromDevice /*{{{*/
class pkgUdevCdromDevices /*{{{*/
{
void * const d;
+
protected:
- // libudev dlopen structure
- void *libudev_handle;
- struct udev* (*udev_new)(void);
- int (*udev_enumerate_add_match_property)(struct udev_enumerate *udev_enumerate, const char *property, const char *value);
- int (*udev_enumerate_scan_devices)(struct udev_enumerate *udev_enumerate);
- struct udev_list_entry* (*udev_enumerate_get_list_entry)(struct udev_enumerate *udev_enumerate);
- struct udev_device* (*udev_device_new_from_syspath)(struct udev *udev, const char *syspath);
- struct udev* (*udev_enumerate_get_udev)(struct udev_enumerate *udev_enumerate);
- const char* (*udev_list_entry_get_name)(struct udev_list_entry *list_entry);
- const char* (*udev_device_get_devnode)(struct udev_device *udev_device);
- struct udev_enumerate *(*udev_enumerate_new) (struct udev *udev);
- struct udev_list_entry *(*udev_list_entry_get_next)(struct udev_list_entry *list_entry);
- const char* (*udev_device_get_property_value)(struct udev_device *udev_device, const char *key);
- int (*udev_enumerate_add_match_sysattr)(struct udev_enumerate *udev_enumerate, const char *property, const char *value);
- // end libudev dlopen
+ // old libudev dlopen structure, not used anymore, but can't break ABI
+ void *_padding;
+ struct _padding *(*_padding__new)(void);
+ int (*_padding__enumerate_add_match_property)(struct _padding_enumerate *_padding_enumerate, const char *property, const char *value);
+ int (*_padding__enumerate_scan_devices)(struct _padding_enumerate *_padding_enumerate);
+ struct _padding_list_entry *(*_padding__enumerate_get_list_entry)(struct _padding_enumerate *_padding_enumerate);
+ struct _padding_device *(*_padding__device_new_from_syspath)(struct _padding *_padding, const char *syspath);
+ struct _padding *(*_padding__enumerate_get__padding)(struct _padding_enumerate *_padding_enumerate);
+ const char *(*_padding__list_entry_get_name)(struct _padding_list_entry *list_entry);
+ const char *(*_padding__device_get_devnode)(struct _padding_device *_padding_device);
+ struct _padding_enumerate *(*_padding__enumerate_new)(struct _padding *_padding);
+ struct _padding_list_entry *(*_padding__list_entry_get_next)(struct _padding_list_entry *list_entry);
+ const char *(*_padding__device_get_property_value)(struct _padding_device *_padding_device, const char *key);
+ int (*_padding__enumerate_add_match_sysattr)(struct _padding_enumerate *_padding_enumerate, const char *property, const char *value);
+ // end lib_padding dlopen
public:
pkgUdevCdromDevices();