X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fgetloadavg.c;h=8acb58692db07ab62c5379cc87f8910e42de7688;hb=378873e8508590d356a540e5db32592750fb18b8;hp=52958d4d53f145355d8feeadba3d2f5072f15b89;hpb=0615dbbda8a3e12cd738c69374edf6176e8fc594;p=gnulib.git diff --git a/lib/getloadavg.c b/lib/getloadavg.c index 52958d4d5..8acb58692 100644 --- a/lib/getloadavg.c +++ b/lib/getloadavg.c @@ -98,8 +98,14 @@ extern int errno; #endif -#ifndef HAVE_GETLOADAVG +#if HAVE_LOCALE_H +# include +#endif +#if !HAVE_SETLOCALE +# define setlocale(Category, Locale) /* empty */ +#endif +#ifndef HAVE_GETLOADAVG /* The existing Emacs configuration files define a macro called LOAD_AVE_CVT, which accepts a value of type LOAD_AVE_TYPE, and @@ -281,7 +287,7 @@ extern int errno; /* Sometimes both MIPS and sgi are defined, so FSCALE was just defined above under #ifdef MIPS. But we want the sgi value. */ # undef FSCALE -# define FSCALE 1000.0 +# define FSCALE 1000.0 # endif # if defined (ardent) && defined (titan) @@ -299,7 +305,7 @@ extern int errno; # endif /* Not FSCALE. */ # if !defined (LDAV_CVT) && defined (FSCALE) -# define LDAV_CVT(n) (((double) (n)) / FSCALE) +# define LDAV_CVT(n) (((double) (n)) / FSCALE) # endif /* VAX C can't handle multi-line #ifs, or lines longer that 256 characters. */ @@ -638,8 +644,11 @@ getloadavg (loadavg, nelem) if (count <= 0) return -1; + /* The following sscanf must use the C locale. */ + setlocale (LC_NUMERIC, "C"); count = sscanf (ldavgbuf, "%lf %lf %lf", &load_ave[0], &load_ave[1], &load_ave[2]); + setlocale (LC_NUMERIC, ""); if (count < 1) return -1;