From 1b0ffaca707005b8ef321bb9d9ec31212be49fe3 Mon Sep 17 00:00:00 2001 From: Begasus Date: Thu, 11 Jan 2024 12:36:21 +0100 Subject: build fixes diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e166889..93d4c57 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -69,6 +69,7 @@ target_link_libraries(KF5Su PRIVATE KF5::CoreAddons # KUser::loginName KF5::ConfigCore # KConfigGroup + network ) diff --git a/src/client.cpp b/src/client.cpp index 2bc2d09..7105f7d 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -38,7 +38,7 @@ public: QByteArray sock; }; -#ifndef SUN_LEN +#if !defined(SUN_LEN) && !defined(Q_OS_HAIKU) #define SUN_LEN(ptr) ((QT_SOCKLEN_T)(((struct sockaddr_un *)0)->sun_path) + strlen((ptr)->sun_path)) #endif @@ -94,7 +94,7 @@ int KDEsuClient::connect() addr.sun_family = AF_UNIX; strcpy(addr.sun_path, d->sock.constData()); - if (QT_SOCKET_CONNECT(d->sockfd, (struct sockaddr *)&addr, SUN_LEN(&addr)) < 0) { + if (QT_SOCKET_CONNECT(d->sockfd, (struct sockaddr *)&addr, sizeof(&addr)) < 0) { qCWarning(KSU_LOG) << "[" << __FILE__ << ":" << __LINE__ << "] " << "connect():" << strerror(errno); close(d->sockfd); diff --git a/src/kdesud/CMakeLists.txt b/src/kdesud/CMakeLists.txt index a545e59..437d4ad 100644 --- a/src/kdesud/CMakeLists.txt +++ b/src/kdesud/CMakeLists.txt @@ -25,7 +25,7 @@ ecm_qt_declare_logging_category(kdesud EXPORT KSU ) -target_link_libraries(kdesud KF5::Su KF5::I18n ${X11_LIBRARIES}) +target_link_libraries(kdesud KF5::Su KF5::I18n ${X11_LIBRARIES} network) if(HAVE_X11) target_include_directories(kdesud PRIVATE ${X11_X11_INCLUDE_PATH}) endif() diff --git a/src/kdesud/kdesud.cpp b/src/kdesud/kdesud.cpp index 0d16772..53c1b13 100644 --- a/src/kdesud/kdesud.cpp +++ b/src/kdesud/kdesud.cpp @@ -60,7 +60,7 @@ #include -#if !HAVE_CLOSE_RANGE +#if !HAVE_CLOSE_RANGE && !defined(Q_OS_HAIKU) #include // close_range syscall #endif @@ -258,11 +258,13 @@ int create_socket() } } +#ifndef Q_OS_HAIKU sockfd = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if (sockfd < 0) { qCCritical(KSUD_LOG) << "socket(): " << ERR << "\n"; return -1; } +#endif // Ensure socket closed on error struct fd_ScopeGuard { @@ -378,9 +380,11 @@ int main(int argc, char *argv[]) exit(1); } +#ifndef Q_OS_HAIKU if (sockfd != 3) { sockfd = dup3(sockfd, 3, O_CLOEXEC); } +#endif if (sockfd < 0) { qCCritical(KSUD_LOG) << "Failed to set sockfd to fd 3" << ERR << "\n"; kdesud_cleanup(); @@ -415,7 +419,9 @@ int main(int argc, char *argv[]) repo = new Repository; QVector handler; +#ifndef Q_OS_HAIKU pipe2(pipeOfDeath, O_CLOEXEC); +#endif maxfd = qMax(maxfd, pipeOfDeath[0]); // Signal handlers -- 2.42.1