From: Alexis Ballier Date: Fri, 10 Jul 2009 13:04:42 +0000 (+0200) Subject: xcb_window: Use sysconf to discover HOST_NAME_MAX. X-Git-Tag: 1.1.0-ff~5026 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=a73ea66ebb2b60d1e2e83a9ab17feefb8ad15e16;p=vlc xcb_window: Use sysconf to discover HOST_NAME_MAX. POSIX does not mandate HOST_NAME_MAX to be defined and FreeBSD does not define it to encourage people to use sysconf() for discovering its value. If sysconf fails, fallback to _POSIX_HOST_NAME_MAX. Signed-off-by: RĂ©mi Denis-Courmont (with minor changes) --- diff --git a/modules/video_output/xcb/window.c b/modules/video_output/xcb/window.c index 0ec23ddc7b..d8db2434e8 100644 --- a/modules/video_output/xcb/window.c +++ b/modules/video_output/xcb/window.c @@ -27,8 +27,8 @@ #include #include #include -#include /* gethostname() */ -#include /* HOST_NAME_MAX */ +#include /* gethostname() and sysconf() */ +#include /* _POSIX_HOST_NAME_MAX */ #include typedef xcb_atom_t Atom; @@ -96,13 +96,18 @@ void set_ascii_prop (xcb_connection_t *conn, xcb_window_t window, static inline void set_hostname_prop (xcb_connection_t *conn, xcb_window_t window) { - char hostname[HOST_NAME_MAX]; + char* hostname; + long host_name_max = sysconf (_SC_HOST_NAME_MAX); + if (host_name_max <= 0) host_name_max = _POSIX_HOST_NAME_MAX; + hostname = malloc (host_name_max); + if(!hostname) return; - if (gethostname (hostname, sizeof (hostname)) == 0) + if (gethostname (hostname, host_name_max) == 0) { - hostname[sizeof (hostname) - 1] = '\0'; + hostname[host_name_max - 1] = '\0'; set_ascii_prop (conn, window, XA_WM_CLIENT_MACHINE, hostname); } + free(hostname); } static inline