changeset 95387:be7d86474ead

(Faccept_process_output): If `millisec' is non-nil, `seconds' default to 0. (wait_reading_process_output): Also return non-nil if we read output from a non-running process.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 29 May 2008 16:54:53 +0000
parents 9d7e990b655a
children 68cbfe0d72fc
files src/ChangeLog src/process.c
diffstat 2 files changed, 26 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Thu May 29 16:25:12 2008 +0000
+++ b/src/ChangeLog	Thu May 29 16:54:53 2008 +0000
@@ -1,7 +1,14 @@
+2008-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* process.c (Faccept_process_output): If `millisec' is non-nil,
+	`seconds' default to 0.
+	(wait_reading_process_output): Also return non-nil if we read output
+	from a non-running process.
+
 2008-05-29  Jason Rumney  <jasonr@gnu.org>
 
-        * w32font.c (w32font_open_internal): Prefer truetype fonts unless
-        'raster' specified.
+	* w32font.c (w32font_open_internal): Prefer truetype fonts unless
+	'raster' specified.
 
 2008-05-29  Juanma Barranquero  <lekktu@gmail.com>
 
--- a/src/process.c	Thu May 29 16:25:12 2008 +0000
+++ b/src/process.c	Thu May 29 16:54:53 2008 +0000
@@ -3896,6 +3896,7 @@
 seconds and milliseconds to wait; return after that much time whether
 or not there is input.  If SECONDS is a floating point number,
 it specifies a fractional number of seconds to wait.
+The MILLISEC argument is obsolete and should be avoided.
 
 If optional fourth arg JUST-THIS-ONE is non-nil, only accept output
 from PROCESS, suspending reading output from other processes.
@@ -3911,6 +3912,18 @@
   else
     just_this_one = Qnil;
 
+  if (!NILP (millisec))
+    { /* Obsolete calling convention using integers rather than floats.  */
+      CHECK_NUMBER (millisec);
+      if (NILP (seconds))
+	seconds = make_float (XINT (millisec) / 1000.0);
+      else
+	{
+	  CHECK_NUMBER (seconds);
+	  seconds = make_float (XINT (millisec) / 1000.0 + XINT (seconds));
+	}
+    }
+
   if (!NILP (seconds))
     {
       if (INTEGERP (seconds))
@@ -3924,19 +3937,6 @@
       else
 	wrong_type_argument (Qnumberp, seconds);
 
-      if (INTEGERP (millisec))
-	{
-	  int carry;
-	  usecs += XINT (millisec) * 1000;
-	  carry = usecs / 1000000;
-	  secs += carry;
-	  if ((usecs -= carry * 1000000) < 0)
-	    {
-	      secs--;
-	      usecs += 1000000;
-	    }
-	}
-
       if (secs < 0 || (secs == 0 && usecs == 0))
 	secs = -1, usecs = 0;
     }
@@ -4475,7 +4475,10 @@
 		break;
 
               if (0 < nread)
-                total_nread += nread;
+                {
+		  total_nread += nread;
+		  got_some_input = 1;
+		}
 #ifdef EIO
 	      else if (nread == -1 && EIO == errno)
                 break;