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.
95 lines
3.4 KiB
95 lines
3.4 KiB
9 years ago
|
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
|
||
|
|