Merge branch 'netbsd' into 'main'

Initial NetBSD support

See merge request wayland/wayland!258
This commit is contained in:
nia 2024-02-21 15:44:32 +00:00
commit 60c198be6c
4 changed files with 32 additions and 7 deletions

View file

@ -16,7 +16,7 @@ config_h.set_quoted('PACKAGE', meson.project_name())
config_h.set_quoted('PACKAGE_VERSION', meson.project_version()) config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
cc_args = [] cc_args = []
if host_machine.system() != 'freebsd' if host_machine.system() == 'linux'
cc_args += ['-D_POSIX_C_SOURCE=200809L'] cc_args += ['-D_POSIX_C_SOURCE=200809L']
endif endif
add_project_arguments(cc_args, language: 'c') add_project_arguments(cc_args, language: 'c')
@ -69,8 +69,8 @@ endif
config_h.set10('HAVE_BROKEN_MSG_CMSG_CLOEXEC', have_broken_msg_cmsg_cloexec) config_h.set10('HAVE_BROKEN_MSG_CMSG_CLOEXEC', have_broken_msg_cmsg_cloexec)
if get_option('libraries') if get_option('libraries')
if host_machine.system() == 'freebsd' if cc.has_function('kqueue', prefix: '#include <sys/event.h>')
# When building for FreeBSD, epoll(7) is provided by a userspace # When building for BSD, epoll(7) is provided by a userspace
# wrapper around kqueue(2). # wrapper around kqueue(2).
epoll_dep = dependency('epoll-shim') epoll_dep = dependency('epoll-shim')
else else

View file

@ -294,7 +294,7 @@ uppercase_dup(const char *src)
u = xstrdup(src); u = xstrdup(src);
for (i = 0; u[i]; i++) for (i = 0; u[i]; i++)
u[i] = toupper(u[i]); u[i] = toupper((unsigned char) u[i]);
u[i] = '\0'; u[i] = '\0';
return u; return u;
@ -354,7 +354,7 @@ desc_dump(char *desc, const char *fmt, ...)
for (i = 0; desc[i]; ) { for (i = 0; desc[i]; ) {
k = i; k = i;
newlines = 0; newlines = 0;
while (desc[i] && isspace(desc[i])) { while (desc[i] && isspace((unsigned char) desc[i])) {
if (desc[i] == '\n') if (desc[i] == '\n')
newlines++; newlines++;
i++; i++;
@ -363,7 +363,7 @@ desc_dump(char *desc, const char *fmt, ...)
break; break;
j = i; j = i;
while (desc[i] && !isspace(desc[i])) while (desc[i] && !isspace((unsigned char) desc[i]))
i++; i++;
if (newlines > 1) if (newlines > 1)

View file

@ -106,7 +106,25 @@ wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
#endif #endif
return 0; return 0;
} }
#elif defined(SO_PEERCRED) #elif defined(LOCAL_CREDS) /* NetBSD */
#ifndef SOL_LOCAL /* Before NetBSD 10.0, SOL_LOCAL isn't defined */
#define SOL_LOCAL (0)
#endif
int
wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
{
socklen_t len;
struct sockcred ucred;
len = sizeof(ucred);
if (getsockopt(sockfd, SOL_LOCAL, LOCAL_CREDS, &ucred, &len) < 0)
return -1;
*uid = ucred.sc_uid;
*gid = ucred.sc_gid;
*pid = ucred.sc_pid;
return 0;
}
#elif defined(SO_PEERCRED) /* Linux */
int int
wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid) wl_os_socket_peercred(int sockfd, uid_t *uid, gid_t *gid, pid_t *pid)
{ {

View file

@ -308,6 +308,13 @@ is_debugger_attached(void)
return rc; return rc;
} }
#else
static int
is_debugger_attached(void)
{
/* 0=debugger can't be determined */
return 0;
}
#endif #endif
int main(int argc, char *argv[]) int main(int argc, char *argv[])