mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-29 05:40:16 -04:00
Merge branch 'QNX_OS' into 'main'
os: Add QNX support for wl_os_socket_peercred() See merge request wayland/wayland!457
This commit is contained in:
commit
74dd754d2b
1 changed files with 30 additions and 1 deletions
|
|
@ -40,6 +40,11 @@
|
|||
#include <sys/ucred.h>
|
||||
#endif
|
||||
|
||||
#if defined(__QNXNTO__)
|
||||
#include <sys/un.h>
|
||||
#include <sys/ucred.h>
|
||||
#endif
|
||||
|
||||
#include "wayland-os.h"
|
||||
|
||||
/* used by tests */
|
||||
|
|
@ -85,7 +90,31 @@ wl_os_socket_cloexec(int domain, int type, int protocol)
|
|||
return set_cloexec_or_close(fd);
|
||||
}
|
||||
|
||||
#if defined(__FreeBSD__)
|
||||
#if defined(__QNXNTO__)
|
||||
int
|
||||
wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
|
||||
{
|
||||
socklen_t len;
|
||||
struct xucred ucred;
|
||||
|
||||
len = sizeof(ucred);
|
||||
if (getsockopt(sockfd, SOL_LOCAL, LOCAL_PEERCRED, &ucred, &len) < 0) {
|
||||
if (errno != ENOTCONN)
|
||||
return -1;
|
||||
/* LOCAL_PEERCRED will report ENOTCONN for socketpair sockets */
|
||||
*pid = getpid();
|
||||
*uid = getuid();
|
||||
*gid = getgid();
|
||||
} else if (ucred.cr_version != XUCRED_VERSION) {
|
||||
return -1;
|
||||
} else {
|
||||
*uid = ucred.cr_uid;
|
||||
*gid = ucred.cr_gid;
|
||||
*pid = ucred.cr_pid;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#elif defined(__FreeBSD__)
|
||||
int
|
||||
wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue