diff options
| author | Karoly Lorentey | 2006-10-14 17:36:28 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2006-10-14 17:36:28 +0000 |
| commit | 12b6af5c7ed2cfdb9783312bf890cf1e6c80c67a (patch) | |
| tree | 1775f9fd1c92defd8b61304a08ec00da95bc4539 /src/print.c | |
| parent | 3f87f67ee215ffeecbd2f53bd7f342cdf03f47df (diff) | |
| parent | f763da8d0808af7c80d72bc586bf4fcf50b37ddd (diff) | |
| download | emacs-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.c | 54 |
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 | ||
| 369 | static void | 372 | static void |
| 370 | strout (ptr, size, size_byte, printcharfun, multibyte) | 373 | strout (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 | } |