Mercurial > emacs
comparison src/process.c @ 83310:e58cb448e07c
Merged from miles@gnu.org--gnu-2005 (patch 80-82, 350-422)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-350
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-351
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-352
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-353
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-354
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-355
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-356
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-357
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-358
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-359
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-360
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-361
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-362
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-363
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-364
Remove "-face" suffix from widget faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365
Remove "-face" suffix from custom faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-366
Remove "-face" suffix from change-log faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-367
Remove "-face" suffix from compilation faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-368
Remove "-face" suffix from diff-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-369
lisp/longlines.el (longlines-visible-face): Face removed
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-370
Remove "-face" suffix from woman faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-371
Remove "-face" suffix from whitespace-highlight face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372
Remove "-face" suffix from ruler-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-373
Remove "-face" suffix from show-paren faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374
Remove "-face" suffix from log-view faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-375
Remove "-face" suffix from smerge faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-376
Remove "-face" suffix from show-tabs faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377
Remove "-face" suffix from highlight-changes faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-378
Remove "-face" suffix from and downcase info faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-379
Remove "-face" suffix from pcvs faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-380
Update uses of renamed pcvs faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-381
Tweak ChangeLog
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-382
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-383
Remove "-face" suffix from strokes-char face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-384
Remove "-face" suffix from compare-windows face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-385
Remove "-face" suffix from calendar faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-386
Remove "-face" suffix from diary-button face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-387
Remove "-face" suffix from testcover faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388
Remove "-face" suffix from viper faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Remove "-face" suffix from org faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-390
Remove "-face" suffix from sgml-namespace face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-391
Remove "-face" suffix from table-cell face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-392
Remove "-face" suffix from tex-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-393
Remove "-face" suffix from texinfo-heading face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-394
Remove "-face" suffix from flyspell faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-395
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-396
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-397
Remove "-face" suffix from gomoku faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-398
Remove "-face" suffix from mpuz faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-399
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-400
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-401
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-402
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-403
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-404
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-405
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-406
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-407
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-408
Remove "-face" suffix from Buffer-menu-buffer face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-409
Remove "-face" suffix from antlr-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-410
Remove "-face" suffix from ebrowse faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-411
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-412
Remove "-face" suffix from flymake faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-413
Remove "-face" suffix from idlwave faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-414
Remove "-face" suffix from sh-script faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-415
Remove "-face" suffix from vhdl-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-416
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-417
Remove "-face" suffix from which-func face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-418
Remove "-face" suffix from cperl-mode faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-419
Remove "-face" suffix from ld-script faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-420
Fix cperl-mode font-lock problem
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-421
Tweak which-func face
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-422
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-80
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-81
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-82
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-350
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Wed, 15 Jun 2005 12:57:51 +0000 |
parents | 63b7247f4be6 d826c3c6df3f |
children | bdcbdec78dd3 |
comparison
equal
deleted
inserted
replaced
83309:6aee1e9b0bd7 | 83310:e58cb448e07c |
---|---|
270 #ifdef ADAPTIVE_READ_BUFFERING | 270 #ifdef ADAPTIVE_READ_BUFFERING |
271 #define READ_OUTPUT_DELAY_INCREMENT 10000 | 271 #define READ_OUTPUT_DELAY_INCREMENT 10000 |
272 #define READ_OUTPUT_DELAY_MAX (READ_OUTPUT_DELAY_INCREMENT * 5) | 272 #define READ_OUTPUT_DELAY_MAX (READ_OUTPUT_DELAY_INCREMENT * 5) |
273 #define READ_OUTPUT_DELAY_MAX_MAX (READ_OUTPUT_DELAY_INCREMENT * 7) | 273 #define READ_OUTPUT_DELAY_MAX_MAX (READ_OUTPUT_DELAY_INCREMENT * 7) |
274 | 274 |
275 /* Number of processes which might be delayed. */ | 275 /* Number of processes which have a non-zero read_output_delay, |
276 and therefore might be delayed for adaptive read buffering. */ | |
276 | 277 |
277 static int process_output_delay_count; | 278 static int process_output_delay_count; |
278 | 279 |
279 /* Non-zero if any process has non-nil process_output_skip. */ | 280 /* Non-zero if any process has non-nil read_output_skip. */ |
280 | 281 |
281 static int process_output_skip; | 282 static int process_output_skip; |
282 | 283 |
283 /* Non-nil means to delay reading process output to improve buffering. | 284 /* Non-nil means to delay reading process output to improve buffering. |
284 A value of t means that delay is reset after each send, any other | 285 A value of t means that delay is reset after each send, any other |
285 non-nil value does not reset the delay. */ | 286 non-nil value does not reset the delay. A value of nil disables |
287 adaptive read buffering completely. */ | |
286 static Lisp_Object Vprocess_adaptive_read_buffering; | 288 static Lisp_Object Vprocess_adaptive_read_buffering; |
287 #else | 289 #else |
288 #define process_output_delay_count 0 | 290 #define process_output_delay_count 0 |
289 #endif | 291 #endif |
290 | 292 |
1533 itself; it's all taken care of here. */ | 1535 itself; it's all taken care of here. */ |
1534 record_unwind_protect (start_process_unwind, proc); | 1536 record_unwind_protect (start_process_unwind, proc); |
1535 | 1537 |
1536 XPROCESS (proc)->childp = Qt; | 1538 XPROCESS (proc)->childp = Qt; |
1537 XPROCESS (proc)->plist = Qnil; | 1539 XPROCESS (proc)->plist = Qnil; |
1538 XPROCESS (proc)->command_channel_p = Qnil; | |
1539 XPROCESS (proc)->buffer = buffer; | 1540 XPROCESS (proc)->buffer = buffer; |
1540 XPROCESS (proc)->sentinel = Qnil; | 1541 XPROCESS (proc)->sentinel = Qnil; |
1541 XPROCESS (proc)->filter = Qnil; | 1542 XPROCESS (proc)->filter = Qnil; |
1542 XPROCESS (proc)->filter_multibyte | 1543 XPROCESS (proc)->filter_multibyte |
1543 = buffer_defaults.enable_multibyte_characters; | 1544 = buffer_defaults.enable_multibyte_characters; |
4317 if (check_connect) | 4318 if (check_connect) |
4318 Connecting = connect_wait_mask; | 4319 Connecting = connect_wait_mask; |
4319 #endif | 4320 #endif |
4320 | 4321 |
4321 #ifdef ADAPTIVE_READ_BUFFERING | 4322 #ifdef ADAPTIVE_READ_BUFFERING |
4323 /* Set the timeout for adaptive read buffering if any | |
4324 process has non-nil read_output_skip and non-zero | |
4325 read_output_delay, and we are not reading output for a | |
4326 specific wait_channel. It is not executed if | |
4327 Vprocess_adaptive_read_buffering is nil. */ | |
4322 if (process_output_skip && check_delay > 0) | 4328 if (process_output_skip && check_delay > 0) |
4323 { | 4329 { |
4324 int usecs = EMACS_USECS (timeout); | 4330 int usecs = EMACS_USECS (timeout); |
4325 if (EMACS_SECS (timeout) > 0 || usecs > READ_OUTPUT_DELAY_MAX) | 4331 if (EMACS_SECS (timeout) > 0 || usecs > READ_OUTPUT_DELAY_MAX) |
4326 usecs = READ_OUTPUT_DELAY_MAX; | 4332 usecs = READ_OUTPUT_DELAY_MAX; |
4327 for (channel = 0; check_delay > 0 && channel <= max_process_desc; channel++) | 4333 for (channel = 0; check_delay > 0 && channel <= max_process_desc; channel++) |
4328 { | 4334 { |
4329 proc = chan_process[channel]; | 4335 proc = chan_process[channel]; |
4330 if (NILP (proc)) | 4336 if (NILP (proc)) |
4331 continue; | 4337 continue; |
4338 /* Find minimum non-zero read_output_delay among the | |
4339 processes with non-nil read_output_skip. */ | |
4332 if (XINT (XPROCESS (proc)->read_output_delay) > 0) | 4340 if (XINT (XPROCESS (proc)->read_output_delay) > 0) |
4333 { | 4341 { |
4334 check_delay--; | 4342 check_delay--; |
4335 if (NILP (XPROCESS (proc)->read_output_skip)) | 4343 if (NILP (XPROCESS (proc)->read_output_skip)) |
4336 continue; | 4344 continue; |
4877 save the same match data in safely recursive fashion. */ | 4885 save the same match data in safely recursive fashion. */ |
4878 if (outer_running_asynch_code) | 4886 if (outer_running_asynch_code) |
4879 { | 4887 { |
4880 Lisp_Object tem; | 4888 Lisp_Object tem; |
4881 /* Don't clobber the CURRENT match data, either! */ | 4889 /* Don't clobber the CURRENT match data, either! */ |
4882 tem = Fmatch_data (Qnil, Qnil); | 4890 tem = Fmatch_data (Qnil, Qnil, Qnil); |
4883 restore_match_data (); | 4891 restore_search_regs (); |
4884 record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); | 4892 record_unwind_save_match_data (); |
4885 Fset_match_data (tem); | 4893 Fset_match_data (tem, Qt); |
4886 } | 4894 } |
4887 | 4895 |
4888 /* For speed, if a search happens within this code, | 4896 /* For speed, if a search happens within this code, |
4889 save the match data in a special nonrecursive fashion. */ | 4897 save the match data in a special nonrecursive fashion. */ |
4890 running_asynch_code = 1; | 4898 running_asynch_code = 1; |
4934 Fcons (proc, Fcons (text, Qnil))), | 4942 Fcons (proc, Fcons (text, Qnil))), |
4935 !NILP (Vdebug_on_error) ? Qnil : Qerror, | 4943 !NILP (Vdebug_on_error) ? Qnil : Qerror, |
4936 read_process_output_error_handler); | 4944 read_process_output_error_handler); |
4937 | 4945 |
4938 /* If we saved the match data nonrecursively, restore it now. */ | 4946 /* If we saved the match data nonrecursively, restore it now. */ |
4939 restore_match_data (); | 4947 restore_search_regs (); |
4940 running_asynch_code = outer_running_asynch_code; | 4948 running_asynch_code = outer_running_asynch_code; |
4941 | 4949 |
4942 /* Handling the process output should not deactivate the mark. */ | 4950 /* Handling the process output should not deactivate the mark. */ |
4943 Vdeactivate_mark = odeactivate; | 4951 Vdeactivate_mark = odeactivate; |
4944 | 4952 |
6338 and we already saved the match data nonrecursively, | 6346 and we already saved the match data nonrecursively, |
6339 save the same match data in safely recursive fashion. */ | 6347 save the same match data in safely recursive fashion. */ |
6340 if (outer_running_asynch_code) | 6348 if (outer_running_asynch_code) |
6341 { | 6349 { |
6342 Lisp_Object tem; | 6350 Lisp_Object tem; |
6343 tem = Fmatch_data (Qnil, Qnil); | 6351 tem = Fmatch_data (Qnil, Qnil, Qnil); |
6344 restore_match_data (); | 6352 restore_search_regs (); |
6345 record_unwind_protect (Fset_match_data, Fmatch_data (Qnil, Qnil)); | 6353 record_unwind_save_match_data (); |
6346 Fset_match_data (tem); | 6354 Fset_match_data (tem, Qt); |
6347 } | 6355 } |
6348 | 6356 |
6349 /* For speed, if a search happens within this code, | 6357 /* For speed, if a search happens within this code, |
6350 save the match data in a special nonrecursive fashion. */ | 6358 save the match data in a special nonrecursive fashion. */ |
6351 running_asynch_code = 1; | 6359 running_asynch_code = 1; |
6355 Fcons (proc, Fcons (reason, Qnil))), | 6363 Fcons (proc, Fcons (reason, Qnil))), |
6356 !NILP (Vdebug_on_error) ? Qnil : Qerror, | 6364 !NILP (Vdebug_on_error) ? Qnil : Qerror, |
6357 exec_sentinel_error_handler); | 6365 exec_sentinel_error_handler); |
6358 | 6366 |
6359 /* If we saved the match data nonrecursively, restore it now. */ | 6367 /* If we saved the match data nonrecursively, restore it now. */ |
6360 restore_match_data (); | 6368 restore_search_regs (); |
6361 running_asynch_code = outer_running_asynch_code; | 6369 running_asynch_code = outer_running_asynch_code; |
6362 | 6370 |
6363 Vdeactivate_mark = odeactivate; | 6371 Vdeactivate_mark = odeactivate; |
6364 | 6372 |
6365 /* Restore waiting_for_user_input_p as it was | 6373 /* Restore waiting_for_user_input_p as it was |
6706 Fprovide (intern ("make-network-process"), subfeatures); | 6714 Fprovide (intern ("make-network-process"), subfeatures); |
6707 } | 6715 } |
6708 #endif /* HAVE_SOCKETS */ | 6716 #endif /* HAVE_SOCKETS */ |
6709 | 6717 |
6710 #if defined (DARWIN) || defined (MAC_OSX) | 6718 #if defined (DARWIN) || defined (MAC_OSX) |
6711 /* PTYs are broken on Darwin < 6, but are sometimes useful for interactive | 6719 /* PTYs are broken on Darwin < 6, but are sometimes useful for interactive |
6712 processes. As such, we only change the default value. */ | 6720 processes. As such, we only change the default value. */ |
6713 if (initialized) | 6721 if (initialized) |
6714 { | 6722 { |
6715 char *release = get_operating_system_release(); | 6723 char *release = get_operating_system_release(); |
6716 if (!release || !release[0] || (release[0] < MIN_PTY_KERNEL_VERSION | 6724 if (!release || !release[0] || (release[0] < MIN_PTY_KERNEL_VERSION |
6811 #ifdef ADAPTIVE_READ_BUFFERING | 6819 #ifdef ADAPTIVE_READ_BUFFERING |
6812 DEFVAR_LISP ("process-adaptive-read-buffering", &Vprocess_adaptive_read_buffering, | 6820 DEFVAR_LISP ("process-adaptive-read-buffering", &Vprocess_adaptive_read_buffering, |
6813 doc: /* If non-nil, improve receive buffering by delaying after short reads. | 6821 doc: /* If non-nil, improve receive buffering by delaying after short reads. |
6814 On some systems, when Emacs reads the output from a subprocess, the output data | 6822 On some systems, when Emacs reads the output from a subprocess, the output data |
6815 is read in very small blocks, potentially resulting in very poor performance. | 6823 is read in very small blocks, potentially resulting in very poor performance. |
6816 This behaviour can be remedied to some extent by setting this variable to a | 6824 This behavior can be remedied to some extent by setting this variable to a |
6817 non-nil value, as it will automatically delay reading from such processes, to | 6825 non-nil value, as it will automatically delay reading from such processes, to |
6818 allowing them to produce more output before Emacs tries to read it. | 6826 allowing them to produce more output before Emacs tries to read it. |
6819 If the value is t, the delay is reset after each write to the process; any other | 6827 If the value is t, the delay is reset after each write to the process; any other |
6820 non-nil value means that the delay is not reset on write. | 6828 non-nil value means that the delay is not reset on write. |
6821 The variable takes effect when `start-process' is called. */); | 6829 The variable takes effect when `start-process' is called. */); |