From: Matt Kraai Date: Wed, 29 Jul 2009 15:33:59 +0000 (-0700) Subject: getloadavg: check whether n_name is a pointer, for QNX 6.4.1 X-Git-Tag: v0.1~5741 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=4feca6e66c4ac183f4cd4740204835b6bdc4c403;p=gnulib.git getloadavg: check whether n_name is a pointer, for QNX 6.4.1 * lib/getloadavg.c (getloadavg): Use the strcpy-into-nlist.n_name code also if ! defined N_NAME_POINTER. * m4/getloadavg.m4 (gl_GETLOADAVG): Add a link-test for N_NAME_POINTER. This is required on QNX 6.4.1, where /usr/include/nlist.h exists, but the n_name member is a 12-byte array. --- diff --git a/lib/getloadavg.c b/lib/getloadavg.c index 5a4005cee..d968e5baa 100644 --- a/lib/getloadavg.c +++ b/lib/getloadavg.c @@ -44,8 +44,8 @@ otherwise, no load average is available. HAVE_NLIST_H nlist.h is available. NLIST_STRUCT defaults to this. - NLIST_STRUCT Include nlist.h, not a.out.h, and - the nlist n_name element is a pointer, + NLIST_STRUCT Include nlist.h, not a.out.h. + NLIST_POINTER The nlist n_name element is a pointer, not an array. HAVE_STRUCT_NLIST_N_UN_N_NAME `n_un.n_name' is member of `struct nlist'. LINUX_LDAV_FILE [__linux__, __CYGWIN__]: File containing @@ -900,7 +900,7 @@ getloadavg (double loadavg[], int nelem) if (offset == 0) { # ifndef sgi -# ifndef NLIST_STRUCT +# if ! defined NLIST_STRUCT || ! defined N_NAME_POINTER strcpy (nl[0].n_name, LDAV_SYMBOL); strcpy (nl[1].n_name, ""); # else /* NLIST_STRUCT */ diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4 index 015bcac21..28237d772 100644 --- a/m4/getloadavg.m4 +++ b/m4/getloadavg.m4 @@ -174,5 +174,14 @@ AC_CHECK_HEADERS([nlist.h], `n_un' member. Obsolete, depend on `HAVE_STRUCT_NLIST_N_UN_N_NAME])], [], [@%:@include ]) + AC_TRY_LINK([#include ], + [struct nlist x; + #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME + x.n_un.n_name = ""; + #else + x.n_name = ""; + #endif], + [AC_DEFINE([N_NAME_POINTER], [1], + [Define to 1 if the nlist n_name member is a pointer])]) ])dnl ])# gl_PREREQ_GETLOADAVG