Since polkit 0.97 is polkit_authority_get_type_sync available. For older
versions we need to use polkit_authority_get_type function.
Signed-off-by: Roman Rakus <rrakus(a)redhat.com>
---
src/CMakeLists.txt | 6 ++++++
src/include/config.h.in | 1 +
src/lib/mh_dbus_common.c | 9 ++++++++-
3 files changed, 15 insertions(+), 1 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e0a9914..4043d89 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -90,6 +90,9 @@ if(WITH-DBUS STREQUAL "ON")
pkg_check_modules(dbus-glib REQUIRED dbus-glib-1)
pkg_check_modules(polkit REQUIRED polkit-gobject-1)
+ SET(CMAKE_REQUIRED_LIBRARIES ${polkit_LIBRARIES})
+ check_function_exists (polkit_authority_get_sync HAVE_PK_GET_SYNC)
+
if(NOT dbus-glib_FOUND)
message(FATAL_ERROR "dbus-glib headers/libraries not found.")
endif(NOT dbus-glib_FOUND)
@@ -104,6 +107,9 @@ else(WITH-DBUS STREQUAL "ON")
pkg_check_modules(dbus-glib dbus-glib-1)
pkg_check_modules(polkit polkit-gobject-1)
+ SET(CMAKE_REQUIRED_LIBRARIES ${polkit_LIBRARIES})
+ check_function_exists (polkit_authority_get_sync HAVE_PK_GET_SYNC)
+
if(NOT dbus-glib_FOUND)
message(STATUS "dbus-glib headers/libraries not found => DBus
disabled")
set(WITH-DBUS "OFF")
diff --git a/src/include/config.h.in b/src/include/config.h.in
index 9253178..6231970 100644
--- a/src/include/config.h.in
+++ b/src/include/config.h.in
@@ -4,3 +4,4 @@
#cmakedefine HAVE_RESOLV_H 1
#cmakedefine HAVE_TIME 1
#cmakedefine HAVE_G_LIST_FREE_FULL 1
+#cmakedefine HAVE_PK_GET_SYNC 1
diff --git a/src/lib/mh_dbus_common.c b/src/lib/mh_dbus_common.c
index a58c8a1..89405ed 100644
--- a/src/lib/mh_dbus_common.c
+++ b/src/lib/mh_dbus_common.c
@@ -56,6 +56,13 @@ check_authorization(const gchar *action, GError** error,
}
err = NULL;
subject = polkit_system_bus_name_new(dbus_g_method_get_sender(context));
+#ifndef HAVE_PK_GET_SYNC
+ authority = polkit_authority_get();
+ if(!authority) {
+ g_printerr("Error in obtaining authority\n");
+ return FALSE;
+ }
+#else
authority = polkit_authority_get_sync(NULL, &err);
if (err != NULL) {
g_printerr("Error in obtaining authority: %s\n", err->message);
@@ -64,7 +71,7 @@ check_authorization(const gchar *action, GError** error,
g_error_free(err);
return FALSE;
}
-
+#endif
result = polkit_authority_check_authorization_sync(authority, subject,
action, NULL,
POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION, NULL,
--
1.7.4.2