aboutsummaryrefslogtreecommitdiffstats
path: root/src/print.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/print.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/print.c')
-rw-r--r--src/print.c54
1 files changed, 38 insertions, 16 deletions
diff --git a/src/print.c b/src/print.c
index d5ff1be6b31..5d650813458 100644
--- a/src/print.c
+++ b/src/print.c
@@ -216,7 +216,7 @@ int print_output_debug_flag = 1;
216 if (MARKERP (printcharfun)) \ 216 if (MARKERP (printcharfun)) \
217 { \ 217 { \
218 EMACS_INT marker_pos; \ 218 EMACS_INT marker_pos; \
219 if (!(XMARKER (printcharfun)->buffer)) \ 219 if (! XMARKER (printcharfun)->buffer) \
220 error ("Marker does not point anywhere"); \ 220 error ("Marker does not point anywhere"); \
221 if (XMARKER (printcharfun)->buffer != current_buffer) \ 221 if (XMARKER (printcharfun)->buffer != current_buffer) \
222 set_buffer_internal (XMARKER (printcharfun)->buffer); \ 222 set_buffer_internal (XMARKER (printcharfun)->buffer); \
@@ -289,7 +289,7 @@ int print_output_debug_flag = 1;
289 SET_PT_BOTH (old_point + (old_point >= start_point \ 289 SET_PT_BOTH (old_point + (old_point >= start_point \
290 ? PT - start_point : 0), \ 290 ? PT - start_point : 0), \
291 old_point_byte + (old_point_byte >= start_point_byte \ 291 old_point_byte + (old_point_byte >= start_point_byte \
292 ? PT_BYTE - start_point_byte : 0)); \ 292 ? PT_BYTE - start_point_byte : 0)); \
293 if (old != current_buffer) \ 293 if (old != current_buffer) \
294 set_buffer_internal (old); 294 set_buffer_internal (old);
295 295
@@ -364,7 +364,10 @@ printchar (ch, fun)
364 print_buffer. PRINTCHARFUN t means output to the echo area or to 364 print_buffer. PRINTCHARFUN t means output to the echo area or to
365 stdout if non-interactive. If neither nil nor t, call Lisp 365 stdout if non-interactive. If neither nil nor t, call Lisp
366 function PRINTCHARFUN for each character printed. MULTIBYTE 366 function PRINTCHARFUN for each character printed. MULTIBYTE
367 non-zero means PTR contains multibyte characters. */ 367 non-zero means PTR contains multibyte characters.
368
369 In the case where PRINTCHARFUN is nil, it is safe for PTR to point
370 to data in a Lisp string. Otherwise that is not safe. */
368 371
369static void 372static void
370strout (ptr, size, size_byte, printcharfun, multibyte) 373strout (ptr, size, size_byte, printcharfun, multibyte)
@@ -413,7 +416,7 @@ strout (ptr, size, size_byte, printcharfun, multibyte)
413 if (size == size_byte) 416 if (size == size_byte)
414 { 417 {
415 for (i = 0; i < size; ++i) 418 for (i = 0; i < size; ++i)
416 insert_char ((unsigned char )*ptr++); 419 insert_char ((unsigned char) *ptr++);
417 } 420 }
418 else 421 else
419 { 422 {
@@ -497,10 +500,29 @@ print_string (string, printcharfun)
497 else 500 else
498 chars = SBYTES (string); 501 chars = SBYTES (string);
499 502
500 /* strout is safe for output to a frame (echo area) or to print_buffer. */ 503 if (EQ (printcharfun, Qt))
501 strout (SDATA (string), 504 {
502 chars, SBYTES (string), 505 /* Output to echo area. */
503 printcharfun, STRING_MULTIBYTE (string)); 506 int nbytes = SBYTES (string);
507 char *buffer;
508
509 /* Copy the string contents so that relocation of STRING by
510 GC does not cause trouble. */
511 USE_SAFE_ALLOCA;
512
513 SAFE_ALLOCA (buffer, char *, nbytes);
514 bcopy (SDATA (string), buffer, nbytes);
515
516 strout (buffer, chars, SBYTES (string),
517 printcharfun, STRING_MULTIBYTE (string));
518
519 SAFE_FREE ();
520 }
521 else
522 /* No need to copy, since output to print_buffer can't GC. */
523 strout (SDATA (string),
524 chars, SBYTES (string),
525 printcharfun, STRING_MULTIBYTE (string));
504 } 526 }
505 else 527 else
506 { 528 {
@@ -934,7 +956,7 @@ debug_output_compilation_hack (x)
934 print_output_debug_flag = x; 956 print_output_debug_flag = x;
935} 957}
936 958
937#if defined(GNU_LINUX) 959#if defined (GNU_LINUX)
938 960
939/* This functionality is not vitally important in general, so we rely on 961/* This functionality is not vitally important in general, so we rely on
940 non-portable ability to use stderr as lvalue. */ 962 non-portable ability to use stderr as lvalue. */
@@ -954,7 +976,7 @@ append to existing target file. */)
954 Lisp_Object file, append; 976 Lisp_Object file, append;
955{ 977{
956 if (initial_stderr_stream != NULL) 978 if (initial_stderr_stream != NULL)
957 fclose(stderr); 979 fclose (stderr);
958 stderr = initial_stderr_stream; 980 stderr = initial_stderr_stream;
959 initial_stderr_stream = NULL; 981 initial_stderr_stream = NULL;
960 982
@@ -962,7 +984,7 @@ append to existing target file. */)
962 { 984 {
963 file = Fexpand_file_name (file, Qnil); 985 file = Fexpand_file_name (file, Qnil);
964 initial_stderr_stream = stderr; 986 initial_stderr_stream = stderr;
965 stderr = fopen(SDATA (file), NILP (append) ? "w" : "a"); 987 stderr = fopen (SDATA (file), NILP (append) ? "w" : "a");
966 if (stderr == NULL) 988 if (stderr == NULL)
967 { 989 {
968 stderr = initial_stderr_stream; 990 stderr = initial_stderr_stream;
@@ -2030,7 +2052,7 @@ print_object (obj, printcharfun, escapeflag)
2030 /* Do you think this is necessary? */ 2052 /* Do you think this is necessary? */
2031 if (XMARKER (obj)->insertion_type != 0) 2053 if (XMARKER (obj)->insertion_type != 0)
2032 strout ("(moves after insertion) ", -1, -1, printcharfun, 0); 2054 strout ("(moves after insertion) ", -1, -1, printcharfun, 0);
2033 if (!(XMARKER (obj)->buffer)) 2055 if (! XMARKER (obj)->buffer)
2034 strout ("in no buffer", -1, -1, printcharfun, 0); 2056 strout ("in no buffer", -1, -1, printcharfun, 0);
2035 else 2057 else
2036 { 2058 {
@@ -2044,7 +2066,7 @@ print_object (obj, printcharfun, escapeflag)
2044 2066
2045 case Lisp_Misc_Overlay: 2067 case Lisp_Misc_Overlay:
2046 strout ("#<overlay ", -1, -1, printcharfun, 0); 2068 strout ("#<overlay ", -1, -1, printcharfun, 0);
2047 if (!(XMARKER (OVERLAY_START (obj))->buffer)) 2069 if (! XMARKER (OVERLAY_START (obj))->buffer)
2048 strout ("in no buffer", -1, -1, printcharfun, 0); 2070 strout ("in no buffer", -1, -1, printcharfun, 0);
2049 else 2071 else
2050 { 2072 {
@@ -2091,8 +2113,8 @@ print_object (obj, printcharfun, escapeflag)
2091 2113
2092 case Lisp_Misc_Kboard_Objfwd: 2114 case Lisp_Misc_Kboard_Objfwd:
2093 strout ("#<kboard_objfwd to ", -1, -1, printcharfun, 0); 2115 strout ("#<kboard_objfwd to ", -1, -1, printcharfun, 0);
2094 print_object (*(Lisp_Object *)((char *) current_kboard 2116 print_object (*(Lisp_Object *) ((char *) current_kboard
2095 + XKBOARD_OBJFWD (obj)->offset), 2117 + XKBOARD_OBJFWD (obj)->offset),
2096 printcharfun, escapeflag); 2118 printcharfun, escapeflag);
2097 PRINTCHAR ('>'); 2119 PRINTCHAR ('>');
2098 break; 2120 break;
@@ -2178,7 +2200,7 @@ print_interval (interval, printcharfun)
2178 print_object (make_number (interval->position), printcharfun, 1); 2200 print_object (make_number (interval->position), printcharfun, 1);
2179 PRINTCHAR (' '); 2201 PRINTCHAR (' ');
2180 print_object (make_number (interval->position + LENGTH (interval)), 2202 print_object (make_number (interval->position + LENGTH (interval)),
2181 printcharfun, 1); 2203 printcharfun, 1);
2182 PRINTCHAR (' '); 2204 PRINTCHAR (' ');
2183 print_object (interval->plist, printcharfun, 1); 2205 print_object (interval->plist, printcharfun, 1);
2184} 2206}