aboutsummaryrefslogtreecommitdiffstats
path: root/src/callproc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/callproc.c')
-rw-r--r--src/callproc.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/callproc.c b/src/callproc.c
index 73d81d81b18..10e98ad1a36 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1,5 +1,5 @@
1/* Synchronous subprocess invocation for GNU Emacs. 1/* Synchronous subprocess invocation for GNU Emacs.
2 Copyright (C) 1985,86,87,88,93,94,95,99, 2000, 2001 2 Copyright (C) 1985,86,87,88,93,94,95,99, 2000,01,02,03,04
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
@@ -130,6 +130,8 @@ int synch_process_termsig;
130 this is exit code of synchronous subprocess. */ 130 this is exit code of synchronous subprocess. */
131int synch_process_retcode; 131int synch_process_retcode;
132 132
133extern Lisp_Object Qredisplay_dont_pause;
134
133extern Lisp_Object Vdoc_file_name; 135extern Lisp_Object Vdoc_file_name;
134 136
135extern Lisp_Object Vfile_name_coding_system, Vdefault_file_name_coding_system; 137extern Lisp_Object Vfile_name_coding_system, Vdefault_file_name_coding_system;
@@ -220,9 +222,9 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
220 int fd[2]; 222 int fd[2];
221 int filefd; 223 int filefd;
222 register int pid; 224 register int pid;
223 char buf[16384]; 225 char buf[16384*4];
224 char *bufptr = buf; 226 char *bufptr = buf;
225 int bufsize = 16384; 227 int bufsize = sizeof buf;
226 int count = SPECPDL_INDEX (); 228 int count = SPECPDL_INDEX ();
227 229
228 register const unsigned char **new_argv 230 register const unsigned char **new_argv
@@ -771,6 +773,7 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
771 773
772 if (this_read == 0) 774 if (this_read == 0)
773 { 775 {
776// fprintf(stderr, "read 0, total=%d\n", total_read);
774 process_coding.mode |= CODING_MODE_LAST_BLOCK; 777 process_coding.mode |= CODING_MODE_LAST_BLOCK;
775 break; 778 break;
776 } 779 }
@@ -778,6 +781,8 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
778 nread += this_read; 781 nread += this_read;
779 total_read += this_read; 782 total_read += this_read;
780 783
784// fprintf(stderr, "read %d+%d of %d, total=%d\n", nread, this_read, bufsize, total_read);
785
781 if (display_on_the_fly) 786 if (display_on_the_fly)
782 break; 787 break;
783 } 788 }
@@ -830,6 +835,8 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
830 continue; 835 continue;
831 } 836 }
832 837
838// fprintf(stderr, "produced %d\n", process_coding.produced);
839
833 if (process_coding.produced > 0) 840 if (process_coding.produced > 0)
834 insert_1_both (decoding_buf, process_coding.produced_char, 841 insert_1_both (decoding_buf, process_coding.produced_char,
835 process_coding.produced, 0, 1, 0); 842 process_coding.produced, 0, 1, 0);
@@ -929,10 +936,15 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
929 936
930 if (!NILP (display) && INTERACTIVE) 937 if (!NILP (display) && INTERACTIVE)
931 { 938 {
939 extern int windows_or_buffers_changed;
940 int count = SPECPDL_INDEX ();
941
932 if (first) 942 if (first)
933 prepare_menu_bars (); 943 prepare_menu_bars ();
934 first = 0; 944 first = 0;
945 specbind (Qredisplay_dont_pause, Qt);
935 redisplay_preserve_echo_area (1); 946 redisplay_preserve_echo_area (1);
947 unbind_to (count, Qnil);
936 } 948 }
937 immediate_quit = 1; 949 immediate_quit = 1;
938 QUIT; 950 QUIT;