aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKaroly Lorentey2005-03-23 10:40:00 +0000
committerKaroly Lorentey2005-03-23 10:40:00 +0000
commit76acbdc50490034f233bc78d14a7cd5717d9432e (patch)
tree9b46877d371dad83ff6cdad30cd69df2a050de7d /src
parent335fcf6c2f6ae8990d8c62589cfb3558c3f38bc0 (diff)
parent8725c7925ef1ce95efb1f50d48d17f437e9c46a4 (diff)
downloademacs-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/ChangeLog45
-rw-r--r--src/dispextern.h2
-rw-r--r--src/frame.c27
-rw-r--r--src/fringe.c6
-rw-r--r--src/keyboard.c23
-rw-r--r--src/msdos.c8
-rw-r--r--src/s/openbsd.h7
-rw-r--r--src/textprop.c18
-rw-r--r--src/unexec.c195
-rw-r--r--src/xdisp.c3
-rw-r--r--src/xfaces.c6
-rw-r--r--src/xrdb.c6
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 @@
12005-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
132005-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
172005-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
272005-03-21 Thien-Thi Nguyen <ttn@gnu.org>
28
29 * s/openbsd.h (LD_SWITCH_SYSTEM_tmp): Define if undefined.
30
312005-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
392005-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
12005-03-18 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> 442005-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 *));
2770int lookup_named_face P_ ((struct frame *, Lisp_Object, int, int)); 2770int lookup_named_face P_ ((struct frame *, Lisp_Object, int, int));
2771int smaller_face P_ ((struct frame *, int, int)); 2771int smaller_face P_ ((struct frame *, int, int));
2772int face_with_height P_ ((struct frame *, int, int)); 2772int face_with_height P_ ((struct frame *, int, int));
2773int lookup_derived_face P_ ((struct frame *, Lisp_Object, int, int)); 2773int lookup_derived_face P_ ((struct frame *, Lisp_Object, int, int, int));
2774void init_frame_faces P_ ((struct frame *)); 2774void init_frame_faces P_ ((struct frame *));
2775void free_frame_faces P_ ((struct frame *)); 2775void free_frame_faces P_ ((struct frame *));
2776void recompute_basic_faces P_ ((struct frame *)); 2776void 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
946DEFUN ("ignore-event", Fignore_event, Signore_event, 0, 0, "",
947 doc: /* Do nothing.
948This 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
972DEFUN ("selected-frame", Fselected_frame, Sselected_frame, 0, 0, 0, 946DEFUN ("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 ();
368static void mark_x (); 368static void mark_x ();
369 369
370/* **************************************************************** 370/* ****************************************************************
371 * unexec
372 *
373 * driving logic.
374 */
375unexec (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
796write_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
1064write_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 */
1229unexec (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
5780int 5780int
5781lookup_derived_face (f, symbol, c, face_id) 5781lookup_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;