From fa3aab97687bee086005f8c6e40a54f99cdfa836 Mon Sep 17 00:00:00 2001 From: q3cpma Date: Thu, 30 Nov 2017 16:53:55 +0100 Subject: [PATCH] Fixes compilation on FreeBSD (and hopefully on other POSIX platforms) --- gfx/common/x11_common.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/gfx/common/x11_common.c b/gfx/common/x11_common.c index 20eebf8da3..5189cb3792 100644 --- a/gfx/common/x11_common.c +++ b/gfx/common/x11_common.c @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -159,19 +160,27 @@ static void x11_set_window_class(Display *dpy, Window win) static void x11_set_window_pid(Display *dpy, Window win) { + long scret; + char *hostname; pid_t pid = getpid(); - char hostname[HOST_NAME_MAX + 1]; - XChangeProperty(dpy, win, XInternAtom(dpy, "_NET_WM_PID", False), - XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&pid, 1); + XChangeProperty(dpy, win, XInternAtom(dpy, "_NET_WM_PID", False), + XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&pid, 1); - if(gethostname(hostname, HOST_NAME_MAX + 1) == -1) - RARCH_WARN("Failed to get hostname.\n"); - else - { - XChangeProperty(dpy, win, XA_WM_CLIENT_MACHINE, XA_STRING, 8, - PropModeReplace, (unsigned char *)hostname, strlen(hostname)); - } + errno = 0; + if((scret = sysconf(_SC_HOST_NAME_MAX)) == -1 && errno) + return; + if((hostname = malloc(scret + 1)) == NULL) + return; + + if(gethostname(hostname, HOST_NAME_MAX + 1) == -1) + RARCH_WARN("Failed to get hostname.\n"); + else + { + XChangeProperty(dpy, win, XA_WM_CLIENT_MACHINE, XA_STRING, 8, + PropModeReplace, (unsigned char *)hostname, strlen(hostname)); + } + free(hostname); } void x11_set_window_attr(Display *dpy, Window win)