You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
polkit-qt5-1/0008-Allow-compilation-with...

95 lines
3.4 KiB

From 15c7867e88c5278f61896b5531ac2b544add8220 Mon Sep 17 00:00:00 2001
From: Alex Richardson <arichardson.kde@gmail.com>
Date: Fri, 26 Feb 2016 15:59:21 +0000
Subject: [PATCH 8/8] Allow compilation with older polkit versions
Return an invalid user from SystemBusNameSubject::user() if
polkit_system_bus_name_get_user_sync is missing
REVIEW: 126813
---
CMakeLists.txt | 3 +++
core/polkitqt1-subject.cpp | 6 ++++++
core/polkitqt1-subject.h | 3 ++-
polkitqt1-config.h.cmake | 1 +
4 files changed, 12 insertions(+), 1 deletion(-)
create mode 100644 polkitqt1-config.h.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a60dfa2..13d9dbd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -101,6 +101,7 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/core
${CMAKE_CURRENT_SOURCE_DIR}/includes
+ ${CMAKE_CURRENT_BINARY_DIR}
)
if(NOT USE_QT5)
include_directories(
@@ -113,6 +114,7 @@ set(CMAKE_REQUIRED_INCLUDES ${POLKIT_INCLUDE_DIR} ${POLKIT_AGENT_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${POLKIT_LIBRARIES} ${POLKIT_AGENT_LIBRARY})
check_function_exists(polkit_agent_listener_register HAVE_POLKIT_AGENT_LISTENER_REGISTER)
check_function_exists(polkit_authority_get_sync HAVE_POLKIT_AUTHORITY_GET_SYNC)
+check_function_exists(polkit_system_bus_name_get_user_sync HAVE_POLKIT_SYSTEM_BUS_NAME_GET_USER_SYNC)
if (NOT HAVE_POLKIT_AGENT_LISTENER_REGISTER OR NOT HAVE_POLKIT_AUTHORITY_GET_SYNC)
message(STATUS "You have an older polkit-1 version: Polkit-Qt-1 will be built in compatibility mode")
@@ -134,6 +136,7 @@ set(POLKITQT-1_LIBRARY_VERSION "${POLKITQT-1_ABI_VERSION}.${POLKITQT-1_VERSION_M
set(POLKITQT-1_LIB_NAMESPACE ${POLKITQT-1_CAMEL_NAME})
configure_file(polkitqt1-version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/polkitqt1-version.h)
+configure_file(polkitqt1-config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/polkitqt1-config.h)
install(FILES
gui/polkitqt1-gui-action.h
diff --git a/core/polkitqt1-subject.cpp b/core/polkitqt1-subject.cpp
index ecb4c0e..ea10828 100644
--- a/core/polkitqt1-subject.cpp
+++ b/core/polkitqt1-subject.cpp
@@ -20,6 +20,7 @@
#include "polkitqt1-subject.h"
#include "polkitqt1-identity.h"
+#include "polkitqt1-config.h"
#include <QtCore/QDebug>
#include <polkit/polkit.h>
@@ -183,7 +184,12 @@ void SystemBusNameSubject::setName(const QString &name)
UnixUserIdentity SystemBusNameSubject::user()
{
+#if HAVE_POLKIT_SYSTEM_BUS_NAME_GET_USER_SYNC
return UnixUserIdentity(polkit_system_bus_name_get_user_sync((PolkitSystemBusName *) subject(), NULL, NULL));
+#else
+ qWarning("Polkit is too old, returning invalid user from SystemBusNameSubject::user()!");
+ return UnixUserIdentity();
+#endif
}
// ----- SystemSession
diff --git a/core/polkitqt1-subject.h b/core/polkitqt1-subject.h
index 03028f6..01323a2 100644
--- a/core/polkitqt1-subject.h
+++ b/core/polkitqt1-subject.h
@@ -214,7 +214,8 @@ public:
/**
* Returns the UnixUserIdentity for this subject.
*
- * The ownership of the returned pointer is passed to the caller.
+ * \note This can be an invalid UnixUserIdentity so be sure to check before using it
+ *
* \since 0.113
**/
UnixUserIdentity user();
diff --git a/polkitqt1-config.h.cmake b/polkitqt1-config.h.cmake
new file mode 100644
index 0000000..fed40a9
--- /dev/null
+++ b/polkitqt1-config.h.cmake
@@ -0,0 +1 @@
+#cmakedefine01 HAVE_POLKIT_SYSTEM_BUS_NAME_GET_USER_SYNC
--
2.5.0