diff src/sysdep.cc @ 2630:fdee6fe3e73b

[project @ 1997-01-27 19:08:47 by jwe]
author jwe
date Mon, 27 Jan 1997 19:09:52 +0000
parents 8125b6f9c134
children 0774c3f023e8
line wrap: on
line diff
--- a/src/sysdep.cc	Mon Jan 27 06:11:59 1997 +0000
+++ b/src/sysdep.cc	Mon Jan 27 19:09:52 1997 +0000
@@ -521,6 +521,8 @@
 	{
 	  if (xisnan (dval))
 	    warning ("pause: NaN is an invalid delay");
+	  else if (xisinf (dval))
+	    kbhit ();
 	  else
 	    {
 	      int delay = NINT (dval);
@@ -530,10 +532,68 @@
 	}
     }
   else
+    kbhit ();
+
+  return retval;
+}
+
+DEFUN (sleep, args, ,
+  "sleep (seconds): suspend program execution")
+{
+  octave_value_list retval;
+
+  if (args.length () == 1)
     {
-      if (kbhit () == EOF)
-	clean_up_and_exit (0);
+      double dval = args(0).double_value ();
+
+      if (! error_state)
+	{
+	  if (xisnan (dval))
+	    warning ("sleep: NaN is an invalid delay");
+	  else
+	    {
+	      int delay = NINT (dval);
+	      if (delay > 0)
+		sleep (delay);
+	    }
+	}
     }
+  else
+    print_usage ("sleep");
+
+  return retval;
+}
+
+DEFUN (usleep, args, ,
+  "usleep (microseconds): suspend program execution")
+{
+  octave_value_list retval;
+
+  if (args.length () == 1)
+    {
+      double dval = args(0).double_value ();
+
+      if (! error_state)
+	{
+	  if (xisnan (dval))
+	    warning ("usleep: NaN is an invalid delay");
+	  else
+	    {
+	      int delay = NINT (dval);
+#if defined (HAVE_USLEEP)
+	      if (delay > 0)
+		usleep (delay);
+#else
+	      // Kluge alert.
+
+	      if (delay > 500000)
+		sleep (delay / 1000000);
+#endif
+	    }
+	}
+    }
+  else
+    print_usage ("usleep");
 
   return retval;
 }