diff options
| author | Karoly Lorentey | 2006-04-01 13:24:42 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2006-04-01 13:24:42 +0000 |
| commit | 10a0e6fe87378d0dafb5ce257aa60c8a1b25c708 (patch) | |
| tree | db6f6272d381d3ca09c783cea7f5f3aaf8fafc99 /src/process.c | |
| parent | 6bcc8ec7eb185314e1b24f285fdcc1e7093c1bc1 (diff) | |
| parent | afc749959d78f5b48b92de877067828d46c915ce (diff) | |
| download | emacs-10a0e6fe87378d0dafb5ce257aa60c8a1b25c708.tar.gz emacs-10a0e6fe87378d0dafb5ce257aa60c8a1b25c708.zip | |
Merged from emacs@sv.gnu.org
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-173
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-174
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-175
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-176
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-177
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-178
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-179
Update from erc--emacs--0
* emacs@sv.gnu.org/emacs--devo--0--patch-180
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-181
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-182
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-183
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-184
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-185
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-186
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-187
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/gnus--rel--5.10--patch-65
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-66
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-67
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-68
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-69
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-70
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-71
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-72
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-542
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 74 |
1 files changed, 36 insertions, 38 deletions
diff --git a/src/process.c b/src/process.c index a82932ba57b..e3fa187565f 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -3843,62 +3843,60 @@ DEFUN ("accept-process-output", Faccept_process_output, Saccept_process_output, | |||
| 3843 | It is read into the process' buffers or given to their filter functions. | 3843 | It is read into the process' buffers or given to their filter functions. |
| 3844 | Non-nil arg PROCESS means do not return until some output has been received | 3844 | Non-nil arg PROCESS means do not return until some output has been received |
| 3845 | from PROCESS. | 3845 | from PROCESS. |
| 3846 | Non-nil second arg TIMEOUT and third arg TIMEOUT-MSECS are number of | 3846 | |
| 3847 | seconds and microseconds to wait; return after that much time whether | 3847 | Non-nil second arg SECONDS and third arg MILLISEC are number of |
| 3848 | or not there is input. | 3848 | seconds and milliseconds to wait; return after that much time whether |
| 3849 | or not there is input. If SECONDS is a floating point number, | ||
| 3850 | it specifies a fractional number of seconds to wait. | ||
| 3851 | |||
| 3849 | If optional fourth arg JUST-THIS-ONE is non-nil, only accept output | 3852 | If optional fourth arg JUST-THIS-ONE is non-nil, only accept output |
| 3850 | from PROCESS, suspending reading output from other processes. | 3853 | from PROCESS, suspending reading output from other processes. |
| 3851 | If JUST-THIS-ONE is an integer, don't run any timers either. | 3854 | If JUST-THIS-ONE is an integer, don't run any timers either. |
| 3852 | Return non-nil iff we received any output before the timeout expired. */) | 3855 | Return non-nil iff we received any output before the timeout expired. */) |
| 3853 | (process, timeout, timeout_msecs, just_this_one) | 3856 | (process, seconds, millisec, just_this_one) |
| 3854 | register Lisp_Object process, timeout, timeout_msecs, just_this_one; | 3857 | register Lisp_Object process, seconds, millisec, just_this_one; |
| 3855 | { | 3858 | { |
| 3856 | int seconds; | 3859 | int secs, usecs = 0; |
| 3857 | int useconds; | ||
| 3858 | 3860 | ||
| 3859 | if (! NILP (process)) | 3861 | if (! NILP (process)) |
| 3860 | CHECK_PROCESS (process); | 3862 | CHECK_PROCESS (process); |
| 3861 | else | 3863 | else |
| 3862 | just_this_one = Qnil; | 3864 | just_this_one = Qnil; |
| 3863 | 3865 | ||
| 3864 | if (! NILP (timeout_msecs)) | 3866 | if (!NILP (seconds)) |
| 3865 | { | 3867 | { |
| 3866 | CHECK_NUMBER (timeout_msecs); | 3868 | if (INTEGERP (seconds)) |
| 3867 | useconds = XINT (timeout_msecs); | 3869 | secs = XINT (seconds); |
| 3868 | if (!INTEGERP (timeout)) | 3870 | else if (FLOATP (seconds)) |
| 3869 | XSETINT (timeout, 0); | 3871 | { |
| 3870 | 3872 | double timeout = XFLOAT_DATA (seconds); | |
| 3871 | { | 3873 | secs = (int) timeout; |
| 3872 | int carry = useconds / 1000000; | 3874 | usecs = (int) ((timeout - (double) secs) * 1000000); |
| 3873 | 3875 | } | |
| 3874 | XSETINT (timeout, XINT (timeout) + carry); | 3876 | else |
| 3875 | useconds -= carry * 1000000; | 3877 | wrong_type_argument (Qnumberp, seconds); |
| 3876 | 3878 | ||
| 3877 | /* I think this clause is necessary because C doesn't | 3879 | if (INTEGERP (millisec)) |
| 3878 | guarantee a particular rounding direction for negative | 3880 | { |
| 3879 | integers. */ | 3881 | int carry; |
| 3880 | if (useconds < 0) | 3882 | usecs += XINT (millisec) * 1000; |
| 3881 | { | 3883 | carry = usecs / 1000000; |
| 3882 | XSETINT (timeout, XINT (timeout) - 1); | 3884 | secs += carry; |
| 3883 | useconds += 1000000; | 3885 | if ((usecs -= carry * 1000000) < 0) |
| 3884 | } | 3886 | { |
| 3885 | } | 3887 | secs--; |
| 3886 | } | 3888 | usecs += 1000000; |
| 3887 | else | 3889 | } |
| 3888 | useconds = 0; | 3890 | } |
| 3889 | 3891 | ||
| 3890 | if (! NILP (timeout)) | 3892 | if (secs < 0 || (secs == 0 && usecs == 0)) |
| 3891 | { | 3893 | secs = -1, usecs = 0; |
| 3892 | CHECK_NUMBER (timeout); | ||
| 3893 | seconds = XINT (timeout); | ||
| 3894 | if (seconds < 0 || (seconds == 0 && useconds == 0)) | ||
| 3895 | seconds = -1; | ||
| 3896 | } | 3894 | } |
| 3897 | else | 3895 | else |
| 3898 | seconds = NILP (process) ? -1 : 0; | 3896 | secs = NILP (process) ? -1 : 0; |
| 3899 | 3897 | ||
| 3900 | return | 3898 | return |
| 3901 | (wait_reading_process_output (seconds, useconds, 0, 0, | 3899 | (wait_reading_process_output (secs, usecs, 0, 0, |
| 3902 | Qnil, | 3900 | Qnil, |
| 3903 | !NILP (process) ? XPROCESS (process) : NULL, | 3901 | !NILP (process) ? XPROCESS (process) : NULL, |
| 3904 | NILP (just_this_one) ? 0 : | 3902 | NILP (just_this_one) ? 0 : |