]> sourceware.org Git - newlib-cygwin.git/commitdiff
Avoid decimal point localization in /proc/loadavg
authorJon Turney <jon.turney@dronecode.org.uk>
Sat, 8 Apr 2017 12:39:44 +0000 (13:39 +0100)
committerJon Turney <jon.turney@dronecode.org.uk>
Mon, 10 Apr 2017 09:59:54 +0000 (10:59 +0100)
Explicitly format the contents of /proc/loadavg to avoid the decimal point
getting localized according to LC_NUMERIC. Using anything other than '.' is
wrong and breaks top.

Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
winsup/cygwin/fhandler_proc.cc

index a7e816fe8d70ff25c6a2d141c9979ba1a86425a8..ad367e45793f5c146c4ba1c9dddc50917f37bb5f 100644 (file)
@@ -30,6 +30,7 @@ details. */
 #include <wctype.h>
 #include "cpuid.h"
 #include "mount.h"
+#include <math.h>
 
 #define _COMPILING_NEWLIB
 #include <dirent.h>
@@ -432,10 +433,14 @@ format_proc_loadavg (void *, char *&destbuf)
   double loadavg[3] = { 0.0, 0.0, 0.0 };
   getloadavg (loadavg, 3);
 
+#define HUNDRETHS(l) (int)((l - floor(l))*100)
+
   destbuf = (char *) crealloc_abort (destbuf, 48);
-  return sprintf (destbuf, "%.2f %.2f %.2f %u/%u\n",
-                 loadavg[0], loadavg[1], loadavg[2], running,
-                 (unsigned int)pids.npids);
+  return __small_sprintf (destbuf, "%u.%02u %u.%02u %u.%02u %u/%u\n",
+                         (int)loadavg[0], HUNDRETHS(loadavg[0]),
+                         (int)loadavg[1], HUNDRETHS(loadavg[1]),
+                         (int)loadavg[2], HUNDRETHS(loadavg[2]),
+                         running, (unsigned int)pids.npids);
 }
 
 static off_t
This page took 0.035088 seconds and 5 git commands to generate.