summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1999-01-31 16:54:00 +0000
committerJim Meyering <jim@meyering.net>1999-01-31 16:54:00 +0000
commit3679b7f3b2085dc75a3367015b9652978bfc519b (patch)
tree317ddeca4858e53da4cc41eeeb856cd698a1d679
parent046156b55cd321685adaf41ff6aa980ceb9efbfb (diff)
downloadgnulib-3679b7f3b2085dc75a3367015b9652978bfc519b.tar.gz
Include locale.h.
[!HAVE_SETLOCALE]: Define-away setlocale. (getloadavg): Ensure the sscanf of /proc/getloadavg data uses the `C' numeric locale. Restore afterwards.
-rw-r--r--lib/getloadavg.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/getloadavg.c b/lib/getloadavg.c
index 3d81bdd964..8acb58692d 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 <locale.h>
+#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
@@ -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;