Commit graph

33787 commits

Author SHA1 Message Date
Chong Yidong
209c6a58b9 * process.c (wait_reading_process_output): Revert previous change. 2012-11-05 12:00:58 +08:00
Paul Eggert
dd0333b615 Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid.
This removes code that has been obsolete since around 1990.
* admin/CPP-DEFINES (HAVE_SETPGID, HAVE_SETSID, SETPGRP_RELEASES_CTTY):
Remove; obsolete.
* configure.ac (setpgid, setsid): Assume their existence.
(AC_FUNC_GETPGRP, SETPGRP_RELEASES_CTTY): Remove; obsolete.
* src/callproc.c (Fcall_process):
* src/emacs.c (main):
* src/process.c (create_process):
* src/term.c (dissociate_if_controlling_tty):
Assume setsid exists.
* src/callproc.c (child_setup): Assume setpgid exists and behaves as
per POSIX.1-1988 or later.
* src/conf_post.h (setpgid) [!HAVE_SETPGID]: Remove.
* src/emacs.c (shut_down_emacs):
* src/sysdep.c (sys_suspend, init_foreground_group):
Assume getpgrp behaves as per POSIX.1-1998 or later.
* src/msdos.c (setpgrp): Remove.
(tcgetpgrp, setpgid, setsid): New functions.
* src/systty.h (EMACS_GETPGRP): Remove.  All callers now use getpgrp.
* src/term.c (no_controlling_tty): Remove; unused.
* src/w32proc.c (setpgrp): Remove.
(setsid, tcgetpgrp): New functions.

Fixes: debbugs:12800
2012-11-04 19:18:32 -08:00
Paul Eggert
8148369cfb Simplify by assuming __fpending.
Now that Emacs is using the gnulib fpending module,
there's no need for Emacs to have a separate implementation.
* configure.ac (stdio_ext.h, __fpending): Remove now-duplicate checks.
(PENDING_OUTPUT_COUNT, DISPNEW_NEEDS_STDIO_EXT): Remove.
* admin/CPP-DEFINES (PENDING_OUTPUT_COUNT): Remove.
* src/dispnew.c: Include <fpending.h>, not <stdio_ext.h>.
(update_frame_1): Use __fpending, not PENDING_OUTPUT_COUNT.
Do not assume that __fpending's result fits in int.
2012-11-04 17:59:00 -08:00
Paul Eggert
06b63c9b0c Remove EMACS_OUTQSIZE+sleep hack.
* dispnew.c (update_frame_1): Remove hack for terminals slower
than 2400 bps, which throttled Emacs by having it sleep.  This
code hasn't worked since at least 2007, when the multi-tty stuff
was added, and anyway those old terminals are long dead.
* systty.h (EMACS_OUTQSIZE): Remove; unused.  The macro isn't used even
without the dispnew.c change, as dispnew.c doesn't include systty.h.
2012-11-04 14:33:00 -08:00
Paul Eggert
76abf5e5a5 Fix data-loss with --version.
* emacs.c (close_output_streams): Use strerror, not emacs_strerror,
as we can't assume that emacs_strerror is initialized, and strerror
is good enough here.
(main): Invoke atexit earlier, to catch earlier instances of
sending data to stdout and exiting, e.g., "emacs --version >/dev/full".

Fixes: debbugs:9574
2012-11-04 09:29:52 -08:00
Michael Marchionna
8f31e74bc7 * nsterm.m: Add NSClearLineFunctionKey and keypad keys.
(keyDown): Remap keypad keys to X11 virtual key codes.

Fixes: debbugs:8680
2012-11-04 11:34:10 +08:00
Eli Zaretskii
3478f4b5c4 Fix order of entries in ChangeLog files. 2012-11-03 22:48:03 +02:00
Glenn Morris
f58542e151 Merge from emacs-24; up to 2012-11-03T05:11:34Z!dmantipov@yandex.ru 2012-11-03 12:14:22 -07:00
Paul Eggert
7ccfb720b4 Fix data-loss with --batch.
* admin/merge-gnulib (GNULIB_MODULES): Add close-stream.
* lib/close-stream.c, lib/close-stream.h, lib/fpending.c
* lib/fpending.h, m4/close-stream.m4, m4/fpending.m4:
New files, from gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* src/emacs.c: Include <close-stream.h>.
(close_output_streams): New function.
(main): Pass it to atexit, so that Emacs closes stdout and stderr
and handles errors appropriately.
(Fkill_emacs): Don't worry about flushing, as close_output_stream
does that now.

Fixes: debbugs:9574
2012-11-03 11:54:17 -07:00
Paul Eggert
0b3d4a4756 Fix a race condition that causes Emacs to mess up glib.
The symptom is a diagnostic "GLib-WARNING **: In call to
g_spawn_sync(), exit status of a child process was requested but
SIGCHLD action was set to SIG_IGN and ECHILD was received by
waitpid(), so exit status can't be returned."  The diagnostic
is partly wrong, as the SIGCHLD action is not set to SIG_IGN.
The real bug is a race condition between Emacs and glib: Emacs
does a waitpid (-1, ...) and reaps glib's subprocess by mistake,
so that glib can't find it.  Work around the bug by invoking
waitpid only on subprocesses that Emacs itself creates.
* process.c (create_process, record_child_status_change):
Don't use special value -1 in pid field, as the caller now must
know the pid rather than having the callee infer it.  The
inference was sometimes incorrect anyway, due to another race.
(create_process): Set new 'alive' member if child is created.
(process_status_retrieved): New function.
(record_child_status_change): Use it.
Accept negative 1st argument, which means to wait for the
processes that Emacs already knows about.  Move special-case code
for DOS_NT (which lacks WNOHANG) here, from caller.  Keep track of
processes that have already been waited for, by testing and
clearing new 'alive' member.
(CAN_HANDLE_MULTIPLE_CHILDREN): Remove, as record_child_status_change
now does this internally.
(handle_child_signal): Let record_child_status_change do all
the work, since we do not want to reap all exited child processes,
only the child processes that Emacs itself created.
* process.h (Lisp_Process): New boolean member 'alive'.

Fixes: debbugs:8855
2012-11-03 11:32:41 -07:00
Paul Eggert
0d879dca46 Omit duplicate definitions no longer needed with gcc -g3.
* lisp.h (GCTYPEBITS, GCALIGNMENT, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG)
(VALMASK, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM):
Define only as macros.  There's no longer any need to also define
these symbols as enums or as constants, since we now assume
gcc -g3 when debugging.
2012-11-03 11:19:50 -07:00
Chong Yidong
85fabcb7ee * process.c (wait_reading_process_output): Clean up last change. 2012-11-04 00:36:23 +08:00
Chong Yidong
893cc45585 Fix a race condition in wait_reading_process_output (tiny change).
* src/process.c (wait_reading_process_output): Avoid a race condition
with SIGIO delivery.

Fixes: debbugs:11536
2012-11-03 23:44:59 +08:00
Chong Yidong
0f7b074f4a * lisp/cus-start.el: Make cursor-type customizable.
* src/buffer.c (cursor_type): Untabify docstring.

Fixes: debbugs:11633
2012-11-03 23:24:00 +08:00
Eli Zaretskii
858f0f24b1 Adapt MSDOS port to latest changes.
config.bat: Copy lib/execinfo.in.h to lib/execinfo.in-h if needed.

 msdos/sedlibmk.inp: Sync with changes in lib/Makefile.in.
 (HAVE_DECL_ENVIRON, GNULIB_ENVIRON): Edit to require declaration
 through lib/unistd.h.
 msdos/sed1v2.inp: Sync with changes in src/Makefile.in.
 msdos/sed2v2.inp: Sync with changes in src/config.in.

 src/lisp.mk: Adjust comments to the fact that term/internal is now
 loaded from loadup.el.
 src/msdos.c (msdos_abort): Rename from emacs_abort, and make static.
 (msdos_fatal_signal): New function.
 (XMenuActivate): Adjust the call to kbd_buffer_events_waiting to
 its argument list.
 src/conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Define to "inline"
 for GCC versions before 4.
 (emacs_raise): Define to call msdos_fatal_signal.

 lisp/term/pc-win.el: Don't load term/internal from here.
 lisp/loadup.el: Load term/internal from here.
2012-11-03 15:58:33 +02:00
Eli Zaretskii
1d4341f988 Load term/internal from loadup.el. 2012-11-03 15:56:02 +02:00
Eli Zaretskii
b3cf17f695 Adapt the MSDOS build to the latest changes on mainline. 2012-11-03 15:48:33 +02:00
Jan Djärv
ad10696b89 Backport from trunk.
* widget.c (resize_cb): New function.
(EmacsFrameRealize): Add resize_cb as event handler.
(EmacsFrameResize): Check if all is up to date before changing frame
size.

Fixes: debbugs:12733
2012-11-03 12:33:28 +01:00
Eli Zaretskii
67b50ba47b Fix bidi initialization in init_from_display_pos.
src/xdisp.c (init_from_display_pos): Fix initialization of the bidi
 iterator when starting in the middle of a display or overlay
 string.

Fixes: debbugs:12745
2012-11-03 11:25:34 +02:00
Dmitry Antipov
3737fee7e3 * frame.h (struct frame): Drop can_have_scroll_bars member
which is meaningless for a long time.  Adjust comments.
(FRAME_CAN_HAVE_SCROLL_BARS): Remove.
* frame.c, nsfns.m, term.c, w32fns.c, xfns.c: Adjust users.
2012-11-03 09:59:17 +04:00
Dmitry Antipov
b6a9e8b1a2 * window.c (decode_next_window_args): Update window arg after
calling decode_live_window and so fix crash reported at
http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00035.html
by Juanma Barranquero <lekktu@gmail.com>.
(Fwindow_body_width, Fwindow_body_height): Simplify a bit.
* font.c (Ffont_at): Likewise.
2012-11-03 09:11:34 +04:00
Jan Djärv
600d4768d8 * widget.c (resize_cb): New function.
(EmacsFrameRealize): Add resize_cb as event handler.
(EmacsFrameResize): Check if all is up to date before changing frame
size.

Fixes: debbugs:12733
2012-11-01 23:44:53 +01:00
Eli Zaretskii
1005b4b98a Implement backtrace output for fatal errors on MS-Windows.
src/w32fns.c (CaptureStackBackTrace_proc): New typedef.
 (BACKTRACE_LIMIT_MAX): New macro.
 (w32_backtrace): New function.
 (emacs_abort): Use w32_backtrace when the user chooses not to
 attach a debugger.  Update the text of the abort dialog.
2012-11-02 16:00:45 +02:00
Dmitry Antipov
b9e9df47f2 Window-related stuff cleanup here and there.
* dispnew.c (Finternal_show_cursor, Finternal_show_cursor_p):
Use decode_any_window.
* fringe.c (Ffringe_bitmaps_at_pos): Likewise.
* xdisp.c (Fformat_mode_line): Likewise.
* font.c (Ffont_at): Use decode_live_window.
* indent.c (Fcompute_motion, Fvertical_motion): Likewise.
* window.c (decode_next_window_args): Likewise.
(decode_any_window): Remove static.
* window.h (decode_any_window): Add prototype.
* lisp.h (CHECK_VALID_WINDOW, CHECK_LIVE_WINDOW): Move from here...
* window.h: ...to here, redefine via WINDOW_VALID_P and WINDOW_LIVE_P,
respectively.
2012-11-02 14:34:26 +04:00
Dmitry Antipov
2b371ff75d Remove pad from struct input_event.
* termhooks.h (struct input_event): Remove padding field.
Adjust comment.
* keyboard.c (event_to_kboard): Simplify because frame_or_window
member is never cons for a long time.  Adjust comment.
(mark_kboards): Adjust because SELECTION_REQUEST_EVENT and
SELECTION_CLEAR_EVENT has no Lisp_Objects to mark.  Add comment.
* xterm.c (handle_one_xevent): Do not initialize frame_or_window
field of SELECTION_REQUEST_EVENT and SELECTION_CLEAR_EVENT.
2012-11-02 13:44:08 +04:00
Eli Zaretskii
7e8b50d9e5 Fix MS-Windows build broken by fixing bug #12776 on Posix platforms.
src/w32proc.c (getpgrp, setpgid): New functions.

 nt/inc/unistd.h (setpgid, getpgrp): Provide prototypes.
 nt/config.nt (GETPGRP_VOID): Define to 1.
2012-11-01 16:21:45 +02:00
Paul Eggert
5c6ce1c7d0 Spelling fixes. 2012-10-31 12:23:06 -07:00
Paul Eggert
322aea6ddf Fix crash when using Emacs as commit editor for git.
* callproc.c (setpgrp): Remove macro, as we now use setpgid
and it is configured in conf_post.h.
(Fcall_process): Don't invoke both setsid and setpgid; the former
is enough, if it exists.
* callproc.c (Fcall_process, child_setup):
* process.c (create_process): Use setpgid.
* conf_post.h (setpgid) [!HAVE_SETPGID]: New macro, which substitutes
for the real thing.
* dispnew.c (init_display): Initialize the foreground group
if we are running a tty display.
* emacs.c (main): Do not worry about setpgrp; init_display does it now.
* lisp.h (init_foreground_group): New decl.
* sysdep.c (inherited_pgroup): New static var.
(init_foreground_group, tcsetpgrp_without_stopping)
(narrow_foreground_group, widen_foreground_group): New functions.
(init_sys_modes): Narrow foreground group.
(reset_sys_modes): Widen foreground group.

Fixes: debbugs:12697
2012-10-31 10:27:29 -07:00
Michael Albinus
220cb2bd70 * dbusbind.c: Fix cut'n'waste error. Use HAVE_DBUS_VALIDATE_INTERFACE. 2012-10-31 12:45:40 +01:00
Martin Rudalics
218e997a10 Install fixes for Bug#12764 and Bug#12766.
* window.el (quit-restore-window): If the window has been
created on an existing frame and ended up as the sole window on
that frame, do not delete it (Bug#12764).

* minibuf.c (read_minibuf): Restore current buffer since
choose_minibuf_frame calling Fset_frame_selected_window may
change it (Bug#12766).
2012-10-31 11:02:51 +01:00
Jan Djärv
02615da072 * frame.c (Fframe_pixel_height): Fix documentation.
Fixes: debbugs:12733
2012-10-30 19:28:48 +01:00
Kenichi Handa
6ccc848cd8 merge trun 2012-10-30 20:38:37 +09:00
Kenichi Handa
aee5b18ec3 font.c (Ffont_at): If WINDOW is specified and it is not displaying the current buffer, signal an error. 2012-10-30 20:14:15 +09:00
Daniel Colascione
53372c278e Complete fix for build break 2012-10-29 19:10:52 -08:00
Daniel Colascione
7f590b0c3b Fix build break in non-Cygw32 Cygwin builds introduced in 2012-10-29T17:24:29Z!dancol@dancol.org. 2012-10-29 17:56:38 -08:00
Daniel Colascione
ba11600816 2012-10-29 Daniel Colascione <dancol@dancol.org>
cygw32.h, cygw32.c (Qutf_16le, from_unicode, to_unicode): In
preparation for fixing bug#12739, move these functions from
here...

* coding.h, coding.c: ... to here, and compile them only when
WINDOWSNT or HAVE_NTGUI.  Moving these functions out of cygw32
proper lets us write cygw32-agnostic code for the HAVE_NTGUI case.
2012-10-29 09:24:29 -08:00
Eli Zaretskii
640bf8ad44 Don't use CLOCKS_PER_SEC in w32 timers.
src/w32proc.c (TIMER_TICKS_PER_SEC): New macro.
 (timer_loop, getitimer, setitimer): Use it instead of
 CLOCKS_PER_SEC, which is no longer pertinent, since we don't use
 'clock'.
 (w32_get_timer_time): Use 10*TIMER_TICKS_PER_SEC instead of a
 literal 10000.
2012-10-28 19:42:52 +02:00
Jan Djärv
64ccff5f0e * nsterm.m (NO_APPDEFINED_DATA): New define.
(last_appdefined_event_data): New variable
(last_appdefined_event): Remove.
(ns_select): Initialize t from last_appdefined_event_data instead
of [last_appdefined_event data1].
(sendEvent:): Save [theEvent data1] to last_appdefined_event_data,
remove last_appdefined_event.

Fixes: debbugs:12698
2012-10-28 17:10:06 +01:00
Stefan Monnier
e483264ca5 * src/frame.c (x_set_font): Catch internal error. 2012-10-28 11:52:42 -04:00
Eli Zaretskii
2f246cd3c8 Fix compiler warnings in w32proc.c.
src/w32proc.c (sys_spawnve): Avoid compiler warning about format mismatch.
 (timer_loop): Remove unused variable.
2012-10-27 21:43:48 +02:00
Eli Zaretskii
2e612797ce Use 'volatile' types for communications between timer thread and main thread. 2012-10-27 21:32:30 +02:00
Eli Zaretskii
15cc05e984 Fix a typo in a comment. 2012-10-27 21:20:02 +02:00
Eli Zaretskii
6c16c13ed1 Fix w32 implementation of itimers: overflow and ITIMER_PROF.
Avoid overflow in w32 implementation of interval timers.  When
 possible, for ITIMER_PROF count only times the main thread
 actually executes.

 src/w32proc.c <struct itimer_data>: 'expire' and 'reload' are now
 ULONGLONG types.  Likewise for all the other data which was
 previously clock_t.
 (GetThreadTimes_Proc): New typedef.
 (w32_get_timer_time): New function, returns a suitable time value
 for the timer.
 (timer_loop): Enter critical section when accessing ULONGLONG
 values of the itimer_data struct, as these accesses are no longer
 atomic.  Call 'w32_get_timer_time' instead of 'clock'.
 (init_timers): Initialize s_pfn_Get_Thread_Times.
 (start_timer_thread): Don't assign itimer->caller_thread here.
 (getitimer): Assign itimer->caller_thread here.
 (setitimer): Always call getitimer to get the value of ticks_now.
2012-10-27 13:21:26 +02:00
Eli Zaretskii
ccc83f50a4 Avoid hourglass mouse pointer when a tooltip for menu item is shown.
src/w32fns.c (w32_wnd_proc) <WM_MOUSEMOVE>: Don't enable tracking of
 mouse movement events if the menu bar is active.  This avoids
 producing a busy "hour-glass" cursor by Windows if the mouse
 pointer is positioned over a tooltip shown for some menu item.
2012-10-26 11:46:46 +02:00
Paul Eggert
69deda53a8 Don't assume process IDs fit in int.
* emacs.c (shut_down_emacs) [!DOS_NT]:
* sysdep.c (sys_suspend) [SIGTSTP && !MSDOS]:
* term.c (dissociate_if_controlling_tty) [!DOS_NT]:
Use pid_t, not int, to store process IDs, as 'int'
is not wide enough on a few platforms (e.g., AIX and IRIX).
2012-10-24 21:35:39 -07:00
Kenichi Handa
6a8f819329 merge trunk 2012-10-24 00:47:51 +09:00
Kenichi Handa
7e70a15287 Make face-font-rescale-alist work correctly for non-ASCII fonts. 2012-10-24 00:42:29 +09:00
Chong Yidong
49238e7f5c Make unused variable font-list-limit obsolete, and move it out of C.
* display.texi (Font Lookup): Remove font-list-limit.

* lisp/startup.el (command-line):
* lisp/cus-start.el: Don't refer to font-list-limit.

* lisp/faces.el (font-list-limit): Define as an obsolete variable.

* xfaces.c (Vfont_list_limit): Move unused variable to faces.el.
2012-10-23 10:39:13 +08:00
Jan Djärv
ef44695952 * nsfont.m (nsfont_open, ns_glyph_metrics): Force integer advancement
for screen font.
(nsfont_draw): Turn off LCD-smoothing.

Fixes: debbugs:11484
2012-10-21 20:48:11 +02:00
Jan Djärv
5ec86886a7 * xterm.c (x_focus_changed): Check if daemonp when sending focus in
event.

Fixes: debbugs:12681
2012-10-21 16:53:28 +02:00