diff options
| author | Miles Bader | 2008-07-17 23:18:58 +0000 |
|---|---|---|
| committer | Miles Bader | 2008-07-17 23:18:58 +0000 |
| commit | 08b3caa982199bd7939d9d6877203ada5d0083b5 (patch) | |
| tree | eef15d8191132d316d1e1125cb7e2878a4782ca3 /src | |
| parent | 8d59c5ed4480037bcc953bd28a9165990fdd002e (diff) | |
| parent | 69955d31c4b59034d3429b14ca9f33ea102dde73 (diff) | |
| download | emacs-08b3caa982199bd7939d9d6877203ada5d0083b5.tar.gz emacs-08b3caa982199bd7939d9d6877203ada5d0083b5.zip | |
Merge from emacs--rel--22
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1339
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 30 | ||||
| -rw-r--r-- | src/Makefile.in | 19 | ||||
| -rw-r--r-- | src/gtkutil.c | 2 | ||||
| -rw-r--r-- | src/lisp.h | 1 | ||||
| -rw-r--r-- | src/macfns.c | 6 | ||||
| -rw-r--r-- | src/macterm.c | 12 | ||||
| -rw-r--r-- | src/macterm.h | 5 | ||||
| -rw-r--r-- | src/mactoolbox.c | 7 | ||||
| -rw-r--r-- | src/process.c | 48 | ||||
| -rw-r--r-- | src/s/darwin.h | 3 |
10 files changed, 101 insertions, 32 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index b561ceb73f5..3db5a7d4e19 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,33 @@ | |||
| 1 | 2008-07-17 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 2 | |||
| 3 | * gtkutil.c: Include <config.h> instead of "config.h". | ||
| 4 | |||
| 5 | * lisp.h (Foverlay_buffer): Add EXFUN. | ||
| 6 | |||
| 7 | * process.c (create_process) [!WINDOWSNT && FD_CLOEXEC]: Wait for | ||
| 8 | child process to complete child_setup. Undo 2005-09-21 change. | ||
| 9 | |||
| 10 | * s/darwin.h: Mention setsid after vfork. | ||
| 11 | |||
| 12 | 2008-07-17 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 13 | |||
| 14 | * Makefile.in (frame.o, keyboard.o, xdisp.o, xfaces.o): | ||
| 15 | Depend on macgui.h. | ||
| 16 | |||
| 17 | * macfns.c (Fx_server_version): Don't use gestaltSystemVersionMajor, | ||
| 18 | gestaltSystemVersionMinor, or gestaltSystemVersionBugFix. | ||
| 19 | |||
| 20 | * macterm.c (keycode_to_xkeysym_table): Add entries for f17, f18, | ||
| 21 | and f19. | ||
| 22 | [MAC_OSX] (fn_keycode_to_keycode_table): Likewise. | ||
| 23 | |||
| 24 | * macterm.h (gestaltSystemVersionMajor, gestaltSystemVersionMinor) | ||
| 25 | (gestaltSystemVersionBugFix) [MAC_OS_X_VERSION_MAX_ALLOWED < 1040]: | ||
| 26 | Remove enumerators. | ||
| 27 | |||
| 28 | * mactoolbox.c [USE_MAC_TSM] (mac_handle_text_input_event): | ||
| 29 | Check if FACE_FROM_ID returns NULL. | ||
| 30 | |||
| 1 | 2008-07-17 David Robinow <drobinow@gmail.com> (tiny change) | 31 | 2008-07-17 David Robinow <drobinow@gmail.com> (tiny change) |
| 2 | 32 | ||
| 3 | * w32inevt.c (change_frame_size): Remove extern declaration. | 33 | * w32inevt.c (change_frame_size): Remove extern declaration. |
diff --git a/src/Makefile.in b/src/Makefile.in index 93890de5669..f1d8297e189 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -1103,8 +1103,9 @@ filelock.o: filelock.c buffer.h character.h charset.h coding.h systime.h \ | |||
| 1103 | epaths.h $(config_h) | 1103 | epaths.h $(config_h) |
| 1104 | filemode.o: filemode.c $(config_h) | 1104 | filemode.o: filemode.c $(config_h) |
| 1105 | frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \ | 1105 | frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \ |
| 1106 | blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h \ | 1106 | blockinput.h atimer.h systime.h buffer.h character.h fontset.h font.h \ |
| 1107 | msdos.h dosfns.h dispextern.h w32term.h macterm.h termchar.h $(config_h) | 1107 | msdos.h dosfns.h dispextern.h w32term.h macterm.h macgui.h termchar.h \ |
| 1108 | $(config_h) | ||
| 1108 | fringe.o: fringe.c dispextern.h frame.h window.h buffer.h termhooks.h $(config_h) | 1109 | fringe.o: fringe.c dispextern.h frame.h window.h buffer.h termhooks.h $(config_h) |
| 1109 | font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \ | 1110 | font.o: font.c dispextern.h frame.h window.h ccl.h character.h charset.h \ |
| 1110 | font.h $(config_h) | 1111 | font.h $(config_h) |
| @@ -1122,8 +1123,8 @@ insdel.o: insdel.c window.h buffer.h $(INTERVAL_SRC) blockinput.h character.h \ | |||
| 1122 | dispextern.h atimer.h systime.h region-cache.h $(config_h) | 1123 | dispextern.h atimer.h systime.h region-cache.h $(config_h) |
| 1123 | keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \ | 1124 | keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \ |
| 1124 | commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \ | 1125 | commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \ |
| 1125 | systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h \ | 1126 | systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h atimer.h \ |
| 1126 | atimer.h xterm.h puresize.h msdos.h keymap.h w32term.h macterm.h nsterm.h \ | 1127 | xterm.h puresize.h msdos.h keymap.h w32term.h macterm.h macgui.h nsterm.h \ |
| 1127 | $(config_h) | 1128 | $(config_h) |
| 1128 | keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \ | 1129 | keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \ |
| 1129 | atimer.h systime.h puresize.h character.h intervals.h keymap.h window.h \ | 1130 | atimer.h systime.h puresize.h character.h intervals.h keymap.h window.h \ |
| @@ -1190,16 +1191,16 @@ widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \ | |||
| 1190 | window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \ | 1191 | window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \ |
| 1191 | disptab.h keyboard.h dispextern.h msdos.h composite.h \ | 1192 | disptab.h keyboard.h dispextern.h msdos.h composite.h \ |
| 1192 | keymap.h blockinput.h atimer.h systime.h $(INTERVAL_SRC) \ | 1193 | keymap.h blockinput.h atimer.h systime.h $(INTERVAL_SRC) \ |
| 1193 | xterm.h w32term.h macterm.h nsterm.h $(config_h) | 1194 | xterm.h w32term.h macterm.h macgui.h nsterm.h $(config_h) |
| 1194 | xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \ | 1195 | xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \ |
| 1195 | coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \ | 1196 | coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \ |
| 1196 | charset.h $(config_h) keyboard.h $(INTERVAL_SRC) region-cache.h xterm.h \ | 1197 | charset.h $(config_h) keyboard.h $(INTERVAL_SRC) region-cache.h xterm.h \ |
| 1197 | w32term.h macterm.h nsterm.h msdos.h composite.h fontset.h blockinput.h \ | 1198 | w32term.h macterm.h macgui.h nsterm.h msdos.h composite.h fontset.h \ |
| 1198 | atimer.h systime.h keymap.h font.h | 1199 | blockinput.h atimer.h systime.h keymap.h font.h |
| 1199 | xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \ | 1200 | xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \ |
| 1200 | window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \ | 1201 | window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \ |
| 1201 | systime.h keyboard.h fontset.h w32term.h macterm.h nsterm.h $(INTERVAL_SRC) \ | 1202 | systime.h keyboard.h fontset.h w32term.h macterm.h macgui.h nsterm.h \ |
| 1202 | termchar.h termhooks.h font.h $(config_h) | 1203 | $(INTERVAL_SRC) termchar.h termhooks.h font.h $(config_h) |
| 1203 | xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \ | 1204 | xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \ |
| 1204 | $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \ | 1205 | $(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \ |
| 1205 | character.h charset.h coding.h gtkutil.h $(config_h) termhooks.h \ | 1206 | character.h charset.h coding.h gtkutil.h $(config_h) termhooks.h \ |
diff --git a/src/gtkutil.c b/src/gtkutil.c index 996d3f49892..578e9737f39 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c | |||
| @@ -17,7 +17,7 @@ GNU General Public License for more details. | |||
| 17 | You should have received a copy of the GNU General Public License | 17 | You should have received a copy of the GNU General Public License |
| 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | 18 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
| 19 | 19 | ||
| 20 | #include "config.h" | 20 | #include <config.h> |
| 21 | 21 | ||
| 22 | #ifdef USE_GTK | 22 | #ifdef USE_GTK |
| 23 | #include <string.h> | 23 | #include <string.h> |
diff --git a/src/lisp.h b/src/lisp.h index 7a0d2088f13..58fef2efff0 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -2850,6 +2850,7 @@ extern char *no_switch_window P_ ((Lisp_Object window)); | |||
| 2850 | EXFUN (Fset_buffer_multibyte, 1); | 2850 | EXFUN (Fset_buffer_multibyte, 1); |
| 2851 | EXFUN (Foverlay_start, 1); | 2851 | EXFUN (Foverlay_start, 1); |
| 2852 | EXFUN (Foverlay_end, 1); | 2852 | EXFUN (Foverlay_end, 1); |
| 2853 | EXFUN (Foverlay_buffer, 1); | ||
| 2853 | extern void adjust_overlays_for_insert P_ ((EMACS_INT, EMACS_INT)); | 2854 | extern void adjust_overlays_for_insert P_ ((EMACS_INT, EMACS_INT)); |
| 2854 | extern void adjust_overlays_for_delete P_ ((EMACS_INT, EMACS_INT)); | 2855 | extern void adjust_overlays_for_delete P_ ((EMACS_INT, EMACS_INT)); |
| 2855 | extern void fix_start_end_in_overlays P_ ((int, int)); | 2856 | extern void fix_start_end_in_overlays P_ ((int, int)); |
diff --git a/src/macfns.c b/src/macfns.c index 7bf50b3a684..cb1e74c15f8 100644 --- a/src/macfns.c +++ b/src/macfns.c | |||
| @@ -2936,11 +2936,11 @@ If omitted or nil, that stands for the selected frame's display. */) | |||
| 2936 | { | 2936 | { |
| 2937 | if (response >= 0x00001040) | 2937 | if (response >= 0x00001040) |
| 2938 | { | 2938 | { |
| 2939 | err = Gestalt (gestaltSystemVersionMajor, &major); | 2939 | err = Gestalt ('sys1', &major); |
| 2940 | if (err == noErr) | 2940 | if (err == noErr) |
| 2941 | err = Gestalt (gestaltSystemVersionMinor, &minor); | 2941 | err = Gestalt ('sys2', &minor); |
| 2942 | if (err == noErr) | 2942 | if (err == noErr) |
| 2943 | err = Gestalt (gestaltSystemVersionBugFix, &bugfix); | 2943 | err = Gestalt ('sys3', &bugfix); |
| 2944 | } | 2944 | } |
| 2945 | else | 2945 | else |
| 2946 | { | 2946 | { |
diff --git a/src/macterm.c b/src/macterm.c index b20857317d9..a387faa7d4d 100644 --- a/src/macterm.c +++ b/src/macterm.c | |||
| @@ -9789,12 +9789,12 @@ static const unsigned char keycode_to_xkeysym_table[] = { | |||
| 9789 | /*0x38*/ 0, 0, 0, 0, | 9789 | /*0x38*/ 0, 0, 0, 0, |
| 9790 | /*0x3C*/ 0, 0, 0, 0, | 9790 | /*0x3C*/ 0, 0, 0, 0, |
| 9791 | 9791 | ||
| 9792 | /*0x40*/ 0, 0xae /*kp-decimal*/, 0, 0xaa /*kp-multiply*/, | 9792 | /*0x40*/ 0xce /*f17*/, 0xae /*kp-decimal*/, 0, 0xaa /*kp-multiply*/, |
| 9793 | /*0x44*/ 0, 0xab /*kp-add*/, 0, 0x0b /*clear*/, | 9793 | /*0x44*/ 0, 0xab /*kp-add*/, 0, 0x0b /*clear*/, |
| 9794 | /*0x48*/ 0, 0, 0, 0xaf /*kp-divide*/, | 9794 | /*0x48*/ 0, 0, 0, 0xaf /*kp-divide*/, |
| 9795 | /*0x4C*/ 0x8d /*kp-enter*/, 0, 0xad /*kp-subtract*/, 0, | 9795 | /*0x4C*/ 0x8d /*kp-enter*/, 0, 0xad /*kp-subtract*/, 0xcf /*f18*/, |
| 9796 | 9796 | ||
| 9797 | /*0x50*/ 0, 0xbd /*kp-equal*/, 0xb0 /*kp-0*/, 0xb1 /*kp-1*/, | 9797 | /*0x50*/ 0xd0 /*f19*/, 0xbd /*kp-equal*/, 0xb0 /*kp-0*/, 0xb1 /*kp-1*/, |
| 9798 | /*0x54*/ 0xb2 /*kp-2*/, 0xb3 /*kp-3*/, 0xb4 /*kp-4*/, 0xb5 /*kp-5*/, | 9798 | /*0x54*/ 0xb2 /*kp-2*/, 0xb3 /*kp-3*/, 0xb4 /*kp-4*/, 0xb5 /*kp-5*/, |
| 9799 | /*0x58*/ 0xb6 /*kp-6*/, 0xb7 /*kp-7*/, 0, 0xb8 /*kp-8*/, | 9799 | /*0x58*/ 0xb6 /*kp-6*/, 0xb7 /*kp-7*/, 0, 0xb8 /*kp-8*/, |
| 9800 | /*0x5C*/ 0xb9 /*kp-9*/, 0, 0, 0, | 9800 | /*0x5C*/ 0xb9 /*kp-9*/, 0, 0, 0, |
| @@ -9826,12 +9826,12 @@ static const unsigned char fn_keycode_to_keycode_table[] = { | |||
| 9826 | /*0x38*/ 0, 0, 0, 0, | 9826 | /*0x38*/ 0, 0, 0, 0, |
| 9827 | /*0x3C*/ 0, 0, 0, 0, | 9827 | /*0x3C*/ 0, 0, 0, 0, |
| 9828 | 9828 | ||
| 9829 | /*0x40*/ 0, 0x2f /*kp-decimal -> '.'*/, 0, 0x23 /*kp-multiply -> 'p'*/, | 9829 | /*0x40*/ 0x40 /*f17 = f17*/, 0x2f /*kp-decimal -> '.'*/, 0, 0x23 /*kp-multiply -> 'p'*/, |
| 9830 | /*0x44*/ 0, 0x2c /*kp-add -> '/'*/, 0, 0x16 /*clear -> '6'*/, | 9830 | /*0x44*/ 0, 0x2c /*kp-add -> '/'*/, 0, 0x16 /*clear -> '6'*/, |
| 9831 | /*0x48*/ 0, 0, 0, 0x1d /*kp-/ -> '0'*/, | 9831 | /*0x48*/ 0, 0, 0, 0x1d /*kp-/ -> '0'*/, |
| 9832 | /*0x4C*/ 0x24 /*kp-enter -> return*/, 0, 0x29 /*kp-subtract -> ';'*/, 0, | 9832 | /*0x4C*/ 0x24 /*kp-enter -> return*/, 0, 0x29 /*kp-subtract -> ';'*/, 0x4f /*f18 = f18*/, |
| 9833 | 9833 | ||
| 9834 | /*0x50*/ 0, 0x1b /*kp-equal -> '-'*/, 0x2e /*kp-0 -> 'm'*/, 0x26 /*kp-1 -> 'j'*/, | 9834 | /*0x50*/ 0x50 /*f19 = f19*/, 0x1b /*kp-equal -> '-'*/, 0x2e /*kp-0 -> 'm'*/, 0x26 /*kp-1 -> 'j'*/, |
| 9835 | /*0x54*/ 0x28 /*kp-2 -> 'k'*/, 0x25 /*kp-3 -> 'l'*/, 0x20 /*kp-4 -> 'u'*/, 0x22 /*kp-5 ->'i'*/, | 9835 | /*0x54*/ 0x28 /*kp-2 -> 'k'*/, 0x25 /*kp-3 -> 'l'*/, 0x20 /*kp-4 -> 'u'*/, 0x22 /*kp-5 ->'i'*/, |
| 9836 | /*0x58*/ 0x1f /*kp-6 -> 'o'*/, 0x1a /*kp-7 -> '7'*/, 0, 0x1c /*kp-8 -> '8'*/, | 9836 | /*0x58*/ 0x1f /*kp-6 -> 'o'*/, 0x1a /*kp-7 -> '7'*/, 0, 0x1c /*kp-8 -> '8'*/, |
| 9837 | /*0x5C*/ 0x19 /*kp-9 -> '9'*/, 0, 0, 0, | 9837 | /*0x5C*/ 0x19 /*kp-9 -> '9'*/, 0, 0, 0, |
diff --git a/src/macterm.h b/src/macterm.h index 24c57ae12f8..148f073e4ab 100644 --- a/src/macterm.h +++ b/src/macterm.h | |||
| @@ -575,6 +575,10 @@ enum { | |||
| 575 | }; | 575 | }; |
| 576 | #endif | 576 | #endif |
| 577 | 577 | ||
| 578 | #if 0 | ||
| 579 | /* We can't determine the availability of these enumerators by | ||
| 580 | MAC_OS_X_VERSION_MAX_ALLOWED, because they are defined in | ||
| 581 | MacOSX10.3.9.sdk for Mac OS X 10.4, but not in Mac OS X 10.3. */ | ||
| 578 | #if MAC_OS_X_VERSION_MAX_ALLOWED < 1040 | 582 | #if MAC_OS_X_VERSION_MAX_ALLOWED < 1040 |
| 579 | /* Gestalt selectors */ | 583 | /* Gestalt selectors */ |
| 580 | enum { | 584 | enum { |
| @@ -583,6 +587,7 @@ enum { | |||
| 583 | gestaltSystemVersionBugFix = 'sys3' | 587 | gestaltSystemVersionBugFix = 'sys3' |
| 584 | }; | 588 | }; |
| 585 | #endif | 589 | #endif |
| 590 | #endif | ||
| 586 | 591 | ||
| 587 | #ifdef MAC_OSX | 592 | #ifdef MAC_OSX |
| 588 | #if MAC_OS_X_VERSION_MAX_ALLOWED < 1020 | 593 | #if MAC_OS_X_VERSION_MAX_ALLOWED < 1020 |
diff --git a/src/mactoolbox.c b/src/mactoolbox.c index a73578d5205..c6e5f8bcf8a 100644 --- a/src/mactoolbox.c +++ b/src/mactoolbox.c | |||
| @@ -573,7 +573,7 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 573 | int hpos, vpos, x, y; | 573 | int hpos, vpos, x, y; |
| 574 | struct glyph_row *row; | 574 | struct glyph_row *row; |
| 575 | struct glyph *glyph; | 575 | struct glyph *glyph; |
| 576 | XFontStruct *font; | 576 | struct face *face; |
| 577 | 577 | ||
| 578 | f = mac_focus_frame (&one_mac_display_info); | 578 | f = mac_focus_frame (&one_mac_display_info); |
| 579 | w = XWINDOW (f->selected_window); | 579 | w = XWINDOW (f->selected_window); |
| @@ -598,9 +598,10 @@ mac_handle_text_input_event (next_handler, event, data) | |||
| 598 | + row->visible_height | 598 | + row->visible_height |
| 599 | + f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f)); | 599 | + f->top_pos + FRAME_OUTER_TO_INNER_DIFF_Y (f)); |
| 600 | 600 | ||
| 601 | font = FACE_FROM_ID (f, glyph->face_id)->font; | 601 | face = FACE_FROM_ID (f, glyph->face_id); |
| 602 | if (font) | 602 | if (face && face->font) |
| 603 | { | 603 | { |
| 604 | XFontStruct *font = face->font; | ||
| 604 | Fixed point_size = Long2Fix (font->mac_fontsize); | 605 | Fixed point_size = Long2Fix (font->mac_fontsize); |
| 605 | short height = row->visible_height; | 606 | short height = row->visible_height; |
| 606 | short ascent = row->ascent; | 607 | short ascent = row->ascent; |
diff --git a/src/process.c b/src/process.c index 0a6e9f302be..0878051f733 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -1851,6 +1851,9 @@ create_process (process, new_argv, current_dir) | |||
| 1851 | int inchannel, outchannel; | 1851 | int inchannel, outchannel; |
| 1852 | pid_t pid; | 1852 | pid_t pid; |
| 1853 | int sv[2]; | 1853 | int sv[2]; |
| 1854 | #if !defined (WINDOWSNT) && defined (FD_CLOEXEC) | ||
| 1855 | int wait_child_setup[2]; | ||
| 1856 | #endif | ||
| 1854 | #ifdef POSIX_SIGNALS | 1857 | #ifdef POSIX_SIGNALS |
| 1855 | sigset_t procmask; | 1858 | sigset_t procmask; |
| 1856 | sigset_t blocked; | 1859 | sigset_t blocked; |
| @@ -1924,6 +1927,25 @@ create_process (process, new_argv, current_dir) | |||
| 1924 | forkin = sv[0]; | 1927 | forkin = sv[0]; |
| 1925 | } | 1928 | } |
| 1926 | 1929 | ||
| 1930 | #if !defined (WINDOWSNT) && defined (FD_CLOEXEC) | ||
| 1931 | { | ||
| 1932 | int tem; | ||
| 1933 | |||
| 1934 | tem = pipe (wait_child_setup); | ||
| 1935 | if (tem < 0) | ||
| 1936 | report_file_error ("Creating pipe", Qnil); | ||
| 1937 | tem = fcntl (wait_child_setup[1], F_GETFD, 0); | ||
| 1938 | if (tem >= 0) | ||
| 1939 | tem = fcntl (wait_child_setup[1], F_SETFD, tem | FD_CLOEXEC); | ||
| 1940 | if (tem < 0) | ||
| 1941 | { | ||
| 1942 | emacs_close (wait_child_setup[0]); | ||
| 1943 | emacs_close (wait_child_setup[1]); | ||
| 1944 | report_file_error ("Setting file descriptor flags", Qnil); | ||
| 1945 | } | ||
| 1946 | } | ||
| 1947 | #endif | ||
| 1948 | |||
| 1927 | #if 0 | 1949 | #if 0 |
| 1928 | /* Replaced by close_process_descs */ | 1950 | /* Replaced by close_process_descs */ |
| 1929 | set_exclusive_use (inchannel); | 1951 | set_exclusive_use (inchannel); |
| @@ -2158,6 +2180,9 @@ create_process (process, new_argv, current_dir) | |||
| 2158 | pid = child_setup (xforkin, xforkout, xforkout, | 2180 | pid = child_setup (xforkin, xforkout, xforkout, |
| 2159 | new_argv, 1, current_dir); | 2181 | new_argv, 1, current_dir); |
| 2160 | #else /* not WINDOWSNT */ | 2182 | #else /* not WINDOWSNT */ |
| 2183 | #ifdef FD_CLOEXEC | ||
| 2184 | emacs_close (wait_child_setup[0]); | ||
| 2185 | #endif | ||
| 2161 | child_setup (xforkin, xforkout, xforkout, | 2186 | child_setup (xforkin, xforkout, xforkout, |
| 2162 | new_argv, 1, current_dir); | 2187 | new_argv, 1, current_dir); |
| 2163 | #endif /* not WINDOWSNT */ | 2188 | #endif /* not WINDOWSNT */ |
| @@ -2211,6 +2236,20 @@ create_process (process, new_argv, current_dir) | |||
| 2211 | else | 2236 | else |
| 2212 | #endif | 2237 | #endif |
| 2213 | XPROCESS (process)->tty_name = Qnil; | 2238 | XPROCESS (process)->tty_name = Qnil; |
| 2239 | |||
| 2240 | #if !defined (WINDOWSNT) && defined (FD_CLOEXEC) | ||
| 2241 | /* Wait for child_setup to complete in case that vfork is | ||
| 2242 | actually defined as fork. The descriptor wait_child_setup[1] | ||
| 2243 | of a pipe is closed at the child side either by close-on-exec | ||
| 2244 | on successful execvp or the _exit call in child_setup. */ | ||
| 2245 | { | ||
| 2246 | char dummy; | ||
| 2247 | |||
| 2248 | emacs_close (wait_child_setup[1]); | ||
| 2249 | emacs_read (wait_child_setup[0], &dummy, 1); | ||
| 2250 | emacs_close (wait_child_setup[0]); | ||
| 2251 | } | ||
| 2252 | #endif | ||
| 2214 | } | 2253 | } |
| 2215 | 2254 | ||
| 2216 | /* Restore the signal state whether vfork succeeded or not. | 2255 | /* Restore the signal state whether vfork succeeded or not. |
| @@ -4666,15 +4705,6 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display, | |||
| 4666 | #endif | 4705 | #endif |
| 4667 | 4706 | ||
| 4668 | Atemp = input_wait_mask; | 4707 | Atemp = input_wait_mask; |
| 4669 | #if 0 | ||
| 4670 | /* On Mac OS X 10.0, the SELECT system call always says input is | ||
| 4671 | present (for reading) at stdin, even when none is. This | ||
| 4672 | causes the call to SELECT below to return 1 and | ||
| 4673 | status_notify not to be called. As a result output of | ||
| 4674 | subprocesses are incorrectly discarded. | ||
| 4675 | */ | ||
| 4676 | FD_CLR (0, &Atemp); | ||
| 4677 | #endif | ||
| 4678 | IF_NON_BLOCKING_CONNECT (Ctemp = connect_wait_mask); | 4708 | IF_NON_BLOCKING_CONNECT (Ctemp = connect_wait_mask); |
| 4679 | 4709 | ||
| 4680 | EMACS_SET_SECS_USECS (timeout, 0, 0); | 4710 | EMACS_SET_SECS_USECS (timeout, 0, 0); |
diff --git a/src/s/darwin.h b/src/s/darwin.h index 73b7aade95f..75afe67380c 100644 --- a/src/s/darwin.h +++ b/src/s/darwin.h | |||
| @@ -268,7 +268,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 268 | 268 | ||
| 269 | /* The following solves the problem that Emacs hangs when evaluating | 269 | /* The following solves the problem that Emacs hangs when evaluating |
| 270 | (make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile | 270 | (make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile |
| 271 | does not exist. */ | 271 | does not exist. Also, setsid is not allowed in the vfork child's |
| 272 | context as of Darwin 9/Mac OS X 10.5. */ | ||
| 272 | #undef HAVE_WORKING_VFORK | 273 | #undef HAVE_WORKING_VFORK |
| 273 | #define vfork fork | 274 | #define vfork fork |
| 274 | 275 | ||