From 45ba6df2ab0c651fd039e7530c30f628e622f29b Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 22 Sep 2005 23:15:09 +0000 Subject: [PATCH] * getloadavg.c: Include fcntl--.h rather than fcntl.h. Do not include unistd-safer.h. (getloadavg): Don't call fd_safer; no longer needed now that we include fcntl--.h. * getloadavg.c: Assume HAVE_UNISTD_H, i.e., include unconditionally. Assume HAVE_FCNTL_H (i.e., include unconditionally, and don't include ). * getloadavg.c (getloadavg) [__CYGWIN__]: Port to cygwin. [__linux__]: Allocate a big enough buffer for /proc/loadavg. [!LDAV_DONE]: Avoid unused variable warning. --- lib/getloadavg.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/lib/getloadavg.c b/lib/getloadavg.c index d1ed95af48..2a5013148e 100644 --- a/lib/getloadavg.c +++ b/lib/getloadavg.c @@ -47,7 +47,8 @@ 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__]: File containing load averages. + LINUX_LDAV_FILE [__linux__, __CYGWIN__]: File containing + load averages. Specific system predefines this file uses, aside from setting default values if not emacs: @@ -70,6 +71,7 @@ WINDOWS32 No-op for Windows95/NT. __linux__ Linux: assumes /proc file system mounted. Support from Michael K. Johnson. + __CYGWIN__ Cygwin emulates linux /proc/loadavg. __NetBSD__ NetBSD: assumes /kern file system mounted. In addition, to avoid nesting many #ifdefs, we internally set @@ -346,9 +348,7 @@ # define LDAV_SYMBOL "avenrun" # endif -# ifdef HAVE_UNISTD_H -# include -# endif +# include /* LOAD_AVE_TYPE should only get defined if we're going to use the nlist method. */ @@ -447,9 +447,7 @@ # include # endif -# include - -# include "unistd-safer.h" +# include "fcntl--.h" /* Avoid static vars inside a function since in HPUX they dump as pure. */ @@ -567,7 +565,7 @@ getloadavg (double loadavg[], int nelem) # endif /* hpux && HAVE_PSTAT_GETDYNAMIC */ -# if !defined (LDAV_DONE) && defined (__linux__) +# if !defined (LDAV_DONE) && (defined (__linux__) || defined (__CYGWIN__)) # define LDAV_DONE # undef LOAD_AVE_TYPE @@ -575,7 +573,7 @@ getloadavg (double loadavg[], int nelem) # define LINUX_LDAV_FILE "/proc/loadavg" # endif - char ldavgbuf[3 * (INT_STRLEN_BOUND (long int) + sizeof ".00")]; + char ldavgbuf[3 * (INT_STRLEN_BOUND (int) + sizeof ".00 ")]; char const *ptr = ldavgbuf; int fd, count; @@ -604,7 +602,7 @@ getloadavg (double loadavg[], int nelem) return elem; -# endif /* __linux__ */ +# endif /* __linux__ || __CYGWIN__ */ # if !defined (LDAV_DONE) && defined (__NetBSD__) # define LDAV_DONE @@ -909,7 +907,7 @@ getloadavg (double loadavg[], int nelem) if (!getloadavg_initialized) { # ifndef SUNOS_5 - channel = fd_safer (open ("/dev/kmem", O_RDONLY)); + channel = open ("/dev/kmem", O_RDONLY); if (channel >= 0) { /* Set the channel to close on exec, so it does not @@ -968,14 +966,13 @@ getloadavg (double loadavg[], int nelem) # define LDAV_DONE # endif /* !LDAV_DONE && LOAD_AVE_TYPE */ -# ifdef LDAV_DONE - return elem; -# else +# if !defined LDAV_DONE /* Set errno to zero to indicate that there was no particular error; this function just can't work at all on this system. */ errno = 0; - return -1; + elem = -1; # endif + return elem; } #endif /* ! HAVE_GETLOADAVG */ -- 2.30.2