aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
authorKaroly Lorentey2006-10-14 17:36:28 +0000
committerKaroly Lorentey2006-10-14 17:36:28 +0000
commit12b6af5c7ed2cfdb9783312bf890cf1e6c80c67a (patch)
tree1775f9fd1c92defd8b61304a08ec00da95bc4539 /src/process.c
parent3f87f67ee215ffeecbd2f53bd7f342cdf03f47df (diff)
parentf763da8d0808af7c80d72bc586bf4fcf50b37ddd (diff)
downloademacs-12b6af5c7ed2cfdb9783312bf890cf1e6c80c67a.tar.gz
emacs-12b6af5c7ed2cfdb9783312bf890cf1e6c80c67a.zip
Merged from emacs@sv.gnu.org
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-413 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-414 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-415 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-416 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-417 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-418 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-419 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-420 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-421 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-422 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-423 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-424 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-425 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-426 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-427 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-428 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-429 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-430 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-431 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-432 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-433 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-434 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-435 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-436 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-437 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-438 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-439 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-440 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-441 lisp/url/url-methods.el: Fix format error when http_proxy is empty string * emacs@sv.gnu.org/emacs--devo--0--patch-442 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-443 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-444 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-445 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-446 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-447 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-448 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-449 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-450 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-451 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-452 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-453 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-454 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-455 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-456 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-457 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-458 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-459 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-460 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-461 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-462 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-463 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-464 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-465 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-466 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-467 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-468 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-469 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-470 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-471 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-472 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-473 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-128 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-129 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-130 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-131 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-132 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-133 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-134 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-135 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-136 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-137 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-138 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-139 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-140 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-141 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-142 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-143 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-144 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-145 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-146 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-147 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-148 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-149 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-582
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/process.c b/src/process.c
index f8ae50e8652..9062e6c3d6e 100644
--- a/src/process.c
+++ b/src/process.c
@@ -318,6 +318,12 @@ static int read_process_output P_ ((Lisp_Object, int));
318#define POLL_FOR_INPUT 318#define POLL_FOR_INPUT
319#endif 319#endif
320 320
321static Lisp_Object get_process ();
322static void exec_sentinel ();
323
324extern EMACS_TIME timer_check ();
325extern int timers_run;
326
321/* Mask of bits indicating the descriptors that we wait for input on. */ 327/* Mask of bits indicating the descriptors that we wait for input on. */
322 328
323static SELECT_TYPE input_wait_mask; 329static SELECT_TYPE input_wait_mask;
@@ -386,15 +392,13 @@ struct sockaddr_and_len {
386#define DATAGRAM_CONN_P(proc) (0) 392#define DATAGRAM_CONN_P(proc) (0)
387#endif 393#endif
388 394
389static Lisp_Object get_process ();
390static void exec_sentinel ();
391
392extern EMACS_TIME timer_check ();
393extern int timers_run;
394
395/* Maximum number of bytes to send to a pty without an eof. */ 395/* Maximum number of bytes to send to a pty without an eof. */
396static int pty_max_bytes; 396static int pty_max_bytes;
397 397
398/* Nonzero means don't run process sentinels. This is used
399 when exiting. */
400int inhibit_sentinels;
401
398#ifdef HAVE_PTYS 402#ifdef HAVE_PTYS
399#ifdef HAVE_PTY_H 403#ifdef HAVE_PTY_H
400#include <pty.h> 404#include <pty.h>
@@ -1310,6 +1314,7 @@ list_processes_1 (query_only)
1310 register struct Lisp_Process *p; 1314 register struct Lisp_Process *p;
1311 char tembuf[300]; 1315 char tembuf[300];
1312 int w_proc, w_buffer, w_tty; 1316 int w_proc, w_buffer, w_tty;
1317 int exited = 0;
1313 Lisp_Object i_status, i_buffer, i_tty, i_command; 1318 Lisp_Object i_status, i_buffer, i_tty, i_command;
1314 1319
1315 w_proc = 4; /* Proc */ 1320 w_proc = 4; /* Proc */
@@ -1436,8 +1441,8 @@ list_processes_1 (query_only)
1436 } 1441 }
1437 } 1442 }
1438 1443
1439 if (EQ (symbol, Qsignal) || EQ (symbol, Qexit)) 1444 if (EQ (symbol, Qsignal) || EQ (symbol, Qexit) || EQ (symbol, Qclosed))
1440 remove_process (proc); 1445 exited++;
1441 1446
1442 Findent_to (i_buffer, minspace); 1447 Findent_to (i_buffer, minspace);
1443 if (NILP (p->buffer)) 1448 if (NILP (p->buffer))
@@ -1501,6 +1506,8 @@ list_processes_1 (query_only)
1501 insert_string ("\n"); 1506 insert_string ("\n");
1502 } 1507 }
1503 } 1508 }
1509 if (exited)
1510 status_notify (NULL);
1504 return Qnil; 1511 return Qnil;
1505} 1512}
1506 1513
@@ -6564,6 +6571,9 @@ exec_sentinel (proc, reason)
6564 int outer_running_asynch_code = running_asynch_code; 6571 int outer_running_asynch_code = running_asynch_code;
6565 int waiting = waiting_for_user_input_p; 6572 int waiting = waiting_for_user_input_p;
6566 6573
6574 if (inhibit_sentinels)
6575 return;
6576
6567 /* No need to gcpro these, because all we do with them later 6577 /* No need to gcpro these, because all we do with them later
6568 is test them for EQness, and none of them should be a string. */ 6578 is test them for EQness, and none of them should be a string. */
6569 odeactivate = Vdeactivate_mark; 6579 odeactivate = Vdeactivate_mark;
@@ -6885,6 +6895,8 @@ init_process ()
6885{ 6895{
6886 register int i; 6896 register int i;
6887 6897
6898 inhibit_sentinels = 0;
6899
6888#ifdef SIGCHLD 6900#ifdef SIGCHLD
6889#ifndef CANNOT_DUMP 6901#ifndef CANNOT_DUMP
6890 if (! noninteractive || initialized) 6902 if (! noninteractive || initialized)