]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fload_average): New arg USE_FLOATS.
authorRichard M. Stallman <rms@gnu.org>
Mon, 27 Apr 1998 20:54:19 +0000 (20:54 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 27 Apr 1998 20:54:19 +0000 (20:54 +0000)
src/fns.c

index dc55999efb6fa6976b2dd1890e348cdee011b50d..21be77b76965d720c71959cac1d71b8c054e4406 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -2494,24 +2494,31 @@ and can edit it until it has been confirmed.")
     }
 }
 \f
-DEFUN ("load-average", Fload_average, Sload_average, 0, 0, 0,
+DEFUN ("load-average", Fload_average, Sload_average, 0, 1, 0,
   "Return list of 1 minute, 5 minute and 15 minute load averages.\n\
 Each of the three load averages is multiplied by 100,\n\
 then converted to integer.\n\
+When USE-FLOATS is non-nil, floats will be used instead of integers.\n\
+These floats are not multiplied by 100.\n\n\
 If the 5-minute or 15-minute load averages are not available, return a\n\
 shortened list, containing only those averages which are available.")
-  ()
+  (use_floats)
+     Lisp_Object use_floats;
 {
   double load_ave[3];
   int loads = getloadavg (load_ave, 3);
-  Lisp_Object ret;
+  Lisp_Object ret = Qnil;
 
   if (loads < 0)
     error ("load-average not implemented for this operating system");
 
-  ret = Qnil;
-  while (loads > 0)
-    ret = Fcons (make_number ((int) (load_ave[--loads] * 100.0)), ret);
+  while (loads-- > 0)
+    {
+      Lisp_Object load = (NILP (use_floats) ?
+                         make_number ((int) (100.0 * load_ave[loads]))
+                         : make_float (load_ave[loads]));
+      ret = Fcons (load, ret);
+    }
 
   return ret;
 }