Mercurial > hg > xemacs-beta
comparison src/process.c @ 175:2d532a89d707 r20-3b14
Import from CVS: tag r20-3b14
| author | cvs |
|---|---|
| date | Mon, 13 Aug 2007 09:50:14 +0200 |
| parents | 8eaf7971accc |
| children | 3d6bfa290dbd |
comparison
equal
deleted
inserted
replaced
| 174:bb3568571b84 | 175:2d532a89d707 |
|---|---|
| 1507 Lisp_Object tail; | 1507 Lisp_Object tail; |
| 1508 | 1508 |
| 1509 for (tail = network_stream_blocking_port_list; CONSP (tail); tail = XCDR (tail)) | 1509 for (tail = network_stream_blocking_port_list; CONSP (tail); tail = XCDR (tail)) |
| 1510 { | 1510 { |
| 1511 Lisp_Object tail_port = XCAR (tail); | 1511 Lisp_Object tail_port = XCAR (tail); |
| 1512 int block_port; | |
| 1513 | 1512 |
| 1514 if (STRINGP (tail_port)) | 1513 if (STRINGP (tail_port)) |
| 1515 { | 1514 { |
| 1516 struct servent *svc_info; | 1515 struct servent *svc_info; |
| 1517 CHECK_STRING (tail_port); | 1516 CHECK_STRING (tail_port); |
| 2083 Return a pair of coding-system for decoding and encoding of PROCESS. | 2082 Return a pair of coding-system for decoding and encoding of PROCESS. |
| 2084 */ | 2083 */ |
| 2085 (process)) | 2084 (process)) |
| 2086 { | 2085 { |
| 2087 process = get_process (process); | 2086 process = get_process (process); |
| 2088 return Fcons(decoding_stream_coding_system | 2087 return Fcons (decoding_stream_coding_system |
| 2089 (XLSTREAM (XPROCESS (process)->instream)), | 2088 (XLSTREAM (XPROCESS (process)->instream)), |
| 2090 encoding_stream_coding_system | 2089 encoding_stream_coding_system |
| 2091 (XLSTREAM (XPROCESS (process)->outstream)) ); | 2090 (XLSTREAM (XPROCESS (process)->outstream))); |
| 2092 } | 2091 } |
| 2093 | 2092 |
| 2094 DEFUN ("set-process-input-coding-system", | 2093 DEFUN ("set-process-input-coding-system", |
| 2095 Fset_process_input_coding_system, 2, 2, 0, /* | 2094 Fset_process_input_coding_system, 2, 2, 0, /* |
| 2096 Set PROCESS's input coding system to CODESYS. | 2095 Set PROCESS's input coding system to CODESYS. |
| 2152 | 2151 |
| 2153 static void | 2152 static void |
| 2154 exec_sentinel (Lisp_Object proc, Lisp_Object reason) | 2153 exec_sentinel (Lisp_Object proc, Lisp_Object reason) |
| 2155 { | 2154 { |
| 2156 /* This function can GC */ | 2155 /* This function can GC */ |
| 2157 Lisp_Object sentinel; | 2156 int speccount = specpdl_depth (); |
| 2158 struct Lisp_Process *p = XPROCESS (proc); | 2157 struct Lisp_Process *p = XPROCESS (proc); |
| 2159 int speccount = specpdl_depth (); | 2158 Lisp_Object sentinel = p->sentinel; |
| 2160 | 2159 |
| 2161 sentinel = p->sentinel; | |
| 2162 if (NILP (sentinel)) | 2160 if (NILP (sentinel)) |
| 2163 return; | 2161 return; |
| 2164 | 2162 |
| 2165 /* Some weird FSFmacs crap here with | 2163 /* Some weird FSFmacs crap here with |
| 2166 Vdeactivate_mark and current_buffer->keymap */ | 2164 Vdeactivate_mark and current_buffer->keymap */ |
| 2170 p->sentinel = Qnil; | 2168 p->sentinel = Qnil; |
| 2171 record_unwind_protect (exec_sentinel_unwind, noseeum_cons (proc, sentinel)); | 2169 record_unwind_protect (exec_sentinel_unwind, noseeum_cons (proc, sentinel)); |
| 2172 /* We used to bind inhibit-quit to t here, but call2_trapping_errors() | 2170 /* We used to bind inhibit-quit to t here, but call2_trapping_errors() |
| 2173 does that for us. */ | 2171 does that for us. */ |
| 2174 running_asynch_code = 1; | 2172 running_asynch_code = 1; |
| 2175 call2_trapping_errors ("Error in process sentinel", | 2173 call2_trapping_errors ("Error in process sentinel", sentinel, proc, reason); |
| 2176 sentinel, proc, reason); | |
| 2177 running_asynch_code = 0; | 2174 running_asynch_code = 0; |
| 2178 restore_match_data (); | 2175 restore_match_data (); |
| 2179 unbind_to (speccount, Qnil); | 2176 unbind_to (speccount, Qnil); |
| 2180 } | 2177 } |
| 2181 | 2178 |
| 2668 | 2665 |
| 2669 DEFUN ("process-status", Fprocess_status, 1, 1, 0, /* | 2666 DEFUN ("process-status", Fprocess_status, 1, 1, 0, /* |
| 2670 Return the status of PROCESS. | 2667 Return the status of PROCESS. |
| 2671 This is a symbol, one of these: | 2668 This is a symbol, one of these: |
| 2672 | 2669 |
| 2673 run -- for a process that is running. | 2670 run -- for a process that is running. |
| 2674 stop -- for a process stopped but continuable. | 2671 stop -- for a process stopped but continuable. |
| 2675 exit -- for a process that has exited. | 2672 exit -- for a process that has exited. |
| 2676 signal -- for a process that has got a fatal signal. | 2673 signal -- for a process that has got a fatal signal. |
| 2677 open -- for a network stream connection that is open. | 2674 open -- for a network stream connection that is open. |
| 2678 closed -- for a network stream connection that is closed. | 2675 closed -- for a network stream connection that is closed. |
| 2679 nil -- if arg is a process name and no such process exists. | 2676 nil -- if arg is a process name and no such process exists. |
| 2677 | |
| 2680 PROCESS may be a process, a buffer, the name of a process or buffer, or | 2678 PROCESS may be a process, a buffer, the name of a process or buffer, or |
| 2681 nil, indicating the current buffer's process. | 2679 nil, indicating the current buffer's process. |
| 2682 */ | 2680 */ |
| 2683 (proc)) | 2681 (proc)) |
| 2684 { | 2682 { |
| 2685 Lisp_Object status; | 2683 Lisp_Object status_symbol; |
| 2686 | 2684 |
| 2687 if (STRINGP (proc)) | 2685 if (STRINGP (proc)) |
| 2688 proc = Fget_process (proc); | 2686 proc = Fget_process (proc); |
| 2689 else | 2687 else |
| 2690 proc = get_process (proc); | 2688 proc = get_process (proc); |
| 2691 | 2689 |
| 2692 if (NILP (proc)) | 2690 if (NILP (proc)) |
| 2693 return proc; | 2691 return Qnil; |
| 2694 | 2692 |
| 2695 status = XPROCESS (proc)->status_symbol; | 2693 status_symbol = XPROCESS (proc)->status_symbol; |
| 2696 if (network_connection_p (proc)) | 2694 if (network_connection_p (proc)) |
| 2697 { | 2695 { |
| 2698 if (EQ (status, Qrun)) | 2696 if (EQ (status_symbol, Qrun)) |
| 2699 status = Qopen; | 2697 status_symbol = Qopen; |
| 2700 else if (EQ (status, Qexit)) | 2698 else if (EQ (status_symbol, Qexit)) |
| 2701 status = Qclosed; | 2699 status_symbol = Qclosed; |
| 2702 } | 2700 } |
| 2703 return status; | 2701 return status_symbol; |
| 2704 } | 2702 } |
| 2705 | 2703 |
| 2706 DEFUN ("process-exit-status", Fprocess_exit_status, 1, 1, 0, /* | 2704 DEFUN ("process-exit-status", Fprocess_exit_status, 1, 1, 0, /* |
| 2707 Return the exit status of PROCESS or the signal number that killed it. | 2705 Return the exit status of PROCESS or the signal number that killed it. |
| 2708 If PROCESS has not yet exited or died, return 0. | 2706 If PROCESS has not yet exited or died, return 0. |
| 2780 case SIGTSTP: return t.c_cc[VSWTCH]; | 2778 case SIGTSTP: return t.c_cc[VSWTCH]; |
| 2781 # endif /* SIGTSTP */ | 2779 # endif /* SIGTSTP */ |
| 2782 } | 2780 } |
| 2783 } | 2781 } |
| 2784 # else /* ! defined (TCGETA) */ | 2782 # else /* ! defined (TCGETA) */ |
| 2785 #error ERROR! Using SIGNALS_VIA_CHARACTERS, but not (TIOCGLTC && TIOCGETC) || TCGETA | 2783 #error ERROR! Using SIGNALS_VIA_CHARACTERS, but not HAVE_TERMIOS || (TIOCGLTC && TIOCGETC) || TCGETA |
| 2786 /* If your system configuration files define SIGNALS_VIA_CHARACTERS, | 2784 /* If your system configuration files define SIGNALS_VIA_CHARACTERS, |
| 2787 you'd better be using one of the alternatives above! */ | 2785 you'd better be using one of the alternatives above! */ |
| 2788 # endif /* ! defined (TCGETA) */ | 2786 # endif /* ! defined (TCGETA) */ |
| 2789 return '\0'; | 2787 return '\0'; |
| 2790 } | 2788 } |
