diff options
| author | Karoly Lorentey | 2005-03-23 10:40:00 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2005-03-23 10:40:00 +0000 |
| commit | 76acbdc50490034f233bc78d14a7cd5717d9432e (patch) | |
| tree | 9b46877d371dad83ff6cdad30cd69df2a050de7d /src | |
| parent | 335fcf6c2f6ae8990d8c62589cfb3558c3f38bc0 (diff) | |
| parent | 8725c7925ef1ce95efb1f50d48d17f437e9c46a4 (diff) | |
| download | emacs-76acbdc50490034f233bc78d14a7cd5717d9432e.tar.gz emacs-76acbdc50490034f233bc78d14a7cd5717d9432e.zip | |
Merged from miles@gnu.org--gnu-2005 (patch 192-203)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-192
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-193
Use gdb-ui breakpoint faces on ttys too
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-194
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-195
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-196
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-197
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-198
Tweak gdb-ui breakpoint faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-199
Tweak gdb-ui breakpoint faces
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-200
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-201
Tweak info/.arch-inventory to identify info/.cvsignore as source
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-202
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-203
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-316
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 45 | ||||
| -rw-r--r-- | src/dispextern.h | 2 | ||||
| -rw-r--r-- | src/frame.c | 27 | ||||
| -rw-r--r-- | src/fringe.c | 6 | ||||
| -rw-r--r-- | src/keyboard.c | 23 | ||||
| -rw-r--r-- | src/msdos.c | 8 | ||||
| -rw-r--r-- | src/s/openbsd.h | 7 | ||||
| -rw-r--r-- | src/textprop.c | 18 | ||||
| -rw-r--r-- | src/unexec.c | 195 | ||||
| -rw-r--r-- | src/xdisp.c | 3 | ||||
| -rw-r--r-- | src/xfaces.c | 6 | ||||
| -rw-r--r-- | src/xrdb.c | 6 |
12 files changed, 199 insertions, 147 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 92be15873c0..2354e597844 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,6 +1,49 @@ | |||
| 1 | 2005-03-22 Kim F. Storm <storm@cua.dk> | ||
| 2 | |||
| 3 | * xfaces.c (lookup_derived_face): Add arg SIGNAL_P. | ||
| 4 | * dispextern.h (lookup_derived_face): Fix prototype. | ||
| 5 | * msdos.c (XMenuActivate): Fix call to lookup_derived_face. | ||
| 6 | |||
| 7 | * xdisp.c (handle_single_display_spec): Derive left-fringe and | ||
| 8 | right-fringe face from fringe face. | ||
| 9 | |||
| 10 | * fringe.c (draw_fringe_bitmap_1, Fset_fringe_bitmap_face): | ||
| 11 | Derive face from fringe face. | ||
| 12 | |||
| 13 | 2005-03-22 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 14 | |||
| 15 | * xrdb.c (x_load_resources): Undo previous change (2005-03-18). | ||
| 16 | |||
| 17 | 2005-03-22 David Kastrup <dak@gnu.org> | ||
| 18 | |||
| 19 | * textprop.c (Fnext_char_property_change) | ||
| 20 | (Fprevious_char_property_change): allow marker as limit. | ||
| 21 | (Fnext_single_char_property_change) | ||
| 22 | (Fprevious_single_char_property_change): Check that limit is a | ||
| 23 | number in strings. | ||
| 24 | (Fnext_single_char_property_change): Coerce position to integer. | ||
| 25 | (Fprevious_single_char_property_change): Same here. | ||
| 26 | |||
| 27 | 2005-03-21 Thien-Thi Nguyen <ttn@gnu.org> | ||
| 28 | |||
| 29 | * s/openbsd.h (LD_SWITCH_SYSTEM_tmp): Define if undefined. | ||
| 30 | |||
| 31 | 2005-03-19 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 32 | |||
| 33 | * frame.c (Fignore_event): Remove. | ||
| 34 | (syms_of_frame): Don't defsubr it. | ||
| 35 | |||
| 36 | * keyboard.c (keys_of_keyboard): Just use `ignore' instead of the | ||
| 37 | redundant `ignore-event'. | ||
| 38 | |||
| 39 | 2005-03-19 Eli Zaretskii <eliz@gnu.org> | ||
| 40 | |||
| 41 | * unexec.c (write_segment, unexec): Move these functions to avoid | ||
| 42 | forward references (which cause errors with "gcc -gcoff"). | ||
| 43 | |||
| 1 | 2005-03-18 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | 44 | 2005-03-18 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> |
| 2 | 45 | ||
| 3 | * xfns.c (x_create_tip_frame): Removed setting of Vx_resource_name so | 46 | * xfns.c (x_create_tip_frame): Remove setting of Vx_resource_name so |
| 4 | that it doesn't become "tooltip". The specbind is enough. | 47 | that it doesn't become "tooltip". The specbind is enough. |
| 5 | 48 | ||
| 6 | * xrdb.c (x_load_resources): Use different char *helv when I18N | 49 | * xrdb.c (x_load_resources): Use different char *helv when I18N |
diff --git a/src/dispextern.h b/src/dispextern.h index 8861a9705c4..fbc816865b4 100644 --- a/src/dispextern.h +++ b/src/dispextern.h | |||
| @@ -2770,7 +2770,7 @@ int lookup_face P_ ((struct frame *, Lisp_Object *, int, struct face *)); | |||
| 2770 | int lookup_named_face P_ ((struct frame *, Lisp_Object, int, int)); | 2770 | int lookup_named_face P_ ((struct frame *, Lisp_Object, int, int)); |
| 2771 | int smaller_face P_ ((struct frame *, int, int)); | 2771 | int smaller_face P_ ((struct frame *, int, int)); |
| 2772 | int face_with_height P_ ((struct frame *, int, int)); | 2772 | int face_with_height P_ ((struct frame *, int, int)); |
| 2773 | int lookup_derived_face P_ ((struct frame *, Lisp_Object, int, int)); | 2773 | int lookup_derived_face P_ ((struct frame *, Lisp_Object, int, int, int)); |
| 2774 | void init_frame_faces P_ ((struct frame *)); | 2774 | void init_frame_faces P_ ((struct frame *)); |
| 2775 | void free_frame_faces P_ ((struct frame *)); | 2775 | void free_frame_faces P_ ((struct frame *)); |
| 2776 | void recompute_basic_faces P_ ((struct frame *)); | 2776 | void recompute_basic_faces P_ ((struct frame *)); |
diff --git a/src/frame.c b/src/frame.c index 6c8f837bbd0..40be7210787 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -943,32 +943,6 @@ to that frame. */) | |||
| 943 | return do_switch_frame (event, 0, 0); | 943 | return do_switch_frame (event, 0, 0); |
| 944 | } | 944 | } |
| 945 | 945 | ||
| 946 | DEFUN ("ignore-event", Fignore_event, Signore_event, 0, 0, "", | ||
| 947 | doc: /* Do nothing. | ||
| 948 | This is a suitable binding for `iconify-frame' and `make-frame-visible'. */) | ||
| 949 | () | ||
| 950 | { | ||
| 951 | /* Contrary to `handle-switch-frame', `ignore-event' is used from | ||
| 952 | `special-event-map'. Commands from that map are run in a special | ||
| 953 | way that automatically preserves the prefix-arg. Restoring | ||
| 954 | the prefix arg here is not just redundant but harmful: | ||
| 955 | - C-u C-x v = | ||
| 956 | - current-prefix-arg is set to non-nil, prefix-arg is set to nil. | ||
| 957 | - after the first prompt, the exit-minibuffer-hook is run which may | ||
| 958 | iconify a frame and thus push a `iconify-frame' event. | ||
| 959 | - after running exit-minibuffer-hook, current-prefix-arg is | ||
| 960 | restored to the non-nil value it had before the prompt. | ||
| 961 | - we enter the second prompt. | ||
| 962 | current-prefix-arg is non-nil, prefix-arg is nil. | ||
| 963 | - before running the first real event, we run the special iconify-frame | ||
| 964 | event, but we pass the `special' arg to execute-command so | ||
| 965 | current-prefix-arg and prefix-arg are left untouched. | ||
| 966 | - here we foolishly copy the non-nil current-prefix-arg to prefix-arg. | ||
| 967 | - the next key event will have a spuriously non-nil current-prefix-arg. | ||
| 968 | current_kboard->Vprefix_arg = Vcurrent_prefix_arg; */ | ||
| 969 | return Qnil; | ||
| 970 | } | ||
| 971 | |||
| 972 | DEFUN ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0, | 946 | DEFUN ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0, |
| 973 | doc: /* Return the frame that is now selected. */) | 947 | doc: /* Return the frame that is now selected. */) |
| 974 | () | 948 | () |
| @@ -4376,7 +4350,6 @@ This variable is local to the current terminal and cannot be buffer-local. */); | |||
| 4376 | defsubr (&Swindow_system); | 4350 | defsubr (&Swindow_system); |
| 4377 | defsubr (&Smake_terminal_frame); | 4351 | defsubr (&Smake_terminal_frame); |
| 4378 | defsubr (&Shandle_switch_frame); | 4352 | defsubr (&Shandle_switch_frame); |
| 4379 | defsubr (&Signore_event); | ||
| 4380 | defsubr (&Sselect_frame); | 4353 | defsubr (&Sselect_frame); |
| 4381 | defsubr (&Sselected_frame); | 4354 | defsubr (&Sselected_frame); |
| 4382 | defsubr (&Swindow_frame); | 4355 | defsubr (&Swindow_frame); |
diff --git a/src/fringe.c b/src/fringe.c index 5344d58737e..39479dfed21 100644 --- a/src/fringe.c +++ b/src/fringe.c | |||
| @@ -552,7 +552,8 @@ draw_fringe_bitmap_1 (w, row, left_p, overlay, which) | |||
| 552 | Lisp_Object face; | 552 | Lisp_Object face; |
| 553 | 553 | ||
| 554 | if ((face = fringe_faces[which], NILP (face)) | 554 | if ((face = fringe_faces[which], NILP (face)) |
| 555 | || (face_id = lookup_named_face (f, face, 'A', 1), face_id < 0)) | 555 | || (face_id = lookup_derived_face (f, face, 'A', FRINGE_FACE_ID, 0), |
| 556 | face_id < 0)) | ||
| 556 | face_id = FRINGE_FACE_ID; | 557 | face_id = FRINGE_FACE_ID; |
| 557 | } | 558 | } |
| 558 | 559 | ||
| @@ -1366,7 +1367,8 @@ If FACE is nil, reset face to default fringe face. */) | |||
| 1366 | 1367 | ||
| 1367 | if (!NILP (face)) | 1368 | if (!NILP (face)) |
| 1368 | { | 1369 | { |
| 1369 | face_id = lookup_named_face (SELECTED_FRAME (), face, 'A', 1); | 1370 | face_id = lookup_derived_face (SELECTED_FRAME (), face, |
| 1371 | 'A', FRINGE_FACE_ID, 1); | ||
| 1370 | if (face_id < 0) | 1372 | if (face_id < 0) |
| 1371 | error ("No such face"); | 1373 | error ("No such face"); |
| 1372 | } | 1374 | } |
diff --git a/src/keyboard.c b/src/keyboard.c index 9291fd990d8..f29a7676d34 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -11562,10 +11562,29 @@ keys_of_keyboard () | |||
| 11562 | 11562 | ||
| 11563 | initial_define_lispy_key (Vspecial_event_map, "delete-frame", | 11563 | initial_define_lispy_key (Vspecial_event_map, "delete-frame", |
| 11564 | "handle-delete-frame"); | 11564 | "handle-delete-frame"); |
| 11565 | /* Here we used to use `ignore-event' which would simple set prefix-arg to | ||
| 11566 | current-prefix-arg, as is done in `handle-switch-frame'. | ||
| 11567 | But `handle-switch-frame is not run from the special-map. | ||
| 11568 | Commands from that map are run in a special way that automatically | ||
| 11569 | preserves the prefix-arg. Restoring the prefix arg here is not just | ||
| 11570 | redundant but harmful: | ||
| 11571 | - C-u C-x v = | ||
| 11572 | - current-prefix-arg is set to non-nil, prefix-arg is set to nil. | ||
| 11573 | - after the first prompt, the exit-minibuffer-hook is run which may | ||
| 11574 | iconify a frame and thus push a `iconify-frame' event. | ||
| 11575 | - after running exit-minibuffer-hook, current-prefix-arg is | ||
| 11576 | restored to the non-nil value it had before the prompt. | ||
| 11577 | - we enter the second prompt. | ||
| 11578 | current-prefix-arg is non-nil, prefix-arg is nil. | ||
| 11579 | - before running the first real event, we run the special iconify-frame | ||
| 11580 | event, but we pass the `special' arg to execute-command so | ||
| 11581 | current-prefix-arg and prefix-arg are left untouched. | ||
| 11582 | - here we foolishly copy the non-nil current-prefix-arg to prefix-arg. | ||
| 11583 | - the next key event will have a spuriously non-nil current-prefix-arg. */ | ||
| 11565 | initial_define_lispy_key (Vspecial_event_map, "iconify-frame", | 11584 | initial_define_lispy_key (Vspecial_event_map, "iconify-frame", |
| 11566 | "ignore-event"); | 11585 | "ignore"); |
| 11567 | initial_define_lispy_key (Vspecial_event_map, "make-frame-visible", | 11586 | initial_define_lispy_key (Vspecial_event_map, "make-frame-visible", |
| 11568 | "ignore-event"); | 11587 | "ignore"); |
| 11569 | /* Handling it at such a low-level causes read_key_sequence to get | 11588 | /* Handling it at such a low-level causes read_key_sequence to get |
| 11570 | * confused because it doesn't realize that the current_buffer was | 11589 | * confused because it doesn't realize that the current_buffer was |
| 11571 | * changed by read_char. | 11590 | * changed by read_char. |
diff --git a/src/msdos.c b/src/msdos.c index ab71b642e80..e17e79a6d1f 100644 --- a/src/msdos.c +++ b/src/msdos.c | |||
| @@ -3799,15 +3799,15 @@ XMenuActivate (Display *foo, XMenu *menu, int *pane, int *selidx, | |||
| 3799 | screensize = screen_size * 2; | 3799 | screensize = screen_size * 2; |
| 3800 | faces[0] | 3800 | faces[0] |
| 3801 | = lookup_derived_face (sf, intern ("msdos-menu-passive-face"), | 3801 | = lookup_derived_face (sf, intern ("msdos-menu-passive-face"), |
| 3802 | 0, DEFAULT_FACE_ID); | 3802 | 0, DEFAULT_FACE_ID, 1); |
| 3803 | faces[1] | 3803 | faces[1] |
| 3804 | = lookup_derived_face (sf, intern ("msdos-menu-active-face"), | 3804 | = lookup_derived_face (sf, intern ("msdos-menu-active-face"), |
| 3805 | 0, DEFAULT_FACE_ID); | 3805 | 0, DEFAULT_FACE_ID, 1); |
| 3806 | selectface = intern ("msdos-menu-select-face"); | 3806 | selectface = intern ("msdos-menu-select-face"); |
| 3807 | faces[2] = lookup_derived_face (sf, selectface, | 3807 | faces[2] = lookup_derived_face (sf, selectface, |
| 3808 | 0, faces[0]); | 3808 | 0, faces[0], 1); |
| 3809 | faces[3] = lookup_derived_face (sf, selectface, | 3809 | faces[3] = lookup_derived_face (sf, selectface, |
| 3810 | 0, faces[1]); | 3810 | 0, faces[1], 1); |
| 3811 | 3811 | ||
| 3812 | /* Make sure the menu title is always displayed with | 3812 | /* Make sure the menu title is always displayed with |
| 3813 | `msdos-menu-active-face', no matter where the mouse pointer is. */ | 3813 | `msdos-menu-active-face', no matter where the mouse pointer is. */ |
diff --git a/src/s/openbsd.h b/src/s/openbsd.h index d3730324ce8..39e48da39a7 100644 --- a/src/s/openbsd.h +++ b/src/s/openbsd.h | |||
| @@ -3,6 +3,13 @@ | |||
| 3 | /* Mostly the same as NetBSD. */ | 3 | /* Mostly the same as NetBSD. */ |
| 4 | #include "netbsd.h" | 4 | #include "netbsd.h" |
| 5 | 5 | ||
| 6 | /* This very-badly named symbol is conditionally defined in netbsd.h. | ||
| 7 | Better would be either to not need it in the first place, or to choose | ||
| 8 | a more descriptive name. */ | ||
| 9 | #ifndef LD_SWITCH_SYSTEM_tmp | ||
| 10 | #define LD_SWITCH_SYSTEM_tmp /* empty */ | ||
| 11 | #endif | ||
| 12 | |||
| 6 | /* David Mazieres <dm@reeducation-labor.lcs.mit.edu> says this | 13 | /* David Mazieres <dm@reeducation-labor.lcs.mit.edu> says this |
| 7 | is necessary. Otherwise Emacs dumps core when run -nw. */ | 14 | is necessary. Otherwise Emacs dumps core when run -nw. */ |
| 8 | #undef LIBS_TERMCAP | 15 | #undef LIBS_TERMCAP |
diff --git a/src/textprop.c b/src/textprop.c index 317f8fa6aa3..e6dd411dcc5 100644 --- a/src/textprop.c +++ b/src/textprop.c | |||
| @@ -729,7 +729,7 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 729 | temp = Fnext_overlay_change (position); | 729 | temp = Fnext_overlay_change (position); |
| 730 | if (! NILP (limit)) | 730 | if (! NILP (limit)) |
| 731 | { | 731 | { |
| 732 | CHECK_NUMBER (limit); | 732 | CHECK_NUMBER_COERCE_MARKER (limit); |
| 733 | if (XINT (limit) < XINT (temp)) | 733 | if (XINT (limit) < XINT (temp)) |
| 734 | temp = limit; | 734 | temp = limit; |
| 735 | } | 735 | } |
| @@ -754,7 +754,7 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 754 | temp = Fprevious_overlay_change (position); | 754 | temp = Fprevious_overlay_change (position); |
| 755 | if (! NILP (limit)) | 755 | if (! NILP (limit)) |
| 756 | { | 756 | { |
| 757 | CHECK_NUMBER (limit); | 757 | CHECK_NUMBER_COERCE_MARKER (limit); |
| 758 | if (XINT (limit) > XINT (temp)) | 758 | if (XINT (limit) > XINT (temp)) |
| 759 | temp = limit; | 759 | temp = limit; |
| 760 | } | 760 | } |
| @@ -787,7 +787,10 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 787 | if (NILP (limit)) | 787 | if (NILP (limit)) |
| 788 | position = make_number (SCHARS (object)); | 788 | position = make_number (SCHARS (object)); |
| 789 | else | 789 | else |
| 790 | position = limit; | 790 | { |
| 791 | CHECK_NUMBER (limit); | ||
| 792 | position = limit; | ||
| 793 | } | ||
| 791 | } | 794 | } |
| 792 | } | 795 | } |
| 793 | else | 796 | else |
| @@ -804,6 +807,8 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 804 | Fset_buffer (object); | 807 | Fset_buffer (object); |
| 805 | } | 808 | } |
| 806 | 809 | ||
| 810 | CHECK_NUMBER_COERCE_MARKER (position); | ||
| 811 | |||
| 807 | initial_value = Fget_char_property (position, prop, object); | 812 | initial_value = Fget_char_property (position, prop, object); |
| 808 | 813 | ||
| 809 | if (NILP (limit)) | 814 | if (NILP (limit)) |
| @@ -856,7 +861,10 @@ back past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 856 | if (NILP (limit)) | 861 | if (NILP (limit)) |
| 857 | position = make_number (SCHARS (object)); | 862 | position = make_number (SCHARS (object)); |
| 858 | else | 863 | else |
| 859 | position = limit; | 864 | { |
| 865 | CHECK_NUMBER (limit); | ||
| 866 | position = limit; | ||
| 867 | } | ||
| 860 | } | 868 | } |
| 861 | } | 869 | } |
| 862 | else | 870 | else |
| @@ -872,6 +880,8 @@ back past position LIMIT; return LIMIT if nothing is found before LIMIT. */) | |||
| 872 | Fset_buffer (object); | 880 | Fset_buffer (object); |
| 873 | } | 881 | } |
| 874 | 882 | ||
| 883 | CHECK_NUMBER_COERCE_MARKER (position); | ||
| 884 | |||
| 875 | if (NILP (limit)) | 885 | if (NILP (limit)) |
| 876 | XSETFASTINT (limit, BUF_BEGV (current_buffer)); | 886 | XSETFASTINT (limit, BUF_BEGV (current_buffer)); |
| 877 | else | 887 | else |
diff --git a/src/unexec.c b/src/unexec.c index dadea560e0c..156cad16f97 100644 --- a/src/unexec.c +++ b/src/unexec.c | |||
| @@ -368,48 +368,6 @@ static int copy_sym (); | |||
| 368 | static void mark_x (); | 368 | static void mark_x (); |
| 369 | 369 | ||
| 370 | /* **************************************************************** | 370 | /* **************************************************************** |
| 371 | * unexec | ||
| 372 | * | ||
| 373 | * driving logic. | ||
| 374 | */ | ||
| 375 | unexec (new_name, a_name, data_start, bss_start, entry_address) | ||
| 376 | char *new_name, *a_name; | ||
| 377 | unsigned data_start, bss_start, entry_address; | ||
| 378 | { | ||
| 379 | int new, a_out = -1; | ||
| 380 | |||
| 381 | if (a_name && (a_out = open (a_name, O_RDONLY)) < 0) | ||
| 382 | { | ||
| 383 | PERROR (a_name); | ||
| 384 | } | ||
| 385 | if ((new = creat (new_name, 0666)) < 0) | ||
| 386 | { | ||
| 387 | PERROR (new_name); | ||
| 388 | } | ||
| 389 | |||
| 390 | if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) < 0 | ||
| 391 | || copy_text_and_data (new, a_out) < 0 | ||
| 392 | || copy_sym (new, a_out, a_name, new_name) < 0 | ||
| 393 | #ifdef COFF | ||
| 394 | #ifndef COFF_BSD_SYMBOLS | ||
| 395 | || adjust_lnnoptrs (new, a_out, new_name) < 0 | ||
| 396 | #endif | ||
| 397 | #endif | ||
| 398 | ) | ||
| 399 | { | ||
| 400 | close (new); | ||
| 401 | /* unlink (new_name); /* Failed, unlink new a.out */ | ||
| 402 | return -1; | ||
| 403 | } | ||
| 404 | |||
| 405 | close (new); | ||
| 406 | if (a_out >= 0) | ||
| 407 | close (a_out); | ||
| 408 | mark_x (new_name); | ||
| 409 | return 0; | ||
| 410 | } | ||
| 411 | |||
| 412 | /* **************************************************************** | ||
| 413 | * make_hdr | 371 | * make_hdr |
| 414 | * | 372 | * |
| 415 | * Make the header in the new a.out from the header in core. | 373 | * Make the header in the new a.out from the header in core. |
| @@ -835,6 +793,61 @@ make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) | |||
| 835 | #endif /* not COFF */ | 793 | #endif /* not COFF */ |
| 836 | } | 794 | } |
| 837 | 795 | ||
| 796 | write_segment (new, ptr, end) | ||
| 797 | int new; | ||
| 798 | register char *ptr, *end; | ||
| 799 | { | ||
| 800 | register int i, nwrite, ret; | ||
| 801 | char buf[80]; | ||
| 802 | #ifndef USE_CRT_DLL | ||
| 803 | extern int errno; | ||
| 804 | #endif | ||
| 805 | /* This is the normal amount to write at once. | ||
| 806 | It is the size of block that NFS uses. */ | ||
| 807 | int writesize = 1 << 13; | ||
| 808 | int pagesize = getpagesize (); | ||
| 809 | char zeros[1 << 13]; | ||
| 810 | |||
| 811 | bzero (zeros, sizeof (zeros)); | ||
| 812 | |||
| 813 | for (i = 0; ptr < end;) | ||
| 814 | { | ||
| 815 | /* Distance to next multiple of writesize. */ | ||
| 816 | nwrite = (((int) ptr + writesize) & -writesize) - (int) ptr; | ||
| 817 | /* But not beyond specified end. */ | ||
| 818 | if (nwrite > end - ptr) nwrite = end - ptr; | ||
| 819 | ret = write (new, ptr, nwrite); | ||
| 820 | /* If write gets a page fault, it means we reached | ||
| 821 | a gap between the old text segment and the old data segment. | ||
| 822 | This gap has probably been remapped into part of the text segment. | ||
| 823 | So write zeros for it. */ | ||
| 824 | if (ret == -1 | ||
| 825 | #ifdef EFAULT | ||
| 826 | && errno == EFAULT | ||
| 827 | #endif | ||
| 828 | ) | ||
| 829 | { | ||
| 830 | /* Write only a page of zeros at once, | ||
| 831 | so that we we don't overshoot the start | ||
| 832 | of the valid memory in the old data segment. */ | ||
| 833 | if (nwrite > pagesize) | ||
| 834 | nwrite = pagesize; | ||
| 835 | write (new, zeros, nwrite); | ||
| 836 | } | ||
| 837 | #if 0 /* Now that we have can ask `write' to write more than a page, | ||
| 838 | it is legit for write do less than the whole amount specified. */ | ||
| 839 | else if (nwrite != ret) | ||
| 840 | { | ||
| 841 | sprintf (buf, | ||
| 842 | "unexec write failure: addr 0x%x, fileno %d, size 0x%x, wrote 0x%x, errno %d", | ||
| 843 | ptr, new, nwrite, ret, errno); | ||
| 844 | PERROR (buf); | ||
| 845 | } | ||
| 846 | #endif | ||
| 847 | i += nwrite; | ||
| 848 | ptr += nwrite; | ||
| 849 | } | ||
| 850 | } | ||
| 838 | /* **************************************************************** | 851 | /* **************************************************************** |
| 839 | * copy_text_and_data | 852 | * copy_text_and_data |
| 840 | * | 853 | * |
| @@ -1060,62 +1073,6 @@ copy_text_and_data (new, a_out) | |||
| 1060 | 1073 | ||
| 1061 | return 0; | 1074 | return 0; |
| 1062 | } | 1075 | } |
| 1063 | |||
| 1064 | write_segment (new, ptr, end) | ||
| 1065 | int new; | ||
| 1066 | register char *ptr, *end; | ||
| 1067 | { | ||
| 1068 | register int i, nwrite, ret; | ||
| 1069 | char buf[80]; | ||
| 1070 | #ifndef USE_CRT_DLL | ||
| 1071 | extern int errno; | ||
| 1072 | #endif | ||
| 1073 | /* This is the normal amount to write at once. | ||
| 1074 | It is the size of block that NFS uses. */ | ||
| 1075 | int writesize = 1 << 13; | ||
| 1076 | int pagesize = getpagesize (); | ||
| 1077 | char zeros[1 << 13]; | ||
| 1078 | |||
| 1079 | bzero (zeros, sizeof (zeros)); | ||
| 1080 | |||
| 1081 | for (i = 0; ptr < end;) | ||
| 1082 | { | ||
| 1083 | /* Distance to next multiple of writesize. */ | ||
| 1084 | nwrite = (((int) ptr + writesize) & -writesize) - (int) ptr; | ||
| 1085 | /* But not beyond specified end. */ | ||
| 1086 | if (nwrite > end - ptr) nwrite = end - ptr; | ||
| 1087 | ret = write (new, ptr, nwrite); | ||
| 1088 | /* If write gets a page fault, it means we reached | ||
| 1089 | a gap between the old text segment and the old data segment. | ||
| 1090 | This gap has probably been remapped into part of the text segment. | ||
| 1091 | So write zeros for it. */ | ||
| 1092 | if (ret == -1 | ||
| 1093 | #ifdef EFAULT | ||
| 1094 | && errno == EFAULT | ||
| 1095 | #endif | ||
| 1096 | ) | ||
| 1097 | { | ||
| 1098 | /* Write only a page of zeros at once, | ||
| 1099 | so that we we don't overshoot the start | ||
| 1100 | of the valid memory in the old data segment. */ | ||
| 1101 | if (nwrite > pagesize) | ||
| 1102 | nwrite = pagesize; | ||
| 1103 | write (new, zeros, nwrite); | ||
| 1104 | } | ||
| 1105 | #if 0 /* Now that we have can ask `write' to write more than a page, | ||
| 1106 | it is legit for write do less than the whole amount specified. */ | ||
| 1107 | else if (nwrite != ret) | ||
| 1108 | { | ||
| 1109 | sprintf (buf, | ||
| 1110 | "unexec write failure: addr 0x%x, fileno %d, size 0x%x, wrote 0x%x, errno %d", | ||
| 1111 | ptr, new, nwrite, ret, errno); | ||
| 1112 | PERROR (buf); | ||
| 1113 | } | ||
| 1114 | #endif | ||
| 1115 | i += nwrite; | ||
| 1116 | ptr += nwrite; | ||
| 1117 | } | ||
| 1118 | } | ||
| 1119 | 1076 | ||
| 1120 | /* **************************************************************** | 1077 | /* **************************************************************** |
| 1121 | * copy_sym | 1078 | * copy_sym |
| @@ -1264,6 +1221,48 @@ adjust_lnnoptrs (writedesc, readdesc, new_name) | |||
| 1264 | 1221 | ||
| 1265 | #endif /* COFF */ | 1222 | #endif /* COFF */ |
| 1266 | 1223 | ||
| 1224 | /* **************************************************************** | ||
| 1225 | * unexec | ||
| 1226 | * | ||
| 1227 | * driving logic. | ||
| 1228 | */ | ||
| 1229 | unexec (new_name, a_name, data_start, bss_start, entry_address) | ||
| 1230 | char *new_name, *a_name; | ||
| 1231 | unsigned data_start, bss_start, entry_address; | ||
| 1232 | { | ||
| 1233 | int new, a_out = -1; | ||
| 1234 | |||
| 1235 | if (a_name && (a_out = open (a_name, O_RDONLY)) < 0) | ||
| 1236 | { | ||
| 1237 | PERROR (a_name); | ||
| 1238 | } | ||
| 1239 | if ((new = creat (new_name, 0666)) < 0) | ||
| 1240 | { | ||
| 1241 | PERROR (new_name); | ||
| 1242 | } | ||
| 1243 | |||
| 1244 | if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_name) < 0 | ||
| 1245 | || copy_text_and_data (new, a_out) < 0 | ||
| 1246 | || copy_sym (new, a_out, a_name, new_name) < 0 | ||
| 1247 | #ifdef COFF | ||
| 1248 | #ifndef COFF_BSD_SYMBOLS | ||
| 1249 | || adjust_lnnoptrs (new, a_out, new_name) < 0 | ||
| 1250 | #endif | ||
| 1251 | #endif | ||
| 1252 | ) | ||
| 1253 | { | ||
| 1254 | close (new); | ||
| 1255 | /* unlink (new_name); /* Failed, unlink new a.out */ | ||
| 1256 | return -1; | ||
| 1257 | } | ||
| 1258 | |||
| 1259 | close (new); | ||
| 1260 | if (a_out >= 0) | ||
| 1261 | close (a_out); | ||
| 1262 | mark_x (new_name); | ||
| 1263 | return 0; | ||
| 1264 | } | ||
| 1265 | |||
| 1267 | #endif /* not CANNOT_DUMP */ | 1266 | #endif /* not CANNOT_DUMP */ |
| 1268 | 1267 | ||
| 1269 | /* arch-tag: 62409b69-e27a-4a7c-9413-0210d6b54e7f | 1268 | /* arch-tag: 62409b69-e27a-4a7c-9413-0210d6b54e7f |
diff --git a/src/xdisp.c b/src/xdisp.c index b08029b5b7f..68aeae2aea0 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -3722,7 +3722,8 @@ handle_single_display_spec (it, spec, object, position, | |||
| 3722 | if (CONSP (XCDR (XCDR (spec)))) | 3722 | if (CONSP (XCDR (XCDR (spec)))) |
| 3723 | { | 3723 | { |
| 3724 | Lisp_Object face_name = XCAR (XCDR (XCDR (spec))); | 3724 | Lisp_Object face_name = XCAR (XCDR (XCDR (spec))); |
| 3725 | int face_id2 = lookup_named_face (it->f, face_name, 'A', 0); | 3725 | int face_id2 = lookup_derived_face (it->f, face_name, |
| 3726 | 'A', FRINGE_FACE_ID, 0); | ||
| 3726 | if (face_id2 >= 0) | 3727 | if (face_id2 >= 0) |
| 3727 | face_id = face_id2; | 3728 | face_id = face_id2; |
| 3728 | } | 3729 | } |
diff --git a/src/xfaces.c b/src/xfaces.c index f09e1f31342..f237e0630b6 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -5778,7 +5778,7 @@ face_with_height (f, face_id, height) | |||
| 5778 | is assumed to be already realized. */ | 5778 | is assumed to be already realized. */ |
| 5779 | 5779 | ||
| 5780 | int | 5780 | int |
| 5781 | lookup_derived_face (f, symbol, c, face_id) | 5781 | lookup_derived_face (f, symbol, c, face_id, signal_p) |
| 5782 | struct frame *f; | 5782 | struct frame *f; |
| 5783 | Lisp_Object symbol; | 5783 | Lisp_Object symbol; |
| 5784 | int c; | 5784 | int c; |
| @@ -5791,7 +5791,7 @@ lookup_derived_face (f, symbol, c, face_id) | |||
| 5791 | if (!default_face) | 5791 | if (!default_face) |
| 5792 | abort (); | 5792 | abort (); |
| 5793 | 5793 | ||
| 5794 | get_lface_attributes (f, symbol, symbol_attrs, 1); | 5794 | get_lface_attributes (f, symbol, symbol_attrs, signal_p); |
| 5795 | bcopy (default_face->lface, attrs, sizeof attrs); | 5795 | bcopy (default_face->lface, attrs, sizeof attrs); |
| 5796 | merge_face_vectors (f, symbol_attrs, attrs, 0); | 5796 | merge_face_vectors (f, symbol_attrs, attrs, 0); |
| 5797 | return lookup_face (f, attrs, c, default_face); | 5797 | return lookup_face (f, attrs, c, default_face); |
| @@ -7740,7 +7740,7 @@ merge_faces (f, face_name, face_id, base_face_id) | |||
| 7740 | if (face_id < 0 || face_id >= lface_id_to_name_size) | 7740 | if (face_id < 0 || face_id >= lface_id_to_name_size) |
| 7741 | return base_face_id; | 7741 | return base_face_id; |
| 7742 | face_name = lface_id_to_name[face_id]; | 7742 | face_name = lface_id_to_name[face_id]; |
| 7743 | face_id = lookup_derived_face (f, face_name, 0, base_face_id); | 7743 | face_id = lookup_derived_face (f, face_name, 0, base_face_id, 1); |
| 7744 | if (face_id >= 0) | 7744 | if (face_id >= 0) |
| 7745 | return face_id; | 7745 | return face_id; |
| 7746 | return base_face_id; | 7746 | return base_face_id; |
diff --git a/src/xrdb.c b/src/xrdb.c index e4d8b34cab7..852fa2b808c 100644 --- a/src/xrdb.c +++ b/src/xrdb.c | |||
| @@ -527,11 +527,9 @@ x_load_resources (display, xrm_string, myname, myclass) | |||
| 527 | XrmDatabase rdb; | 527 | XrmDatabase rdb; |
| 528 | XrmDatabase db; | 528 | XrmDatabase db; |
| 529 | char line[256]; | 529 | char line[256]; |
| 530 | #ifdef HAVE_X_I18N | 530 | |
| 531 | char *helv = "-*-helvetica-medium-r-*--*-120-*-*-*-*,*"; | ||
| 532 | #else | ||
| 533 | char *helv = "-*-helvetica-medium-r-*--*-120-*-*-*-*-iso8859-1"; | 531 | char *helv = "-*-helvetica-medium-r-*--*-120-*-*-*-*-iso8859-1"; |
| 534 | #endif | 532 | |
| 535 | #ifdef USE_MOTIF | 533 | #ifdef USE_MOTIF |
| 536 | char *courier = "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1"; | 534 | char *courier = "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1"; |
| 537 | extern Lisp_Object Vdouble_click_time; | 535 | extern Lisp_Object Vdouble_click_time; |