aboutsummaryrefslogtreecommitdiffstats
path: root/src/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c80
1 files changed, 43 insertions, 37 deletions
diff --git a/src/process.c b/src/process.c
index 80e70e49f8e..210287a85f1 100644
--- a/src/process.c
+++ b/src/process.c
@@ -719,7 +719,7 @@ get_process (register Lisp_Object name)
719 { 719 {
720 proc = Fget_buffer_process (obj); 720 proc = Fget_buffer_process (obj);
721 if (NILP (proc)) 721 if (NILP (proc))
722 error ("Buffer %s has no process", SDATA (XBUFFER (obj)->name)); 722 error ("Buffer %s has no process", SDATA (BVAR (XBUFFER (obj), name)));
723 } 723 }
724 else 724 else
725 { 725 {
@@ -1283,12 +1283,12 @@ list_processes_1 (Lisp_Object query_only)
1283 w_proc = i; 1283 w_proc = i;
1284 if (!NILP (p->buffer)) 1284 if (!NILP (p->buffer))
1285 { 1285 {
1286 if (NILP (XBUFFER (p->buffer)->name)) 1286 if (NILP (BVAR (XBUFFER (p->buffer), name)))
1287 { 1287 {
1288 if (w_buffer < 8) 1288 if (w_buffer < 8)
1289 w_buffer = 8; /* (Killed) */ 1289 w_buffer = 8; /* (Killed) */
1290 } 1290 }
1291 else if ((i = SCHARS (XBUFFER (p->buffer)->name), (i > w_buffer))) 1291 else if ((i = SCHARS (BVAR (XBUFFER (p->buffer), name)), (i > w_buffer)))
1292 w_buffer = i; 1292 w_buffer = i;
1293 } 1293 }
1294 if (STRINGP (p->tty_name) 1294 if (STRINGP (p->tty_name)
@@ -1312,9 +1312,9 @@ list_processes_1 (Lisp_Object query_only)
1312 XSETFASTINT (minspace, 1); 1312 XSETFASTINT (minspace, 1);
1313 1313
1314 set_buffer_internal (XBUFFER (Vstandard_output)); 1314 set_buffer_internal (XBUFFER (Vstandard_output));
1315 current_buffer->undo_list = Qt; 1315 BVAR (current_buffer, undo_list) = Qt;
1316 1316
1317 current_buffer->truncate_lines = Qt; 1317 BVAR (current_buffer, truncate_lines) = Qt;
1318 1318
1319 write_string ("Proc", -1); 1319 write_string ("Proc", -1);
1320 Findent_to (i_status, minspace); write_string ("Status", -1); 1320 Findent_to (i_status, minspace); write_string ("Status", -1);
@@ -1397,10 +1397,10 @@ list_processes_1 (Lisp_Object query_only)
1397 Findent_to (i_buffer, minspace); 1397 Findent_to (i_buffer, minspace);
1398 if (NILP (p->buffer)) 1398 if (NILP (p->buffer))
1399 insert_string ("(none)"); 1399 insert_string ("(none)");
1400 else if (NILP (XBUFFER (p->buffer)->name)) 1400 else if (NILP (BVAR (XBUFFER (p->buffer), name)))
1401 insert_string ("(Killed)"); 1401 insert_string ("(Killed)");
1402 else 1402 else
1403 Finsert (1, &XBUFFER (p->buffer)->name); 1403 Finsert (1, &BVAR (XBUFFER (p->buffer), name));
1404 1404
1405 if (!NILP (i_tty)) 1405 if (!NILP (i_tty))
1406 { 1406 {
@@ -1548,7 +1548,7 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1548 { 1548 {
1549 struct gcpro gcpro1, gcpro2; 1549 struct gcpro gcpro1, gcpro2;
1550 1550
1551 current_dir = current_buffer->directory; 1551 current_dir = BVAR (current_buffer, directory);
1552 1552
1553 GCPRO2 (buffer, current_dir); 1553 GCPRO2 (buffer, current_dir);
1554 1554
@@ -1560,7 +1560,7 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1560 current_dir = expand_and_dir_to_file (current_dir, Qnil); 1560 current_dir = expand_and_dir_to_file (current_dir, Qnil);
1561 if (NILP (Ffile_accessible_directory_p (current_dir))) 1561 if (NILP (Ffile_accessible_directory_p (current_dir)))
1562 report_file_error ("Setting current directory", 1562 report_file_error ("Setting current directory",
1563 Fcons (current_buffer->directory, Qnil)); 1563 Fcons (BVAR (current_buffer, directory), Qnil));
1564 1564
1565 UNGCPRO; 1565 UNGCPRO;
1566 } 1566 }
@@ -1660,9 +1660,9 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1660 } 1660 }
1661 1661
1662 1662
1663 XPROCESS (proc)->decoding_buf = make_uninit_string (0); 1663 XPROCESS (proc)->decoding_buf = empty_unibyte_string;
1664 XPROCESS (proc)->decoding_carryover = 0; 1664 XPROCESS (proc)->decoding_carryover = 0;
1665 XPROCESS (proc)->encoding_buf = make_uninit_string (0); 1665 XPROCESS (proc)->encoding_buf = empty_unibyte_string;
1666 1666
1667 XPROCESS (proc)->inherit_coding_system_flag 1667 XPROCESS (proc)->inherit_coding_system_flag
1668 = !(NILP (buffer) || !inherit_process_coding_system); 1668 = !(NILP (buffer) || !inherit_process_coding_system);
@@ -1786,6 +1786,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
1786 sigset_t blocked; 1786 sigset_t blocked;
1787 struct sigaction sigint_action; 1787 struct sigaction sigint_action;
1788 struct sigaction sigquit_action; 1788 struct sigaction sigquit_action;
1789 struct sigaction sigpipe_action;
1789#ifdef AIX 1790#ifdef AIX
1790 struct sigaction sighup_action; 1791 struct sigaction sighup_action;
1791#endif 1792#endif
@@ -1898,6 +1899,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
1898 and record the current handlers so they can be restored later. */ 1899 and record the current handlers so they can be restored later. */
1899 sigaddset (&blocked, SIGINT ); sigaction (SIGINT , 0, &sigint_action ); 1900 sigaddset (&blocked, SIGINT ); sigaction (SIGINT , 0, &sigint_action );
1900 sigaddset (&blocked, SIGQUIT); sigaction (SIGQUIT, 0, &sigquit_action); 1901 sigaddset (&blocked, SIGQUIT); sigaction (SIGQUIT, 0, &sigquit_action);
1902 sigaddset (&blocked, SIGPIPE); sigaction (SIGPIPE, 0, &sigpipe_action);
1901#ifdef AIX 1903#ifdef AIX
1902 sigaddset (&blocked, SIGHUP ); sigaction (SIGHUP , 0, &sighup_action ); 1904 sigaddset (&blocked, SIGHUP ); sigaction (SIGHUP , 0, &sighup_action );
1903#endif 1905#endif
@@ -2054,6 +2056,9 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
2054 2056
2055 signal (SIGINT, SIG_DFL); 2057 signal (SIGINT, SIG_DFL);
2056 signal (SIGQUIT, SIG_DFL); 2058 signal (SIGQUIT, SIG_DFL);
2059 /* GConf causes us to ignore SIGPIPE, make sure it is restored
2060 in the child. */
2061 signal (SIGPIPE, SIG_DFL);
2057 2062
2058 /* Stop blocking signals in the child. */ 2063 /* Stop blocking signals in the child. */
2059 sigprocmask (SIG_SETMASK, &procmask, 0); 2064 sigprocmask (SIG_SETMASK, &procmask, 0);
@@ -2142,6 +2147,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
2142 /* Restore the parent's signal handlers. */ 2147 /* Restore the parent's signal handlers. */
2143 sigaction (SIGINT, &sigint_action, 0); 2148 sigaction (SIGINT, &sigint_action, 0);
2144 sigaction (SIGQUIT, &sigquit_action, 0); 2149 sigaction (SIGQUIT, &sigquit_action, 0);
2150 sigaction (SIGPIPE, &sigpipe_action, 0);
2145#ifdef AIX 2151#ifdef AIX
2146 sigaction (SIGHUP, &sighup_action, 0); 2152 sigaction (SIGHUP, &sighup_action, 0);
2147#endif 2153#endif
@@ -2892,8 +2898,8 @@ usage: (make-serial-process &rest ARGS) */)
2892 } 2898 }
2893 else if (!NILP (Vcoding_system_for_read)) 2899 else if (!NILP (Vcoding_system_for_read))
2894 val = Vcoding_system_for_read; 2900 val = Vcoding_system_for_read;
2895 else if ((!NILP (buffer) && NILP (XBUFFER (buffer)->enable_multibyte_characters)) 2901 else if ((!NILP (buffer) && NILP (BVAR (XBUFFER (buffer), enable_multibyte_characters)))
2896 || (NILP (buffer) && NILP (buffer_defaults.enable_multibyte_characters))) 2902 || (NILP (buffer) && NILP (BVAR (&buffer_defaults, enable_multibyte_characters))))
2897 val = Qnil; 2903 val = Qnil;
2898 p->decode_coding_system = val; 2904 p->decode_coding_system = val;
2899 2905
@@ -2906,15 +2912,15 @@ usage: (make-serial-process &rest ARGS) */)
2906 } 2912 }
2907 else if (!NILP (Vcoding_system_for_write)) 2913 else if (!NILP (Vcoding_system_for_write))
2908 val = Vcoding_system_for_write; 2914 val = Vcoding_system_for_write;
2909 else if ((!NILP (buffer) && NILP (XBUFFER (buffer)->enable_multibyte_characters)) 2915 else if ((!NILP (buffer) && NILP (BVAR (XBUFFER (buffer), enable_multibyte_characters)))
2910 || (NILP (buffer) && NILP (buffer_defaults.enable_multibyte_characters))) 2916 || (NILP (buffer) && NILP (BVAR (&buffer_defaults, enable_multibyte_characters))))
2911 val = Qnil; 2917 val = Qnil;
2912 p->encode_coding_system = val; 2918 p->encode_coding_system = val;
2913 2919
2914 setup_process_coding_systems (proc); 2920 setup_process_coding_systems (proc);
2915 p->decoding_buf = make_uninit_string (0); 2921 p->decoding_buf = empty_unibyte_string;
2916 p->decoding_carryover = 0; 2922 p->decoding_carryover = 0;
2917 p->encoding_buf = make_uninit_string (0); 2923 p->encoding_buf = empty_unibyte_string;
2918 p->inherit_coding_system_flag 2924 p->inherit_coding_system_flag
2919 = !(!NILP (tem) || NILP (buffer) || !inherit_process_coding_system); 2925 = !(!NILP (tem) || NILP (buffer) || !inherit_process_coding_system);
2920 2926
@@ -3717,8 +3723,8 @@ usage: (make-network-process &rest ARGS) */)
3717 } 3723 }
3718 else if (!NILP (Vcoding_system_for_read)) 3724 else if (!NILP (Vcoding_system_for_read))
3719 val = Vcoding_system_for_read; 3725 val = Vcoding_system_for_read;
3720 else if ((!NILP (buffer) && NILP (XBUFFER (buffer)->enable_multibyte_characters)) 3726 else if ((!NILP (buffer) && NILP (BVAR (XBUFFER (buffer), enable_multibyte_characters)))
3721 || (NILP (buffer) && NILP (buffer_defaults.enable_multibyte_characters))) 3727 || (NILP (buffer) && NILP (BVAR (&buffer_defaults, enable_multibyte_characters))))
3722 /* We dare not decode end-of-line format by setting VAL to 3728 /* We dare not decode end-of-line format by setting VAL to
3723 Qraw_text, because the existing Emacs Lisp libraries 3729 Qraw_text, because the existing Emacs Lisp libraries
3724 assume that they receive bare code including a sequene of 3730 assume that they receive bare code including a sequene of
@@ -3753,7 +3759,7 @@ usage: (make-network-process &rest ARGS) */)
3753 } 3759 }
3754 else if (!NILP (Vcoding_system_for_write)) 3760 else if (!NILP (Vcoding_system_for_write))
3755 val = Vcoding_system_for_write; 3761 val = Vcoding_system_for_write;
3756 else if (NILP (current_buffer->enable_multibyte_characters)) 3762 else if (NILP (BVAR (current_buffer, enable_multibyte_characters)))
3757 val = Qnil; 3763 val = Qnil;
3758 else 3764 else
3759 { 3765 {
@@ -3781,9 +3787,9 @@ usage: (make-network-process &rest ARGS) */)
3781 } 3787 }
3782 setup_process_coding_systems (proc); 3788 setup_process_coding_systems (proc);
3783 3789
3784 p->decoding_buf = make_uninit_string (0); 3790 p->decoding_buf = empty_unibyte_string;
3785 p->decoding_carryover = 0; 3791 p->decoding_carryover = 0;
3786 p->encoding_buf = make_uninit_string (0); 3792 p->encoding_buf = empty_unibyte_string;
3787 3793
3788 p->inherit_coding_system_flag 3794 p->inherit_coding_system_flag
3789 = !(!NILP (tem) || NILP (buffer) || !inherit_process_coding_system); 3795 = !(!NILP (tem) || NILP (buffer) || !inherit_process_coding_system);
@@ -4358,9 +4364,9 @@ server_accept_connection (Lisp_Object server, int channel)
4358 p->encode_coding_system = ps->encode_coding_system; 4364 p->encode_coding_system = ps->encode_coding_system;
4359 setup_process_coding_systems (proc); 4365 setup_process_coding_systems (proc);
4360 4366
4361 p->decoding_buf = make_uninit_string (0); 4367 p->decoding_buf = empty_unibyte_string;
4362 p->decoding_carryover = 0; 4368 p->decoding_carryover = 0;
4363 p->encoding_buf = make_uninit_string (0); 4369 p->encoding_buf = empty_unibyte_string;
4364 4370
4365 p->inherit_coding_system_flag 4371 p->inherit_coding_system_flag
4366 = (NILP (buffer) ? 0 : ps->inherit_coding_system_flag); 4372 = (NILP (buffer) ? 0 : ps->inherit_coding_system_flag);
@@ -5262,7 +5268,7 @@ read_process_output (Lisp_Object proc, register int channel)
5262 /* No need to gcpro these, because all we do with them later 5268 /* No need to gcpro these, because all we do with them later
5263 is test them for EQness, and none of them should be a string. */ 5269 is test them for EQness, and none of them should be a string. */
5264 XSETBUFFER (obuffer, current_buffer); 5270 XSETBUFFER (obuffer, current_buffer);
5265 okeymap = current_buffer->keymap; 5271 okeymap = BVAR (current_buffer, keymap);
5266 5272
5267 /* We inhibit quit here instead of just catching it so that 5273 /* We inhibit quit here instead of just catching it so that
5268 hitting ^G when a filter happens to be running won't screw 5274 hitting ^G when a filter happens to be running won't screw
@@ -5353,7 +5359,7 @@ read_process_output (Lisp_Object proc, register int channel)
5353 } 5359 }
5354 5360
5355 /* If no filter, write into buffer if it isn't dead. */ 5361 /* If no filter, write into buffer if it isn't dead. */
5356 else if (!NILP (p->buffer) && !NILP (XBUFFER (p->buffer)->name)) 5362 else if (!NILP (p->buffer) && !NILP (BVAR (XBUFFER (p->buffer), name)))
5357 { 5363 {
5358 Lisp_Object old_read_only; 5364 Lisp_Object old_read_only;
5359 EMACS_INT old_begv, old_zv; 5365 EMACS_INT old_begv, old_zv;
@@ -5366,13 +5372,13 @@ read_process_output (Lisp_Object proc, register int channel)
5366 Fset_buffer (p->buffer); 5372 Fset_buffer (p->buffer);
5367 opoint = PT; 5373 opoint = PT;
5368 opoint_byte = PT_BYTE; 5374 opoint_byte = PT_BYTE;
5369 old_read_only = current_buffer->read_only; 5375 old_read_only = BVAR (current_buffer, read_only);
5370 old_begv = BEGV; 5376 old_begv = BEGV;
5371 old_zv = ZV; 5377 old_zv = ZV;
5372 old_begv_byte = BEGV_BYTE; 5378 old_begv_byte = BEGV_BYTE;
5373 old_zv_byte = ZV_BYTE; 5379 old_zv_byte = ZV_BYTE;
5374 5380
5375 current_buffer->read_only = Qnil; 5381 BVAR (current_buffer, read_only) = Qnil;
5376 5382
5377 /* Insert new output into buffer 5383 /* Insert new output into buffer
5378 at the current end-of-output marker, 5384 at the current end-of-output marker,
@@ -5417,7 +5423,7 @@ read_process_output (Lisp_Object proc, register int channel)
5417 p->decoding_carryover = coding->carryover_bytes; 5423 p->decoding_carryover = coding->carryover_bytes;
5418 } 5424 }
5419 /* Adjust the multibyteness of TEXT to that of the buffer. */ 5425 /* Adjust the multibyteness of TEXT to that of the buffer. */
5420 if (NILP (current_buffer->enable_multibyte_characters) 5426 if (NILP (BVAR (current_buffer, enable_multibyte_characters))
5421 != ! STRING_MULTIBYTE (text)) 5427 != ! STRING_MULTIBYTE (text))
5422 text = (STRING_MULTIBYTE (text) 5428 text = (STRING_MULTIBYTE (text)
5423 ? Fstring_as_unibyte (text) 5429 ? Fstring_as_unibyte (text)
@@ -5461,7 +5467,7 @@ read_process_output (Lisp_Object proc, register int channel)
5461 Fnarrow_to_region (make_number (old_begv), make_number (old_zv)); 5467 Fnarrow_to_region (make_number (old_begv), make_number (old_zv));
5462 5468
5463 5469
5464 current_buffer->read_only = old_read_only; 5470 BVAR (current_buffer, read_only) = old_read_only;
5465 SET_PT_BOTH (opoint, opoint_byte); 5471 SET_PT_BOTH (opoint, opoint_byte);
5466 } 5472 }
5467 /* Handling the process output should not deactivate the mark. */ 5473 /* Handling the process output should not deactivate the mark. */
@@ -5519,7 +5525,7 @@ send_process (volatile Lisp_Object proc, const char *volatile buf,
5519 5525
5520 if ((STRINGP (object) && STRING_MULTIBYTE (object)) 5526 if ((STRINGP (object) && STRING_MULTIBYTE (object))
5521 || (BUFFERP (object) 5527 || (BUFFERP (object)
5522 && !NILP (XBUFFER (object)->enable_multibyte_characters)) 5528 && !NILP (BVAR (XBUFFER (object), enable_multibyte_characters)))
5523 || EQ (object, Qt)) 5529 || EQ (object, Qt))
5524 { 5530 {
5525 p->encode_coding_system 5531 p->encode_coding_system
@@ -6558,7 +6564,7 @@ exec_sentinel (Lisp_Object proc, Lisp_Object reason)
6558 is test them for EQness, and none of them should be a string. */ 6564 is test them for EQness, and none of them should be a string. */
6559 odeactivate = Vdeactivate_mark; 6565 odeactivate = Vdeactivate_mark;
6560 XSETBUFFER (obuffer, current_buffer); 6566 XSETBUFFER (obuffer, current_buffer);
6561 okeymap = current_buffer->keymap; 6567 okeymap = BVAR (current_buffer, keymap);
6562 6568
6563 /* There's no good reason to let sentinels change the current 6569 /* There's no good reason to let sentinels change the current
6564 buffer, and many callers of accept-process-output, sit-for, and 6570 buffer, and many callers of accept-process-output, sit-for, and
@@ -6708,7 +6714,7 @@ status_notify (struct Lisp_Process *deleting_process)
6708 6714
6709 /* Avoid error if buffer is deleted 6715 /* Avoid error if buffer is deleted
6710 (probably that's why the process is dead, too) */ 6716 (probably that's why the process is dead, too) */
6711 if (NILP (XBUFFER (buffer)->name)) 6717 if (NILP (BVAR (XBUFFER (buffer), name)))
6712 continue; 6718 continue;
6713 Fset_buffer (buffer); 6719 Fset_buffer (buffer);
6714 6720
@@ -6725,13 +6731,13 @@ status_notify (struct Lisp_Process *deleting_process)
6725 before = PT; 6731 before = PT;
6726 before_byte = PT_BYTE; 6732 before_byte = PT_BYTE;
6727 6733
6728 tem = current_buffer->read_only; 6734 tem = BVAR (current_buffer, read_only);
6729 current_buffer->read_only = Qnil; 6735 BVAR (current_buffer, read_only) = Qnil;
6730 insert_string ("\nProcess "); 6736 insert_string ("\nProcess ");
6731 Finsert (1, &p->name); 6737 Finsert (1, &p->name);
6732 insert_string (" "); 6738 insert_string (" ");
6733 Finsert (1, &msg); 6739 Finsert (1, &msg);
6734 current_buffer->read_only = tem; 6740 BVAR (current_buffer, read_only) = tem;
6735 set_marker_both (p->mark, p->buffer, PT, PT_BYTE); 6741 set_marker_both (p->mark, p->buffer, PT, PT_BYTE);
6736 6742
6737 if (opoint >= before) 6743 if (opoint >= before)
@@ -7130,7 +7136,7 @@ setup_process_coding_systems (Lisp_Object process)
7130 ; 7136 ;
7131 else if (BUFFERP (p->buffer)) 7137 else if (BUFFERP (p->buffer))
7132 { 7138 {
7133 if (NILP (XBUFFER (p->buffer)->enable_multibyte_characters)) 7139 if (NILP (BVAR (XBUFFER (p->buffer), enable_multibyte_characters)))
7134 coding_system = raw_text_coding_system (coding_system); 7140 coding_system = raw_text_coding_system (coding_system);
7135 } 7141 }
7136 setup_coding_system (coding_system, proc_decode_coding_system[inch]); 7142 setup_coding_system (coding_system, proc_decode_coding_system[inch]);