ChangeLog 824 KB
Newer Older
1 2 3 4
2012-12-20  Paul Eggert  <eggert@cs.ucla.edu>

	* xdisp.c (redisplay_internal): Remove now-unused local.

5 6 7 8 9 10
2012-12-20  Stefan Monnier  <monnier@iro.umontreal.ca>

	* xdisp.c (select_frame_for_redisplay, ensure_selected_frame): Remove.
	(redisplay_internal): Don't bother selecting the frame to get the
	proper value of frame-local variables.

11 12 13 14 15 16
2012-12-20  Dmitry Antipov  <dmantipov@yandex.ru>

	* textprop.c (set_text_properties_1): Do not allow NULL interval.
	Rename 4th argument since it may be buffer or string.  Adjust comment.
	* intervals.c (graft_intervals_info_buffer): Find an interval here.

17 18 19 20 21 22
2012-12-19  Dmitry Antipov  <dmantipov@yandex.ru>

	* coding.c (Fdetect_coding_region): Do not check start and end with
	CHECK_NUMBER_COERCE_MARKER since validate_region does that itself.
	(code_convert_region): Likewise.

23 24 25 26 27 28 29 30
2012-12-18  Eli Zaretskii  <eliz@gnu.org>

	* w32.c (acl_get_file, acl_set_file): Run the file name through
	map_w32_filename, and resolve any symlinks in the file name, like
	Posix platforms do.
	(acl_set_file): Call revert_to_self, if any privileges were
	enabled.

31 32 33 34 35
2012-12-17  Juanma Barranquero  <lekktu@gmail.com>

	* makefile.w32-in ($(BLD)/editfns.$(O), $(BLD)/fileio.$(O))
	($(BLD)/w32.$(O)): Update dependencies.

36 37 38 39 40 41 42 43 44 45
2012-12-17  Stefan Monnier  <monnier@iro.umontreal.ca>

	* xdisp.c (select_frame_for_redisplay): Use select_window_1 to
	propagate redisplay's scrolling (if any) to the right window.
	(redisplay_internal): Use ensure_selected_frame.
	(display_mode_lines): Complete last fix.
	* window.c (select_window_1): New func, extracted from select_window.
	(select_window): Use it.
	* window.h (select_window_1): Declare.

46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
2012-12-17  Eli Zaretskii  <eliz@gnu.org>

	Emulate Posix ACL APIs on MS-Windows.
	* w32.c: Include sddl.h and sys/acl.h.
	(SDDL_REVISION_1): Define if not already defined.
	(g_b_init_get_security_descriptor_dacl)
	(g_b_init_convert_sd_to_sddl, g_b_init_convert_sddl_to_sd)
	(g_b_init_is_valid_security_descriptor)
	(g_b_init_set_file_security): New static flags.
	(globals_of_w32): Initialize them to zero.
	(SetFileSecurity_Name): New string constant.
	(SetFileSecurity_Proc, GetSecurityDescriptorDacl_Proc)
	(ConvertStringSecurityDescriptorToSecurityDescriptor_Proc)
	(ConvertSecurityDescriptorToStringSecurityDescriptor_Proc)
	(IsValidSecurityDescriptor_Proc): New typedefs.
	(get_file_security, get_security_descriptor_owner)
	(get_security_descriptor_group): Set errno to ENOTSUP.
	(set_file_security, get_security_descriptor_dacl)
	(is_valid_security_descriptor, convert_sd_to_sddl)
	(convert_sddl_to_sd, acl_valid, acl_to_text, acl_from_text)
	(acl_free, acl_get_file, acl_set_file): New functions.

	* fileio.c (Fcopy_file) [WINDOWSNT]: Support copying ACLs.

70 71 72 73 74 75 76 77 78 79
2012-12-17  Paul Eggert  <eggert@cs.ucla.edu>

	Don't reraise SIGCHLD, as that can now lose (Bug#13192).
	With the 2012-12-03 fix for Bug#12980 in place, an old workaround
	for some of that bug's symptoms can now cause Emacs to abort.
	Remove the workaround.
	* process.c (wait_reading_process_output): Don't reraise SIGCHLD.
	The bug that caused SIGCHLD to get lost has been fixed, and the
	workaround for it can now cause Emacs to abort.

80 81 82 83 84 85
2012-12-16  Paul Eggert  <eggert@cs.ucla.edu>

	* sysdep.c (emacs_abort): Bump backtrace size to 40.
	Companion to the 2012-09-30 patch.  Suggested by Eli Zaretskii in
	<http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00796.html>.

86 87 88 89
2012-12-16  Romain Francoise  <romain@orebokech.com>

	* fileio.c (Ffile_acl, Fset_file_acl): New functions.
	(Fcopy_file): Change last arg to `preserve_extended_attributes'
90
	and copy ACL entries of file in addition to SELinux context if set.
91 92 93 94 95
	(syms_of_fileio): Add `file-acl' and `set-file-acl'.

	* Makefile.in (LIBACL_LIBS): New macro.
	(LIBES): Use it.

96 97 98 99
2012-12-15  Paul Eggert  <eggert@cs.ucla.edu>

	* fileio.c (internal_delete_file): Use bool for boolean.

100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
2012-12-15  Eli Zaretskii  <eliz@gnu.org>

	Fix bug #13079 on MS-Windows with temp files not being deleted.
	* w32.h (_child_process): New members input_file and
	pending_deletion.
	(register_child): First argument is now pid_t.
	(record_infile, record_pending_deletion): New prototypes.

	* w32proc.c (new_child): Initialize input_file and
	pending_deletion members of the child.
	(delete_child): Delete the child's temporary input file, if any,
	that is pending deletion.
	(register_child): First argument is now pid_t.
	(record_infile, record_pending_deletion): New functions.
	(reap_subprocess): Fix a typo in DebPrint string.
	(sys_spawnve, sys_kill): Use pid_t for PID arguments.

	* fileio.c (internal_delete_file): Return an int again: non-zero
	if delete-file succeeds, zero otherwise.

	* lisp.h (internal_delete_file): Adjust prototype.

	* callproc.c (Fcall_process): Don't overwrite infile with result
	of DECODE_FILE.
	[WINDOWSNT] If BUFFER is an integer, i.e. we are launching an
	asynchronous subprocess, record the name of the input file name,
	if any.
	(delete_temp_file) [WINDOWSNT]: If internal_delete_file fails to
	delete the file, record it as pending deletion when the subprocess
	exits.

131 132 133 134 135 136
2012-12-14  Eli Zaretskii  <eliz@gnu.org>

	* editfns.c [HAVE_PWD_H]: Include grp.h.

	* makefile.w32-in ($(BLD)/editfns.$(O)): Add $(NT_INC)/grp.h.

137 138 139 140 141 142 143 144 145
2012-12-14  Paul Eggert  <eggert@cs.ucla.edu>

	Fix permissions bugs with setgid directories etc. (Bug#13125)
	* dired.c (Ffile_attributes): Return t as the 9th attribute,
	to mark it as a placeholder.  The old value was often wrong.
	The only user of this attribute has been changed to use
	file-ownership-preserved-p instead, with its new group arg.
	* editfns.c (Fgroup_gid, Fgroup_real_gid): New functions.

146 147
2012-12-14  Stefan Monnier  <monnier@iro.umontreal.ca>

148 149
	* xdisp.c (select_frame_for_redisplay, display_mode_lines):
	Keep selected_window and selected_frame in sync.
150

151 152 153 154 155 156 157
2012-12-14  Eli Zaretskii  <eliz@gnu.org>

	* w32.c (stat_worker): If w32_stat_get_owner_group is zero, do not
	try to get accurate owner and group information from NT file
	security APIs.  This is to make most callers of 'stat' and
	'lstat', which don't need that information, much faster.

158 159
	* dired.c (Ffile_attributes) [WINDOWSNT]:
	Set w32_stat_get_owner_group to a non-zero value, to request accurate
160 161
	owner and group information from 'lstat'.

Paul Eggert's avatar
Paul Eggert committed
162 163
2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>

164 165 166 167 168
	* fileio.c (Finsert_file_contents): Don't put tail into head area,
	as that confuses set-auto-coding, so insist on the head-read
	returning the full 1024 bytes.  Let lseek compute the tail offset;
	less work for us.  Do not ignore I/O errors when reading the tail.

Paul Eggert's avatar
Paul Eggert committed
169 170 171 172
	* xdisp.c: Minor style fixes.
	(init_iterator): Hoist assignment out of if-expression.
	(markpos_of_region): Callers now test for sign, not for -1.

173 174 175 176 177 178 179 180 181
2012-12-13  Dmitry Antipov  <dmantipov@yandex.ru>

	Minor redisplay optimization when the region length is zero.
	* xdisp.c (markpos_of_region): New function.
	(init_iterator): Do not highlight the region of zero length.
	(redisplay_window): Check whether the region is of non-zero length.
	(try_cursor_movement): Allow if the region length is zero.
	(try_window_reusing_current_matrix, try_window_id): Likewise.

182
2012-12-13  Eli Zaretskii  <eliz@gnu.org>
183 184 185 186 187

	* search.c (search_buffer): Check the inverse translations of each
	character in pattern when the buffer being searched is unibyte.
	(Bug#13084)

188
2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>
189 190 191

	* fileio.c (Fvisited_file_modtime): Return (-1 ...) for nonexistent
	files, fixing a regression from 24.2.
192
	(Fverify_visited_file_modtime): Don't read uninitialized st.st_size.
193

194 195 196 197 198 199 200 201 202
2012-12-13  Paul Eggert  <eggert@cs.ucla.edu>

	* fileio.c (Fcopy_file): Make fstat failure as serious as open failure.
	fstat shouldn't fail, and if it does fail copy-file should not proceed.
	Remove unnecessary S_ISLNK test, as (contra the comments) this
	function can't copy symlinks.  Improve quality of error message
	when attempting to copy files that are neither regular files nor
	directories.

203 204 205 206 207 208 209 210
2012-12-12  Dmitry Antipov  <dmantipov@yandex.ru>

	* dispnew.c (set_window_cursor_after_update): Use clip_to_bounds.
	* gtkutil.c (xg_set_toolkit_scroll_bar_thumb):
	* window.c (Frecenter):
	* xdisp.c (resize_mini_window, hscroll_window_tree, draw_glyphs):
	* xterm.c (x_set_toolkit_scroll_bar_thumb): Likewise.

211 212
2012-12-12  Daniel Colascione  <dancol@dancol.org>

213
	* unexcw.c (fixup_executable): Use posix_fallocate to ensure that
214 215 216
	the dumped Emacs is not a sparse file, greatly improving Cygwin
	"make bootstrap" performance.

217 218 219 220 221
2012-12-11  Michael Albinus  <michael.albinus@gmx.de>

	* inotify.c (inotify_callback): Generate an Emacs event for every
	incoming inotify event.

222 223 224 225 226 227 228 229 230 231 232 233 234
2012-12-11  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (handle_face_prop): Fix logic of computing
	it->start_of_box_run_p.
	(append_space_for_newline): If the glyph row is R2L, reset the
	iterator's end_of_box_run_p flag before prepending the space glyph.
	(extend_face_to_end_of_line): If the glyph row is R2L, reset the
	iterator's start_of_box_run_p flag before prepending the stretch.
	(append_glyph, produce_image_glyph, append_composite_glyph)
	(append_stretch_glyph, append_glyphless_glyph): Reverse the
	left_box_line_p and right_box_line_p flags of the glyph for R2L
	glyph rows.  (Bug#13011)

235 236 237 238 239 240 241 242 243 244
2012-12-11  Dmitry Antipov  <dmantipov@yandex.ru>

	* buffer.c (Fset_buffer_multibyte): Do not force redisplay
	if changed buffer is not shown in a window.
	* insdel.c (prepare_to_modify_buffer): Likewise.
	* window.c (replace_buffer_in_windows_safely): Do nothing
	if buffer is not shown in a window.
	(Fforce_window_update): Likewise if string or buffer argument
	is passed.

245 246 247 248 249
2012-12-11  Eli Zaretskii  <eliz@gnu.org>

	* inotify.c (Finotify_add_watch): Rename decoded_file_name to
	encoded_file_name, which is what it is.

250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
2012-12-11  Dmitry Antipov  <dmantipov@yandex.ru>

	Consistently use marker_position and marker_byte_position.
	* fringe.c (Ffringe_bitmaps_at_pos):
	* indent.c (Fvertical_motion):
	* insdel.c (prepare_to_modify_buffer):
	* keyboard.c (make_lispy_position):
	* window.c (Fwindow_end, Fpos_visible_in_window_p, unshow_buffer)
	(window_scroll_pixel_based, displayed_window_lines)
	(Fset_window_configuration):
	* xdisp.c (message_dolog, with_echo_area_buffer_unwind_data)
	(mark_window_display_accurate_1, redisplay_window, decode_mode_spec):
	Replace direct access to marker fields with calls
	to marker_position and/or marker_byte_position.

265 266 267 268 269 270
2012-12-11  Juanma Barranquero  <lekktu@gmail.com>

	* makefile.w32-in (SIG2STR_H): New macro.
	(SYSWAIT_H, $(BLD)/emacs.$(O), $(BLD)/process.$(O))
	($(BLD)/w32notify.$(O)): Update dependencies.

271 272
2012-12-10  Daniel Colascione  <dancol@dancol.org>

Daniel Colascione's avatar
Daniel Colascione committed
273 274 275
	* w32term.c, keyboard.c: Fix build break in cygw32 by omitting
	Windows file notification functionality unless WINDOWSNT.

276 277 278 279 280 281
	* w32gui.h (hprevinst, lpCmdLine, nCmdShow): Remove unused
	declarations.

	* w32fns.c (cache_system_info): Initialize the global hinst
	variable here so various initialization calls DTRT.

282
	* unexw32.c (hprevinst, lpCmdLine, nCmdShow): Remove unused variables.
283 284 285 286 287 288 289
	(hinst): Remove unneeded extern declaration.
	(_start): Remove initialization of above variables; remove
	initialization of hinst, as cache_system_info now does that.

	* emacs.c (main): Call cache_system_info early in startup; we
	previously weren't calling it in Cygwin builds.

290 291
	* Makefile.in (ntsource, WINDRES, W32_RES, W#@_RES_LINK):
	Teach the autoconf build system how to compile a Windows resource file
292 293
	and link it to Emacs.

Dmitry Antipov's avatar
Dmitry Antipov committed
294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314
2012-12-10  Dmitry Antipov  <dmantipov@yandex.ru>

	Per-buffer window counters.
	* buffer.h (struct buffer): New member window_count.
	(buffer_window_count): New function.
	* buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
	Initialize window_count.
	(Fkill_buffer): Verify window_count for the buffer being killed.
	(modify_overlay): Do not force redisplay if buffer is not shown
	in any window.
	(init_buffer_once): Initialize window_count for buffer_defaults
	and buffer_local_symbols.
	* window.h (buffer_shared): Remove declaration.
	(wset_buffer): Convert from inline ...
	* window.c (wset_buffer): ... to an ordinary function.
	(adjust_window_count): New function.
	(make_parent_window): Use it.
	* xdisp.c (buffer_shared): Remove.
	(redisplay_internal, redisplay_window): Adjust users.
	(buffer_shared_and_changed): Use per-buffer window counter.

315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353
2012-12-10  Eli Zaretskii  <eliz@gnu.org>

	Support for filesystem notifications on MS-Windows.
	* w32proc.c (sys_select): If drain_message_queue returns non-zero,
	and this is a TTY frame, signal the caller that keyboard input is
	available.

	* w32xfns.c (drain_message_queue): Now returns an int: an
	indication whether any WM_EMACS_FILENOTIFY messages were found in
	the queue.

	* w32inevt.c (handle_file_notifications): New function.
	(w32_console_read_socket): Call it to process file notifications.

	* w32console.c (initialize_w32_display): Record the main thread ID
	in dwMainThreadId.

	* deps.mk (inotify.o): New dependency list.

	* Makefile.in (SOME_MACHINE_OBJECTS): Add w32notify.o.

	* w32term.h (WM_EMACS_FILENOTIFY): New custom message.
	(WM_EMACS_END): Bump value by 1.
	(notification_buffer_in_use, file_notifications)
	(notifications_size, notifications_desc): Declare.
	(w32_get_watch_object, lispy_file_action, globals_of_w32notify):
	Add prototypes.

	* w32term.c (lispy_file_action, queue_notifications): New functions.
	(syms_of_w32term) <Qadded, Qremoved, Qmodified, Qrenamed_from>
	<Qrenamed_to>: New symbols.
	(w32_read_socket): Handle the WM_EMACS_FILENOTIFY message.

	* w32notify.c: New file, implements file event notifications for
	MS-Windows.

	* w32fns.c (w32_wnd_proc): Handle the WM_EMACS_FILENOTIFY message
	by posting it to the w32_read_socket queue.

354
	* termhooks.h (enum event_kind) [HAVE_NTGUI]: Support FILE_NOTIFY_EVENT.
355 356 357 358 359 360 361

	* makefile.w32-in (OBJ2): Add $(BLD)/w32notify.$(O).
	(GLOBAL_SOURCES): Add w32notify.c
	($(BLD)/w32notify.$(O)): New set of dependencies.

	* lisp.h (syms_of_w32notify) [WINDOWSNT]: Add prototype.

362 363
	* keyboard.c (kbd_buffer_get_event) [WINDOWSNT]:
	Handle FILE_NOTIFY_EVENT.
364 365 366 367 368 369 370
	(syms_of_keyboard) [HAVE_NTGUI] <Qfile_notify>: New symbol.
	(keys_of_keyboard) [WINDOWSNT]: Bind file-notify to
	w32notify-handle-event by default.

	* emacs.c (main) [WINDOWSNT]: Call globals_of_w32notify and
	syms_of_w32notify.

371 372
2012-12-10  Rüdiger Sonderfeld  <ruediger@c-plusplus.de>

373
	Support for filesystem notifications on GNU/Linux via inotify.
374
	* termhooks.h (enum event_kind) [HAVE_INOTIFY]: Add FILE_NOTIFY_EVENT.
375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391

	* lisp.h (syms_of_inotify) [HAVE_INOTIFY]: Add prototype.

	* keyboard.c (Qfile_inotify) [HAVE_INOTIFY]: New variable.
	(syms_of_keyboard): DEFSYM it.
	(kbd_buffer_get_event) [HAVE_INOTIFY]: Generate FILE_NOTIFY_EVENT.
	(make_lispy_event): Support FILE_NOTIFY_EVENT by generating
	Qfile_inotify events.
	(keys_of_keyboard) [HAVE_INOTIFY]: Bind file-inotify events in
	special-event-map to inotify-handle-event.

	* emacs.c (main) [HAVE_INOTIFY]: Call syms_of_inotify.

	* Makefile.in (base_obj): Add inotify.o.

	* inotify.c: New file.

392
2012-12-10  Jan Djärv  <jan.h.d@swipnet.se>
393 394 395

	* nsterm.m (fd_handler:): FD_ZERO fds (Bug#13103).

396
2012-12-10  Fabrice Popineau  <fabrice.popineau@gmail.com>
397 398 399 400

	* w32fns.c (cache_system_info): Cast sysinfo_cache.dwPageSize to
	DWORD_PTR, for compatibility with 64-bit builds.

401
	* w32.c (_PROCESS_MEMORY_COUNTERS_EX):
402 403 404 405
	(GetProcessWorkingSetSize_Proc, get_process_working_set_size)
	(system_process_attributes): Use SIZE_T rather than DWORD, for
	compatibility with 64-bit builds.

406
2012-12-10  Christopher Schmidt  <christopher@ch.ristopher.com>
407 408 409

	* lread.c (Vload_source_file_function): Doc fix (Bug#11647).

410
2012-12-10  Eli Zaretskii  <eliz@gnu.org>
411 412 413 414 415

	* indent.c (Fvertical_motion): If a display string will be
	displayed on the left or the right margin, don't consider it as a
	factor in cursor positioning.  (Bug#13108)

416
2012-12-10  Martin Rudalics  <rudalics@gmx.at>
417 418 419

	* editfns.c (Fcompare_buffer_substrings): Reword doc-string.

420 421 422 423 424
2012-12-10  Paul Eggert  <eggert@cs.ucla.edu>

	* fileio.c (Fsubstitute_in_file_name): Use ptrdiff_t, not int,
	for string length.

425 426 427 428
2012-12-08  Eli Zaretskii  <eliz@gnu.org>

	* w32.c (unsetenv): Return 0 if the input string is too long.

429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454
2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>

	Use putenv+unsetenv instead of modifying environ directly (Bug#13070).
	* alloc.c (xputenv): New function.
	* dbusbind.c (Fdbus_init_bus):
	* emacs.c (main):
	* xterm.c (x_term_init):
	Use xputenv instead of setenv or putenv, to detect memory exhaustion.
	* editfns.c (initial_tz): Move static var decl up.
	(tzvalbuf_in_environ): New static var.
	(init_editfns):	Initialize these two static vars.
	(Fencode_time): Don't assume arbitrary limit on EMACS_INT width.
	Save old TZ value on stack, if it's small.
	(Fencode_time, set_time_zone_rule): Don't modify 'environ' directly;
	instead, use xputenv+unsetenv to set and restore TZ.
	(environbuf): Remove static var.  All uses removed.
	(Fset_time_zone_rule): Do not save TZ and environ;
	no longer needed here.
	(set_time_zone_rule_tz1, set_time_zone_rule_tz2) [LOCALTIME_CACHE]:
	Move to inside set_time_zone_rule; they don't need file scope any more.
	(set_time_zone_rule): Maintain the TZ=value string separately.
	(syms_of_editfns): Don't initialize initial_tz;
	init_editfns now does it.
	* emacs.c (dump_tz) [HAVE_TZSET]: Now const.
	* lisp.h (xputenv): New decl.

455 456 457 458
2012-12-08  Fabrice Popineau  <fabrice.popineau@gmail.com>

	* w32fns.c (emacs_abort): Don't do arithmetics on void pointers.

459 460 461 462
2012-12-08  Eli Zaretskii  <eliz@gnu.org>

	* w32.c (unsetenv, sys_putenv): New functions.

463 464 465 466 467
2012-12-08  Chong Yidong  <cyd@gnu.org>

	* editfns.c (Finsert_char): Make the error message more
	informative (Bug#12992).

468 469
2012-12-08  Paul Eggert  <eggert@cs.ucla.edu>

Paul Eggert's avatar
Paul Eggert committed
470 471 472 473 474
	Simplify get_lim_data.
	* vm-limit.c (get_lim_data): Combine RLIMIT_AS and RLIMIT_DATA methods.
	Remove USG and vlimit methods; no longer used these days.
	Add #error catchall just in case.

475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495
	Assume POSIX 1003.1-1988 or later for signal.h (Bug#13026).
	Exceptions: do not assume SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN,
	SIGTTOU, SIGUSR1, SIGUSR2, as Microsoft platforms lack these.
	* process.c [subprocesses]: Include <c-ctype.h>, <sig2str.h>.
	(deleted_pid_list, Fdelete_process, create_process)
	(record_child_status_change, handle_child_signal, deliver_child_signal)
	(init_process_emacs, syms_of_process):
	Assume SIGCHLD is defined.
	(parse_signal): Remove.  All uses removed.
	(abbr_to_signal): New static function.
	(Fsignal_process): Use it to convert signal names to ints.
	* sysdep.c (sys_suspend) [!DOS_NT]: Use kill (0, ...) rather than
	kill (getpgrp (), ...).
	(emacs_sigaction_init): Assume SIGCHLD is defined.
	(init_signals): Assume SIGALRM, SIGCHLD, SIGHUP, SIGKILL,
	SIGPIPE, and SIGQUIT are defined.  Do not worry about SIGCLD any more.
	* syssignal.h (EMACS_KILLPG): Remove.
	All uses replaced by 'kill' with a negative pid.
	(SIGCHLD): Remove definition, as we now assume SIGCHLD.
	* w32proc.c (sys_kill): Support negative pids compatibly with POSIX.

496 497 498 499 500 501
2012-12-07  Paul Eggert  <eggert@cs.ucla.edu>

	* sysdep.c (get_child_status): Abort on internal error (Bug#13086).
	This will cause a production Emacs to dump core instead of
	infinite-looping.

502 503 504 505 506 507 508 509
2012-12-07  Dmitry Antipov  <dmantipov@yandex.ru>

	* frame.c (make_frame): Do not set window's buffer to t.
	* window.c (Fsplit_window_internal): Likewise.  Previously it was
	used to indicate that the window is being set up.  Now we use
	set_window_buffer for all new windows, so the condition in ...
	(Fset_window_buffer): ... is always true and can be removed.

510 511 512 513 514 515 516 517
2012-12-07  Dmitry Antipov  <dmantipov@yandex.ru>

	Convenient macro to check whether the buffer is hidden.
	* buffer.h (BUFFER_HIDDEN_P): New macro.
	* frame.c (make_frame): Use it.  Adjust comment.
	* buffer.c (candidate_buffer): New function.
	(Fother_buffer, other_buffer_safely): Use it.

518 519 520 521 522 523
2012-12-06  Eli Zaretskii  <eliz@gnu.org>

	* w32proc.c (waitpid): Avoid busy-waiting when called with WNOHANG
	if the child process is still running.  Instead, exit the wait
	loop and return zero.  (Bug#13086)

524 525 526 527 528 529 530 531 532 533 534 535 536
2012-12-06  Dmitry Antipov  <dmantipov@yandex.ru>

	* frame.h (x_char_width, x_char_height): Remove prototypes.
	* w32term.h (x_char_width, x_char_height): Likewise.
	* xfns.c (x_char_width, x_char_height): Remove.
	* w32fns.c (x_char_width, x_char_height): Likewise.
	* nsfns.c (x_char_width, x_char_height): Likewise.
	* frame.c (Fframe_char_width): Use FRAME_COLUMN_WIDTH for
	all window frames.
	(Fframe_char_height): Likewise with FRAME_LINE_HEIGHT.
	* keyboard.c (command_loop_1): Remove prototype.
	(command_loop_2, top_level_1): Add static to match prototype.

537 538 539 540 541 542 543 544 545 546
2012-12-06  Paul Eggert  <eggert@cs.ucla.edu>

	Fix a recently-introduced delete-process race condition.
	* callproc.c, process.h (record_kill_process):
	New function, containing part of the old call_process_kill.
	(call_process_kill): Use it.
	This does not change call_process_kill's behavior.
	* process.c (Fdelete_process): Use record_kill_process to fix a
	race condition that could cause Emacs to lose track of a child.

547 548 549 550 551 552
2012-12-06  Dmitry Antipov  <dmantipov@yandex.ru>

	Avoid code duplication between prev_frame and next_frame.
	* frame.c (candidate_frame): New function.  Add comment.
	(prev_frame, next_frame): Use it.  Adjust comment.

553
2012-12-06  Eli Zaretskii  <eliz@gnu.org>
554 555 556 557

	* callproc.c (Fcall_process_region) [!HAVE_MKSTEMP]: If mktemp
	fails, signal an error instead of continuing with an empty
	string.  (Bug#13079)
558 559
	Encode expanded temp file pattern before passing it to mkstemp or
	mktemp.
560

561 562 563 564 565
	* fileio.c (file_name_as_directory, directory_file_name) [DOS_NT]:
	Encode the file name before passing it to dostounix_filename, in
	case it will downcase it (under w32-downcase-file-names).
	(Bug#12933)

Paul Eggert's avatar
Paul Eggert committed
566 567 568 569 570 571 572 573
2012-12-05  Paul Eggert  <eggert@cs.ucla.edu>

	Minor call-process cleanups.
	* callproc.c (Fcall_process): Do record-unwind-protect on MSDOS
	at the same time as other platforms, to simplify analysis.
	No need for fd0_volatile since we have synch_process_fd.
	Avoid needless emacs_close; arg is always negative.

574 575 576 577 578
2012-12-04  Andreas Schwab  <schwab@linux-m68k.org>

	* callproc.c (Fcall_process): Fix specpdl nesting for asynchronous
	processes.

579 580 581 582 583 584 585 586 587 588 589 590 591
2012-12-04  Dmitry Antipov  <dmantipov@yandex.ru>

	* lisp.h (Mouse_HLInfo): Remove set-but-unused mouse_face_image_state
	member.  Adjust users.  Convert mouse_face_past_end, mouse_face_defer
	and mouse_face_hidden members to a bitfields.
	* frame.h (struct frame): Remove set-but-not-used space_width member.
	(FRAME_SPACE_WIDTH): Remove.
	* nsterm.m, w32term.c, xterm.c: Adjust users.
	* termchar.h (struct tty_display_info): Remove set-but-unused se_is_so
	member.  Adjust users.  Convert term_initted, delete_in_insert_mode,
	costs_set, insert_mode, standout_mode, cursor_hidden and flow_control
	members to a bitfields.

592 593
2012-12-03  Paul Eggert  <eggert@cs.ucla.edu>

594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650
	Don't let call-process be a zombie factory (Bug#12980).
	Fixing this bug required some cleanup of the signal-handling code.
	As a side effect, this change also fixes a longstanding rare race
	condition whereby Emacs could mistakenly kill unrelated processes,
	and it fixes a bug where a second C-g does not kill a recalcitrant
	synchronous process in GNU/Linux and similar platforms.
	The patch should also fix the last vestiges of Bug#9488,
	a bug which has mostly been fixed on the trunk by other changes.
	* callproc.c, process.h (synch_process_alive, synch_process_death)
	(synch_process_termsig, sync_process_retcode):
	Remove.  All uses removed, to simplify analysis and so that
	less consing is done inside critical sections.
	* callproc.c (call_process_exited): Remove.  All uses replaced
	with !synch_process_pid.
	* callproc.c (synch_process_pid, synch_process_fd): New static vars.
	These take the role of what used to be in unwind-protect arg.
	All uses changed.
	(block_child_signal, unblock_child_signal):
	New functions, to avoid races that could kill innocent-victim processes.
	(call_process_kill, call_process_cleanup, Fcall_process): Use them.
	(call_process_kill): Record killed processes as deleted, so that
	zombies do not clutter up the system.  Do this inside a critical
	section, to avoid a race that would allow the clutter.
	(call_process_cleanup): Fix code so that the second C-g works again
	on common platforms such as GNU/Linux.
	(Fcall_process): Create the child process in a critical section,
	to fix a race condition.  If creating an asynchronous process,
	record it as deleted so that zombies do not clutter up the system.
	Do unwind-protect for WINDOWSNT too, as that's simpler in the
	light of these changes.  Omit unnecessary call to emacs_close
	before failure, as the unwind-protect code does that.
	* callproc.c (call_process_cleanup):
	* w32proc.c (waitpid): Simplify now that synch_process_alive is gone.
	* process.c (record_deleted_pid): New function, containing
	code refactored out of Fdelete_process.
	(Fdelete_process): Use it.
	(process_status_retrieved): Remove.  All callers changed to use
	child_status_change.
	(record_child_status_change): Remove, folding its contents into ...
	(handle_child_signal): ... this signal handler.  Now, this
	function is purely a handler for SIGCHLD, and is not called after
	a synchronous waitpid returns; the synchronous code is moved to
	wait_for_termination.  There is no need to worry about reaping
	more than one child now.
	* sysdep.c (get_child_status, child_status_changed): New functions.
	(wait_for_termination): Now takes int * status and bool
	interruptible arguments, too.  Do not record child status change;
	that's now the caller's responsibility.  All callers changed.
	Reimplement in terms of get_child_status.
	(wait_for_termination_1, interruptible_wait_for_termination):
	Remove.  All callers changed to use wait_for_termination.
	* syswait.h: Include <stdbool.h>, for bool.
	(record_child_status_change, interruptible_wait_for_termination):
	Remove decls.
	(record_deleted_pid, child_status_changed): New decls.
	(wait_for_termination): Adjust to API changes noted above.

651 652 653
	* bytecode.c, lisp.h (Qbytecode): Remove.
	No longer needed after 2012-11-20 interactive-p changes.

654 655 656 657 658
2012-12-03  Eli Zaretskii  <eliz@gnu.org>

	* xdisp.c (redisplay_window): If the cursor is visible, but inside
	the scroll margin, move point outside the margin.  (Bug#13055)

659 660 661 662 663
2012-12-03  Jan Djärv  <jan.h.d@swipnet.se>

	* gtkutil.c (my_log_handler): New function.
	(xg_set_geometry): Set log handler to my_log_handler (Bug#11177).

664 665 666 667 668 669 670 671 672
2012-12-03  Dmitry Antipov  <dmantipov@yandex.ru>

	* lisp.h (modify_region): Rename to...
	(modify_region_1): ...new prototype.
	* textprop.c (modify_region): Now static.  Adjust users.
	* insdel.c (modify_region): Rename to...
	(modify_region_1): ...new function to work with current buffer.
	Adjust comment and users.  Use true and false for booleans.

673 674 675 676 677 678 679 680 681 682 683
2012-12-03  Dmitry Antipov  <dmantipov@yandex.ru>

	* alloc.c (free_save_value): New function.
	(safe_alloca_unwind): Use it.
	* lisp.h (free_save_value): New prototype.
	* editfns.c (save_excursion_save): Use Lisp_Misc_Save_Value.
	Add comment.
	(save_excursion_restore): Adjust to match saved data structure.
	Use free_save_value to offload some work from GC.  Drop obsolete
	#if 0 code.

684
2012-12-03  Chong Yidong  <cyd@gnu.org>
685 686 687

	* fileio.c (Vauto_save_list_file_name): Doc fix.

688
2012-12-03  Fabrice Popineau  <fabrice.popineau@gmail.com>
689 690

	* w32fns.c: Remove prototype of atof.
691
	(syspage_mask): Make it DWORD_PTR, for compatibility with 64-bit
692
	builds.
693
	(file_dialog_callback): Make it UINT_PTR.
694 695 696 697 698 699 700 701

	* w32common.h (syspage_mask): Declare DWORD_PTR, for compatibility
	with 64-bit builds.

	* w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED)
	(FILE_ANY_ACCESS, CTL_CODE) [_MSC_VER]: Define only if not already
	defined.

702
2012-12-03  Glenn Morris  <rgm@gnu.org>
703

704
	* data.c (Fboundp, Fsymbol_value): Doc fix re lexical-binding.
705

706 707
2012-12-02  Paul Eggert  <eggert@cs.ucla.edu>

708 709 710 711 712 713 714
	Fix xpalloc confusion after memory is exhausted.
	* alloc.c (xpalloc): Comment fix.
	* charset.c (Fdefine_charset_internal): If xpalloc exhausts memory
	and signals an error, do not clear charset_table_size, as
	charset_table is still valid.
	* doprnt.c (evxprintf): Clear *BUF after freeing it.

715 716 717 718 719 720 721
	Use execve to avoid need to munge environ (Bug#13054).
	* callproc.c (Fcall_process):
	* process.c (create_process):
	Don't save and restore environ;	no longer needed.
	* callproc.c (child_setup):
	Use execve, not execvp, to preserve environ.

722 723 724 725
2012-12-01  Paul Eggert  <eggert@cs.ucla.edu>

	* xterm.c (x_draw_image_relief): Remove unused locals (Bug#10500).

726 727 728 729 730 731 732
2012-12-01  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>

	* xterm.c (x_draw_relief_rect, x_draw_image_relief): Fix relief
	display for sliced images (Bug#10500).

	* w32term.c (w32_draw_relief_rect, x_draw_image_relief): Likewise.

Juanma Barranquero's avatar
Juanma Barranquero committed
733 734 735 736 737
2012-11-30  Juanma Barranquero  <lekktu@gmail.com>

	* doc.c (Fdocumentation): Re-add handling of function-documentation,
	accidentally removed in 2012-11-09T04:10:16Z!monnier@iro.umontreal.ca (bug#13034).

738 739 740 741 742 743 744 745 746 747 748
2012-11-29  Dmitry Antipov  <dmantipov@yandex.ru>

	* xdisp.c (window_outdated): Remove eassert since it hits
	some suspicious corner cases (see Bug#13007 and Bug#13012).
	(mode_line_update_needed): New function.
	(redisplay_internal, redisplay_window): Use it.
	(ensure_selected_frame): New function.
	(redisplay_internal, unwind_redisplay): Use it.
	(redisplay_internal): Move comment about buffer_shared...
	(buffer_shared_and_changed): ...near to its real use.

749 750 751 752
2012-11-29  Paul Eggert  <eggert@cs.ucla.edu>

	* callproc.c (Fcall_process): Don't misreport vfork failure.

753 754 755 756 757 758 759 760 761 762 763
2012-11-28  Paul Eggert  <eggert@cs.ucla.edu>

	* callproc.c (Fcall_process): Fix vfork portability problems.
	Do not assume that fd[0], count, filefd, and save_environ survive
	vfork.  Fix bug whereby wrong errno value could be reported for
	pipe failure.  Some minor cleanups, too, as follows.  Move buf and
	bufsize to the context where they're needed.  Change new_argv to
	be of type char **, as this is more convenient and avoids casts.
	(CALLPROC_BUFFER_SIZE_MIN, CALLPROC_BUFFER_SIZE_MAX):
	Now local constants, not macros.

764 765 766 767 768
2012-11-18  Kenichi Handa  <handa@gnu.org>

	* font.c (font_unparse_xlfd): Fix previous change.  Keep "const"
	for the variable "f".

769 770 771 772 773
2012-11-13  Kenichi Handa  <handa@gnu.org>

	* font.c (font_unparse_xlfd): Exclude special characters from the
	generating XLFD name.

774 775
2012-11-27  Paul Eggert  <eggert@cs.ucla.edu>

776 777 778 779
	Assume POSIX 1003.1-1988 or later for grp.h, pwd.h.
	* dired.c (stat_uname, stat_gname):
	* fileio.c (Fexpand_file_name): Remove no-longer-needed casts.

780 781 782
	Assume POSIX 1003.1-1988 or later for errno.h (Bug#12968).
	* dired.c (directory_files_internal, file_name_completion):
	Assume EAGAIN and EINTR are defined.
783

784 785 786 787 788 789 790 791
	* fileio.c (Fcopy_file): Assume EISDIR is defined.
	* gmalloc.c (ENOMEM, EINVAL): Assume they're defined.
	* gnutls.c (emacs_gnutls_write): Assume EAGAIN is defined.
	* lread.c (readbyte_from_file): Assume EINTR is defined.
	* process.c (wait_reading_process_output, send_process) [subprocesses]:
	Assume EIO and EAGAIN are defined.
	* unexcoff.c (write_segment): Assume EFAULT is defined.

792
2012-11-27  Eli Zaretskii  <eliz@gnu.org>
793 794 795 796

	* fontset.c (Finternal_char_font): Return nil on non-GUI frames.
	(Bug#11964)

797 798 799 800 801
	* xdisp.c (draw_glyphs): Don't draw in mouse face if mouse
	highlighting on the frame was cleared.  Prevents assertion
	violations when repeatedly clicking on the "Top" link of the
	"bread-crumbs" in Info buffers.

802 803 804 805
2012-11-25  Paul Eggert  <eggert@cs.ucla.edu>

	* sysdep.c (sys_subshell): Don't assume pid_t fits in int.

806 807 808 809 810 811
2012-11-24  Ken Brown  <kbrown@cornell.edu>

	* keyboard.c (HAVE_MOUSE):
	* frame.c (HAVE_MOUSE): Remove, and rewrite code as if HAVE_MOUSE
	were always defined.

812
2012-11-24  Eli Zaretskii  <eliz@gnu.org>
813

814 815 816 817
	* xdisp.c (set_cursor_from_row): Skip step 2 only if point is not
	between bpos_covered and bpos_max.  This fixes cursor display when
	several display strings follow each other.

818 819 820 821
	* .gdbinit (pgx): If the glyph's object is a string, display the
	pointer to string data, rather than the value of the string object
	itself (which barfs under CHECK_LISP_OBJECT_TYPE).

822 823 824 825
	* indent.c (Fvertical_motion): If the starting position is covered
	by a display string, return to one position before that, to avoid
	overshooting it inside move_it_to.  (Bug#12930)

826 827 828 829 830 831 832 833 834 835
2012-11-23  Dmitry Antipov  <dmantipov@yandex.ru>

	* frame.h (struct frame): Remove display_preempted member
	since all users are dead long ago.
	* nsterm.h (struct x_output): Use the only dummy member.
	* w32menu.c (pending_menu_activation): Remove since not
	really used.
	(set_frame_menubar): Adjust user.
	* w32term.h (struct x_output): Drop outdated #if 0 code.
	(struct w32_output): Use bitfields for explicit_parent,
836 837
	asked_for_visible and menubar_active members.
	Drop unused pending_menu_activation member.
838 839 840 841
	* xterm.h (struct x_output): Drop outdated #if 0 code.
	Use bitfields for explicit_parent, asked_for_visible,
	has_been_visible and net_wm_state_hidden_seen members.

842 843 844 845 846 847
2012-11-23  Eli Zaretskii  <eliz@gnu.org>

	* makefile.w32-in (globals.h, gl-stamp): Use $(SWITCHCHAR) instead
	of a literal "/".  (Bug#12955)
	(gl-stamp): Invoke fc.exe directly, not through cmd.

848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864
2012-11-23  Paul Eggert  <eggert@cs.ucla.edu>

	Assume POSIX 1003.1-1988 or later for dirent.h (Bug#12958).
	* dired.c: Assume HAVE_DIRENT_H.
	(NAMLEN): Remove, replacing with ...
	(dirent_namelen): New function.  All uses changed.  Use the GNU macro
	_D_EXACT_NAMELEN if available, as it's faster than strlen.
	(DIRENTRY): Remove, replacing all uses with 'struct dirent'.
	(DIRENTRY_NONEMPTY): Remove.  All callers now assume it's nonzero.
	* makefile.w32-in (DIR_H): Remove.  All uses replaced with
	$(NT_INC)/dirent.h.
	($(BLD)/w32.$(O)): Do not depend on $(SRC)/ndir.h.
	* ndir.h: Rename to ../nt/inc/dirent.h.
	* sysdep.h (closedir) [!HAVE_CLOSEDIR]: Remove.
	Do not include <dirent.h>; no longer needed.
	* w32.c: Include <dirent.h> rather than "ndir.h".

865 866 867 868
2012-11-23  Chong Yidong  <cyd@gnu.org>

	* xftfont.c (xftfont_open): Remove duplicate assignment.

869 870 871 872 873 874 875 876 877 878 879 880 881 882
2012-11-22  Dmitry Antipov  <dmantipov@yandex.ru>

	* alloc.c (Fgarbage_collect): Unblock input after clearing
	gc_in_progress to avoid note_mouse_highlight glitch with GC.
	* frame.h (FRAME_MOUSE_UPDATE): New macro.
	* msdos.c (IT_frame_up_to_date): Use it here...
	* w32term.c (w32_frame_up_to_date): ...here...
	* xterm.c (XTframe_up_to_date): ...and here...
	* nsterm.m (ns_frame_up_to_date): ...but not here.
	* lisp.h (Mouse_HLInfo): Remove mouse_face_deferred_gc member.
	Adjust users.
	* xdisp.c (message2_nolog, message3_nolog, note_mouse_highlight):
	Do not check whether GC is in progress.

883 884 885 886 887 888 889 890
2012-11-22  Dmitry Antipov  <dmantipov@yandex.ru>

	* xdisp.c (window_buffer_changed): New function.
	(update_menu_bar, update_tool_bar): Use it to
	simplify large 'if' statements.
	(redisplay_internal): Generalize commonly used
	'tail' and 'frame' local variables.

891 892 893 894 895
2012-11-22  Eli Zaretskii  <eliz@gnu.org>

	* w32.c (getcwd): Fix the 2nd argument type, to prevent conflicts
	with Windows system header.

896 897 898 899 900 901 902 903 904 905 906
2012-11-21  Paul Eggert  <eggert@cs.ucla.edu>

	Assume POSIX 1003.1-1988 or later for unistd.h (Bug#12945).
	* alloc.c: Assume unistd.h exists.
	* fileio.c (Fexpand_file_name) [DOS_NT]: Use getcwd, not getwd.
	* sysdep.c (get_current_dir_name): Assume getcwd exists.
	(getwd) [USG]: Remove; no longer needed.
	(sys_subshell) [DOS_NT]: Use getcwd, not getwd.
	* w32.c (getcwd): Rename from getwd, and switch to getcwd's API.
	* w32.h (getcwd): Remove decl.

907 908 909 910 911 912
2012-11-21  Stefan Monnier  <monnier@iro.umontreal.ca>

	* xdisp.c (fast_set_selected_frame): Rename from update_tool_bar_unwind.
	Make it set selected_window as well.
	(update_tool_bar): Use it.

913
2012-11-21  Ken Brown  <kbrown@cornell.edu>
Ken Brown's avatar
Ken Brown committed
914 915 916 917 918

	* emacs.c (main): Set the G_SLICE environment variable for all
	Cygwin builds, not just GTK builds.  See
	https://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00368.html.

919
2012-11-21  Eli Zaretskii  <eliz@gnu.org>
920 921 922 923 924

	* w32.c (FILE_DEVICE_FILE_SYSTEM, METHOD_BUFFERED)
	(FILE_ANY_ACCESS, CTL_CODE, FSCTL_GET_REPARSE_POINT) [_MSC_VER]:
	Define for the MSVC compiler.

925
	* w32term.h (EnumSystemLocalesW) [_MSC_VER]: Add a missing semi-colon.
926 927 928 929

	* fileio.c (Fsubstitute_in_file_name, Ffile_name_directory)
	(Fexpand_file_name) [DOS_NT]: Pass encoded file name to
	dostounix_filename.  Prevents crashes down the road, because
930 931
	dostounix_filename assumes it gets a unibyte string.
	Reported by Michel de Ruiter <michel@sentient.nl>, see
932 933
	http://lists.gnu.org/archive/html/help-emacs-windows/2012-11/msg00017.html

934 935 936 937 938 939 940 941 942 943 944 945 946
2012-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>

	Conflate Qnil and Qunbound for `symbol-function'.
	* alloc.c (Fmake_symbol): Initialize `function' to Qnil.
	* lread.c (init_obarray): Set `function' fields to Qnil.
	* eval.c (Fcommandp): Ignore Qunbound.
	(Fautoload, eval_sub, Fapply, Ffuncall, Fmacroexpand):
	* data.c (Ffset, Ffboundp, indirect_function, Findirect_function):
	Test NILP rather than Qunbound.
	(Ffmakunbound): Set to Qnil.
	(Fsymbol_function): Never signal an error.
	(Finteractive_form): Ignore Qunbound.

947 948 949 950
2012-11-20  Paul Eggert  <eggert@cs.ucla.edu>

	* eval.c (interactive_p): Remove no-longer-used decl.

951 952 953 954 955 956
2012-11-20  Dmitry Antipov  <dmantipov@yandex.ru>

	* xdisp.c (buffer_shared): Adjust comment.
	(buffer_shared_and_changed): New function.
	(prepare_menu_bars, redisplay_internal): Use it to
	decide whether all windows or frames should be updated.
957 958 959
	(window_outdated): New function.
	(text_outside_line_unchanged_p, redisplay_window): Use it.
	(redisplay_internal): Likewise.  Fix indentation.
960

961 962 963 964 965 966
2012-11-20  Stefan Monnier  <monnier@iro.umontreal.ca>

	* eval.c (Finteractive_p, Fcalled_interactively_p, interactive_p): Remove.
	(syms_of_eval): Remove corresponding defsubr.
	* bytecode.c (exec_byte_code): `interactive-p' is now a Lisp function.

967 968 969 970 971 972 973 974 975
2012-11-19  Daniel Colascione  <dancol@dancol.org>

	* w32fns.c (Fx_file_dialog):
	(Fx_file_dialog): Accomodate rename of cygwin_convert_path* to
	cygwin_convert_file_name*.

	* cygw32.c (Fcygwin_convert_path_to_windows, syms_of_cygw32):
	Rename cygwin_convert_path* to cygwin_convert_file_name*.

976 977 978 979
2012-11-18  Paul Eggert  <eggert@cs.ucla.edu>

	* nsterm.m (ns_select): Send SIGIO only to self, not to process group.

980
2012-11-18  Eli Zaretskii  <eliz@gnu.org>
981 982 983 984 985

	* w32select.c: Include w32common.h before w32term.h, so that
	windows.h gets included before w32term.h uses some of its
	features, see below.

986 987 988 989
	* w32term.h (LOCALE_ENUMPROCA, LOCALE_ENUMPROCW) [_MSC_VER]:
	New typedefs.
	(EnumSystemLocalesA, EnumSystemLocalesW) [_MSC_VER]:
	New prototypes.
990 991
	(EnumSystemLocales) [_MSC_VER]: Define if undefined.  (Bug#12878)

992
2012-11-18  Jan Djärv  <jan.h.d@swipnet.se>
993 994 995 996

	* nsterm.m (hold_event): Set send_appdefined to YES (Bug#12834).
	(ns_select): Return at once if events are held (Bug#12834).

997
2012-11-18  enami tsugutomo  <tsugutomo.enami@jp.sony.com>
998 999 1000 1001

	* unexelf.c (ELFSIZE) [__NetBSD__ && _LP64]: Set to 64.
	Needed following 2012-10-20 change.  (Bug#12902)

1002 1003 1004 1005
2012-11-18  Juanma Barranquero  <lekktu@gmail.com>

	* w32proc.c (waitpid): Remove unused label get_result.

1006 1007 1008 1009 1010 1011
2012-11-17  Juanma Barranquero  <lekktu@gmail.com>

	* makefile.w32-in (SYSWAIT_H): New macro.
	($(BLD)/callproc.$(O), $(BLD)/w32proc.$(O), $(BLD)/process.$(O))
	($(BLD)/sysdep.$(O)): Update dependencies.

1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038
2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>

	Assume POSIX 1003.1-1988 or later for fcntl.h (Bug#12881).
	* callproc.c (relocate_fd): Assume F_DUPFD.
	* emacs.c, term.c (O_RDWR): Remove.
	* keyboard.c (tty_read_avail_input): Use O_NONBLOCK rather than
	O_NDELAY, since O_NONBLOCK is the standard name for this flag.
	* nsterm.m: Assume <fcntl.h> exists.
	* process.c (NON_BLOCKING_CONNECT, allocate_pty, create_process)
	(create_pty, Fmake_network_process, server_accept_connection)
	(wait_reading_process_output, init_process_emacs):
	Assume O_NONBLOCK.
	(wait_reading_process_output): Put in a special case for WINDOWSNT
	to mimick the older behavior where it had O_NDELAY but not O_NONBLOCK.
	It's not clear this is needed, but it's a more-conservative change.
	(create_process): Assume FD_CLOEXEC.
	(create_process, create_pty): Assume O_NOCTTY.
	* sysdep.c (init_sys_modes, reset_sys_modes): Assume F_SETFL.
	(reset_sys_modes): Use O_NONBLOCK rather than O_NDELAY.
	Omit if not DOS_NT, since F_GETFL is not defined there.
	(serial_open): Assume O_NONBLOCK and O_NOCTTY.
	* term.c: Include <fcntl.h>, for flags like O_NOCTTY.
	(O_NOCTTY): Remove.
	(init_tty): Assume O_IGNORE_CTTY is defined to 0 on platforms that
	lack it, since gnulib guarantees this.
	* w32.c (fcntl): Test for O_NONBLOCK rather than O_NDELAY.

1039 1040
2012-11-17  Eli Zaretskii  <eliz@gnu.org>

1041 1042 1043
	* w32.c (faccessat): Pretend that directories have the execute bit
	set.  Emacs expects that, e.g., in files.el:cd-absolute.

1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061
	* w32proc.c (create_child): Don't clip the PID of the child
	process to fit into an Emacs integer, as this is no longer a
	restriction.
	(waitpid): Rename from sys_wait.  Emulate a Posix 'waitpid' by
	reaping only the process specified by PID argument, if that is
	positive.  Use PID instead of dead_child to know which process to
	reap.  Wait for the child to die only if WNOHANG is not in
	OPTIONS.
	(sys_select): Don't set dead_child.

	* sysdep.c (wait_for_termination_1): Remove the WINDOWSNT portion,
	as it is no longer needed.

	* process.c (waitpid, WUNTRACED) [!WNOHANG]: Remove definitions,
	no longer needed.
	(record_child_status_change): Remove the setting of
	record_at_most_one_child for the !WNOHANG case.

1062 1063 1064 1065 1066 1067 1068 1069 1070 1071
2012-11-17  Paul Eggert  <eggert@cs.ucla.edu>

	Fix problems in ns port found by static checking.
	* nsterm.m: Include <pthread.h>, for pthread_mutex_lock etc.
	(hold_event, setPosition:portion:whole:): Send SIGIO only to self,
	not to process group.
	(ns_select): Use emacs_write, not write, as that's more robust
	in the presence of signals.
	(fd_handler:): Check for read errors.

1072 1073 1074 1075
2012-11-16  Glenn Morris  <rgm@gnu.org>

	* editfns.c (Fmessage): Mention message-log-max.  (Bug#12849)

1076
2012-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
1077 1078 1079

	* eval.c (Finteractive_p): Revert lexbind-merge mishap.

1080
2012-11-16  Eli Zaretskii  <eliz@gnu.org>
1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091

	* w32proc.c (timer_loop): Make sure SuspendThread and ResumeThread
	use the same value of thread handle.
	(start_timer_thread): If the timer thread exited (due to error),
	clean up by closing the two handles it used.  Duplicate the caller
	thread's handle here, so it gets duplicated only once, when
	launching the timer thread.  Set priority of the timer thread, not
	the caller thread.
	(getitimer): Don't duplicate the caller thread's handle here.
	(Bug#12832)

1092
2012-11-16  Jan Djärv  <jan.h.d@swipnet.se>
1093 1094 1095 1096

	* nsterm.m (hold_event): Send SIGIO to make sure ns_read_socket is
	called (Bug#12834).

1097 1098 1099 1100 1101 1102
2012-11-16  Paul Eggert  <eggert@cs.ucla.edu>

	Remove no-longer-used pty_max_bytes variable.
	* process.c (pty_max_bytes): Remove; unused.
	(send_process): Do not set it.

1103 1104 1105 1106 1107
2012-11-15  Juanma Barranquero  <lekktu@gmail.com>

	* makefile.w32-in ($(BLD)/dispnew.$(O), $(BLD)/emacs.$(O)):
	Update dependencies.

1108 1109 1110 1111 1112 1113 1114
2012-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	* eval.c (mark_backtrace) [BYTE_MARK_STACK]: Remove stray '*'.
	This follows up on the 2012-09-29 patch that removed indirection
	for the 'function' field.  Reported by Sergey Vinokurov in
	<http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00263.html>.

1115 1116 1117 1118 1119 1120 1121 1122 1123
2012-11-14  Eli Zaretskii  <eliz@gnu.org>

	* w32.c (faccessat): Rename from sys_faccessat.  (No need to use a
	different name, as the MS runtime does not have such a function,
	and probably never will.)  All callers changed.  Ignore DIRFD
	value if PATH is an absolute file name, to match Posix spec
	better.  If AT_SYMLINK_NOFOLLOW is set in FLAGS, don't resolve
	symlinks.

1124 1125 1126 1127 1128
2012-11-14  Dmitry Antipov  <dmantipov@yandex.ru>

	* xdisp.c (echo_area_display, redisplay_internal):
	Omit redundant check whether frame_garbaged is set.

1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195
2012-11-14  Paul Eggert  <eggert@cs.ucla.edu>

	Use faccessat, not access, when checking file permissions (Bug#12632).
	This fixes a bug that has been present in Emacs since its creation.
	It was reported by Chris Torek in 1983 even before GNU Emacs existed,
	which must set some sort of record.  (Torek's bug report was against
	a predecessor of GNU Emacs, but GNU Emacs happened to have the
	same common flaw.)  See Torek's Usenet posting
	"setuid/setgid programs & Emacs" Article-I.D.: sri-arpa.858
	Posted: Fri Apr  8 14:18:56 1983.
	* Makefile.in (LIB_EACCESS): New macro.
	(LIBES): Use it.
	* callproc.c (init_callproc):
	* charset.c (init_charset):
	* fileio.c (check_existing, check_executable, check_writable)
	(Ffile_readable_p):
	* lread.c (openp, load_path_check):
	* process.c (allocate_pty):
	* xrdb.c (file_p):
	Use effective UID when checking permissions, not real UID.
	* callproc.c (init_callproc):
	* charset.c (init_charset):
	* lread.c (load_path_check, init_lread):
	Test whether directories are accessible, not merely whether they exist.
	* conf_post.h (GNULIB_SUPPORT_ONLY_AT_FDCWD): New macro.
	* fileio.c (check_existing, check_executable, check_writable)
	(Ffile_readable_p):
	Use symbolic names instead of integers for the flags, as they're
	portable now.
	(check_writable): New arg AMODE.  All uses changed.
	Set errno on failure.
	(Ffile_readable_p): Use faccessat, not stat + open + close.
	(Ffile_writable_p): No need to call check_existing + check_writable.
	Just call check_writable and then look at errno.  This saves a syscall.
	dir should never be nil; replace an unnecessary runtime check
	with an eassert.  When checking the parent directory of a nonexistent
	file, check that the directory is searchable as well as writable, as
	we can't create files in unsearchable directories.
	(file_directory_p): New function, which uses 'stat' on most platforms
	but faccessat with D_OK (for efficiency) if WINDOWSNT.
	(Ffile_directory_p, Fset_file_times): Use it.
	(file_accessible_directory_p): New function, which uses a single
	syscall for efficiency.
	(Ffile_accessible_directory_p): Use it.
	* xrdb.c (file_p): Use file_directory_p.
	* lisp.h (file_directory_p, file_accessible_directory_p): New decls.
	* lread.c (openp): When opening a file, use fstat rather than
	stat, as that avoids a permissions race.  When not opening a file,
	use file_directory_p rather than stat.
	(dir_warning): First arg is now a usage string, not a format.
	Use errno.  All uses changed.
	* nsterm.m (ns_term_init): Remove unnecessary call to file-readable
	that merely introduced a race.
	* process.c, sysdep.c, term.c: All uses of '#ifdef O_NONBLOCK'
	changed to '#if O_NONBLOCK', to accommodate gnulib O_* style,
	and similarly for the other O_* flags.
	* w32.c (sys_faccessat): Rename from sys_access and switch to
	faccessat's API.  All uses changed.
	* xrdb.c: Do not include <sys/stat.h>; no longer needed.
	(magic_db): Rename from magic_file_p.
	(magic_db, search_magic_path): Return an XrmDatabase rather than a
	char *, so that we don't have to test for file existence
	separately from opening the file for reading.  This removes a race
	fixes a permission-checking problem, and simplifies the code.
	All uses changed.
	(file_p): Remove; no longer needed.

1196 1197 1198 1199 1200 1201
2012-11-13  Dmitry Antipov  <dmantipov@yandex.ru>

	Omit glyphs initialization at startup.
	* dispnew.c (glyphs_initialized_initially_p): Remove.
	(adjust_frame_glyphs_initially): Likewise.  Adjust users.
	(Fredraw_frame): Move actual code from here...
Eli Zaretskii's avatar
Eli Zaretskii committed
1202
	(redraw_frame): ...to here.  Add eassert.  Adjust comment.
1203 1204 1205
	(Fredraw_display): Use redraw_frame.
	* xdisp.c (clear_garbaged_frames): Likewise.

1206
2012-11-13  Eli Zaretskii  <eliz@gnu.org>
1207 1208 1209 1210 1211 1212 1213

	* xdisp.c (decode_mode_spec): Limit the value of WIDTH argument
	passed to pint2str and pint2hrstr to be at most the size of the
	frame's decode_mode_spec_buffer.  This avoids crashes with very
	large values of FIELD_WIDTH argument to decode_mode_spec.
	(Bug#12867)

1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224
2012-11-13  Paul Eggert  <eggert@cs.ucla.edu>

	Fix a race with verify-visited-file-modtime (Bug#12863).
	Since at least 1991 Emacs has ignored an mtime difference of no
	more than one second, but my guess is that this was to work around
	file system bugs that were fixed long ago.  Since the race is
	causing problems now, let's remove that code.
	* fileio.c (Fverify_visited_file_modtime): Do not accept a file
	whose time stamp is off by no more than a second.  Insist that the
	file time stamps match exactly.

1225 1226 1227 1228 1229 1230 1231
2012-11-12  Dmitry Antipov  <dmantipov@yandex.ru>

	* frame.h (struct frame): Convert external_tool_bar member to
	1-bit unsigned bitfield.
	* termhooks.h (struct terminal): Remove mouse_moved member since
	all users are long dead.  Adjust comment on mouse_position_hook.

1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248
2012-11-12  Dmitry Antipov  <dmantipov@yandex.ru>

	Simplify by using FOR_EACH_FRAME here and there.
	* frame.c (next_frame, prev_frame, other_visible_frames)
	(delete_frame, visible-frame-list): Use FOR_EACH_FRAME.
	* w32term.c (x_window_to_scroll_bar): Likewise.
	* window.c (window_list): Likewise.
	* xdisp.c (x_consider_frame_title): Likewise.
	* xfaces.c ( Fdisplay_supports_face_attributes_p): Likewise.
	* xfns.c (x_window_to_frame, x_any_window_to_frame)
	(x_menubar_window_to_frame, x_top_window_to_frame): Likewise.
	* xmenu.c (menubar_id_to_frame): Likewise.
	* xselect.c (frame_for_x_selection): Likewise.
	* xterm.c (x_frame_of_widget, x_window_to_scroll_bar)
	(x_window_to_menu_bar): Likewise.
	* w32fns.c (x_window_to_frame): Likewise.  Adjust comment.

1249 1250
2012-11-12  Paul Eggert  <eggert@cs.ucla.edu>

1251 1252
	* data.c (Qdefalias_fset_function): Now static.

1253 1254 1255 1256 1257 1258
	Another tweak to vectorlike_header change.
	* alloc.c (struct Lisp_Vectorlike_Free, NEXT_IN_FREE_LIST):
	Remove, and replace all uses with ...
	(next_in_free_list, set_next_in_free_list):
	New functions, which respect C's aliasing rules better.

1259 1260 1261 1262 1263
2012-11-11  Paul Eggert  <eggert@cs.ucla.edu>

	* window.c (list4i): Rename from 'quad'.  All uses changed.
	Needed because <sys/types.h> defines 'quad' on Solaris 10.

1264 1265 1266 1267 1268
2012-11-11  Juanma Barranquero  <lekktu@gmail.com>

	* xdisp.c (start_hourglass) [HAVE_NTGUI]: Add block to silence
	warning about mixing declarations and code in ISO C90.

1269
2012-11-10  Martin Rudalics  <rudalics@gmx.at>
1270 1271 1272 1273

	* window.c (Fsplit_window_internal): Set combination limit of
	new parent window to t iff Vwindow_combination_limit is t;
	fixing a regression introduced with the change from 2012-09-22.
1274
	(Fset_window_combination_limit): Fix doc-string.
1275

1276
2012-11-10  Eli Zaretskii  <eliz@gnu.org>
1277 1278 1279 1280

	* xdisp.c (try_scrolling): Fix correction of aggressive-scroll
	amount when the scroll margins are too large.  When scrolling
	backwards in the buffer, give up if cannot reach point or the
1281 1282
	scroll margin within a reasonable number of screen lines.
	Fixes point position in window under scroll-up/down-aggressively when
1283 1284 1285
	point is positioned many lines beyond the window top/bottom.
	(Bug#12811)

1286 1287 1288 1289
	* ralloc.c (relinquish): If real_morecore fails to return memory
	to the system, don't crash; instead, leave the last heap
	unchanged and return.  (Bug#12774)

1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300
2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>

	* lisp.h (AUTOLOADP): New macro.
	* eval.c (Fautoload): Don't attach to loadhist, call Fdefalias instead.
	* data.c (Ffset): Remove special ad-advice-info handling.
	(Fdefalias): Handle autoload definitions and new Qdefalias_fset_function.
	(Fsubr_arity): CSE.
	(Finteractive_form): Simplify.
	(Fquo): Don't insist on having at least 2 arguments.
	(Qdefalias_fset_function): New var.

1301 1302
2012-11-09  Jan Djärv  <jan.h.d@swipnet.se>

1303 1304
	* image.c (xpm_make_color_table_h): Change to hashtest_equal.

1305 1306 1307 1308
	* nsfont.m (Qcondensed, Qexpanded): New variables.
	(ns_descriptor_to_entity): Restore Qcondensed, Qexpanded setting.
	(syms_of_nsfont): Defsym Qcondensed, Qexpanded.

1309 1310 1311 1312 1313 1314 1315
2012-11-09  Dmitry Antipov  <dmantipov@yandex.ru>

	Fix recently introduced crash on MS-Windows (Bug#12839).
	* w32term.h (struct scroll_bar): Use convenient header.
	(SCROLL_BAR_VEC_SIZE): Remove.
	* w32term.c (x_scroll_bar_create): Use VECSIZE.

1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326
2012-11-09  Dmitry Antipov  <dmantipov@yandex.ru>

	Tweak last vectorlike_header change.
	* alloc.c (struct Lisp_Vectorlike_Free): Special type to represent
	vectorlike object on the free list.  This is introduced to avoid
	some (but not all) pointer casting and aliasing problems, see
	http://lists.gnu.org/archive/html/emacs-devel/2012-11/msg00105.html.
	* .gdbinit (pvectype, pvecsize): New commands to examine vectorlike
	objects.
	(xvectype, xvecsize): Use them to examine Lisp_Object values.

1327 1328
2012-11-09  Jan Djärv  <jan.h.d@swipnet.se>

1329
	* nsfont.m (ns_descriptor_to_entity): Qcondensed and Qexpanded has
1330 1331
	been removed, so remove them here also.

1332 1333 1334 1335 1336
2012-11-09  Stefan Monnier  <monnier@iro.umontreal.ca>

	* doc.c (Fdocumentation): Handle new property
	dynamic-docstring-function to replace the old ad-advice-info.

1337 1338 1339 1340
2012-11-09  Paul Eggert  <eggert@cs.ucla.edu>

	* fns.c (Qeql, hashtest_eq): Now static.

1341 1342 1343 1344 1345 1346 1347
2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>

	* lisp.h (XHASH): Redefine to be imperfect and fit in a Lisp int.
	* fns.c (hashfn_eq, hashfn_eql, sxhash):
	* profiler.c (hashfn_profiler): Don't use XUINT on non-integers.
	* buffer.c (compare_overlays): Use XLI rather than XHASH.

1348 1349 1350 1351 1352 1353 1354 1355 1356
2012-11-08  Paul Eggert  <eggert@cs.ucla.edu>

	Use same hash function for hashfn_profiler as for hash_string etc.
	* fns.c (SXHASH_COMBINE): Remove.  All uses replaced by sxhash_combine.
	* lisp.h (sxhash_combine): New inline function, with the contents
	of the old SXHASH_COMBINE.
	* profiler.c (hashfn_profiler): Use it, instead of having a
	special hash function containing a comparison that always yields 1.

1357 1358 1359 1360 1361 1362 1363
2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>

	* xfaces.c (Qultra_light, Qreverse_oblique, Qreverse_italic)
	(Qultra_condensed, Qextra_condensed, Qcondensed, Qsemi_condensed)
	(Qsemi_expanded, Qextra_expanded, Qexpanded, Qultra_expanded):
	Remove unused vars.

1364 1365 1366 1367 1368
2012-11-08  Jan Djärv  <jan.h.d@swipnet.se>

	* image.c (xpm_make_color_table_h): Fix compiler error because
	make_hash_table changed.

1369 1370 1371 1372
2012-11-08  Thomas Kappler <tkappler@gmail.com> (tiny change)

	* nsfont.m (ns_findfonts): Handle empty matchingDescs (Bug#11541).

1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399
2012-11-08  Stefan Monnier  <monnier@iro.umontreal.ca>

	Use ad-hoc comparison function for the profiler's hash-tables.
	* profiler.c (Qprofiler_backtrace_equal, hashtest_profiler): New vars.
	(make_log): Use them.
	(handle_profiler_signal): Don't inhibit quit any longer since we don't
	call Fequal any more.
	(Ffunction_equal): New function.
	(cmpfn_profiler, hashfn_profiler): New functions.
	(syms_of_profiler): Initialize them.
	* lisp.h (struct hash_table_test): New struct.
	(struct Lisp_Hash_Table): Use it.
	* alloc.c (mark_object): Mark hash_table_test fields of hash tables.
	* fns.c (make_hash_table): Take a struct to describe the test.
	(cmpfn_eql, cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql)
	(hashfn_equal, hashfn_user_defined): Adjust to new calling convention.
	(hash_lookup, hash_remove_from_table): Move assertion checking of
	hashfn result here.  Check hash-equality before calling cmpfn.
	(Fmake_hash_table): Adjust call to make_hash_table.
	(hashtest_eq, hashtest_eql, hashtest_equal): New structs.
	(syms_of_fns): Initialize them.
	* emacs.c (main): Move syms_of_fns earlier.
	* xterm.c (syms_of_xterm):
	* category.c (hash_get_category_set): Adjust call to make_hash_table.
	* print.c (print_object): Adjust to new hash-table struct.
	* composite.c (composition_gstring_put_cache): Adjust to new hashfn.

Eli Zaretskii's avatar
Eli Zaretskii committed
1400 1401 1402 1403 1404 1405
2012-11-08  Eli Zaretskii  <eliz@gnu.org>

	* w32fns.c (modifier_set): Fix handling of Scroll Lock when the
	value of w32-scroll-lock-modifier is neither nil nor one of the
	known key modifiers.  (Bug#12806)

1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452
2012-11-08  Dmitry Antipov  <dmantipov@yandex.ru>

	Shrink struct vectorlike_header to the only size field.
	* lisp.h (enum pvec_type): Avoid explicit enum member values.
	Adjust comment.
	(enum More_Lisp_Bits): Change PSEUDOVECTOR_SIZE_BITS and
	PVEC_TYPE_MASK to arrange new bitfield in the vector header.
	(PSEUDOVECTOR_REST_BITS, PSEUDOVECTOR_REST_MASK): New members.
	(PSEUDOVECTOR_AREA_BITS): New member used to extract subtype
	information from the vector header.  Adjust comment.
	(XSETPVECTYPE, XSETPVECTYPESIZE, XSETTYPED_PSEUDOVECTOR)
	(PSEUDOVECTOR_TYPEP, DEFUN): Adjust to match new vector header
	layout.
	(XSETSUBR, SUBRP): Adjust to match new Lisp_Subr layout.
	(struct vectorlike_header): Remove next member.  Adjust comment.
	(struct Lisp_Subr): Add convenient header.  Adjust comment.
	(allocate_pseudovector): Adjust prototype.
	* alloc.c (mark_glyph_matrix, mark_face_cache, allocate_string)
	(sweep_string, lisp_malloc): Remove useless prototypes.
	(enum mem_type): Adjust comment.
	(NEXT_IN_FREE_LIST): New macro.
	(SETUP_ON_FREE_LIST): Adjust XSETPVECTYPESIZE usage.
	(Fmake_bool_vector): Likewise.
	(struct large_vector): New type to represent allocation unit for
	the vectors with the memory footprint more than VBLOOCK_BYTES_MAX.
	(large_vectors): Change type to struct large_vector.
	(allocate_vector_from_block): Simplify.
	(PSEUDOVECTOR_NBYTES): Replace with...
	(vector_nbytes): ...new function.  Adjust users.
	(sweep_vectors): Adjust processing of large vectors.
	(allocate_vectorlike): Likewise.
	(allocate_pseudovector): Change type of 3rd arg to enum pvec_type.
	Add easserts.  Adjust XSETPVECTYPESIZE usage.
	(allocate_buffer): Use BUFFER_PVEC_INIT.
	(live_vector_p): Adjust to match large vector.
	* buffer.c (init_buffer_once): Use BUFFER_PVEC_INIT.
	* buffer.h (struct buffer): Add next member.
	(BUFFER_LISP_SIZE, BUFFER_REST_SIZE, BUFFER_PVEC_INIT):
	New macros.
	(FOR_EACH_BUFFER): Adjust to match struct buffer change.
	* fns.c (internal_equal): Adjust to match enum pvec_type change.
	(copy_hash_table): Adjust to match vector header change.
	* lread.c (defsubr): Use XSETPVECTYPE.
	* .gdbinit (xpr, xbacktrace): Adjust to match vector header change.
	(xvectype): Likewise.  Print PVEC_NORMAL_VECTOR for regular vectors.
	(xvecsize): New command.

1453 1454 1455 1456 1457 1458 1459
2012-11-08  Dmitry Antipov  <dmantipov@yandex.ru>

	* keyboard.c (event_to_kboard): Do not dereference
	frame_or_window field of SELECTION_REQUEST_EVENT
	and SELECTION_CLEAR_EVENT events (Bug#12814).
	* xterm.h (struct selection_input_event): Adjust comment.

1460 1461
2012-11-07  Eli Zaretskii  <eliz@gnu.org>

1462 1463 1464
	* w32fns.c (modifier_set): Don't report modifiers from toggle key,
	such as Scroll Lock, if the respective keys are treated as
	function keys, not as modifiers.  This avoids destroying non-ASCII
1465
	keyboard input when Scroll Lock is toggled ON.  (Bug#12806)
1466

1467 1468 1469 1470
2012-11-07  Dmitry Antipov  <dmantipov@yandex.ru>

	* xfns.c (Fx_wm_set_size_hint): Use check_x_frame.  Adjust docstring.

1471 1472 1473 1474 1475 1476 1477 1478 1479
2012-11-06  Paul Eggert  <eggert@cs.ucla.edu>

	Restore some duplicate definitions (Bug#12814).
	This undoes part of the 2012-11-03 changes.  Some people build
	with plain -g rather than with -g3, and they need the duplicate
	definitions for .gdbinit to work; see <http://bugs.gnu.org/12814#26>.
	* lisp.h (GCTYPEBITS, ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK):
	Define as macros, as well as as enums or as constants.

1480 1481 1482 1483 1484
2012-11-06  Jan Djärv  <jan.h.d@swipnet.se>

	* nsterm.m (convert_ns_to_X_keysym, keyDown:): Add NSNumericPadKeyMask
	to keypad keys (Bug#12816).

1485 1486 1487 1488 1489 1490 1491 1492 1493
2012-11-06  Paul Eggert  <eggert@cs.ucla.edu>

	Minor adjustments of recently-changed frame functions.
	* buffer.c (Fbuffer_list): Omit CHECK_FRAME, since arg is already
	known to be a frame (we're in the FRAMEP branch).
	* lisp.h (Qframep): Remove decl.  frame.h declares this.
	* window.c (quad): Args are of type EMACS_INT, not ptrdiff_t,
	since they're meant for Lisp fixnum values.

1494 1495 1496 1497 1498 1499 1500
2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>

	* window.c (Fwindow_combination_limit): Revert to the only
	required argument and adjust docstring as suggested in
	http://lists.gnu.org/archive/html/emacs-diffs/2012-11/msg01082.html
	by Martin Rudalics <rudalics@gmx.at>.

1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535
2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>

	Widely used frame validity and checking functions.
	* frame.h (decode_live_frame, decode_any_frame): Add prototypes.
	* frame.c (decode_live_frame, decode_any_frame): New functions.
	(delete_frame, Fredirect_frame_focus, Fframe_parameters)
	(Fframe_parameter, Fframe_char_height, Fframe_char_width)
	(Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width)
	(Fframe_pointer_visible_p): Use decode_any_frame.
	(Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame)
	(Fraise_frame, Flower_frame, Fmodify_frame_parameters)
	(Fset_frame_height, Fset_frame_width): Use decode_live_frame.
	(Fframe_focus): Likewise.  Allow zero number of arguments.
	Adjust docstring.
	(frame_buffer_list, frame_buffer_predicate): Remove.
	* lisp.h (frame_buffer_predicate): Remove prototype.
	* buffer.c (Fother_buffer): Use decode_any_frame.
	* xdisp.c (Ftool_bar_lines_needed): Likewise.
	* xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise.
	* font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font)
	(Fclose_font, Ffont_info): Use decode_live_frame.
	* fontset.c (check_fontset_name): Likewise.
	* terminal.c (Fframe_terminal): Likewise.
	* w32fns.c (check_x_frame): Likewise.
	* window.c (Fminibuffer_window, Fwindow_at)
	(Fcurrent_window_configuration): Likewise.
	(Frun_window_configuration_change_hook, Fwindow_resize_apply):
	Likewise.  Allow zero number of arguments.  Adjust docstring.
	* dispnew.c (Fredraw_frame): Likewise.
	* xfaces.c (frame_or_selected_frame): Remove.
	(Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font)
	(Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p)
	(Fframe_face_alist): Use decode_live_frame.
	* xfns.c (check_x_frame): Likewise.

1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547
2012-11-06  Dmitry Antipov  <dmantipov@yandex.ru>

	* window.c (quad): New function.
	(Fwindow_edges, Fwindow_pixel_edges, Fwindow_inside_edges)
	(Fwindow_absolute_pixel_edges, Fwindow_inside_absolute_pixel_edges)
	(Fwindow_inside_pixel_edges, Fpos_visible_in_window_p)
	(Fwindow_line_height): Use it.
	(Fwindow_fringes): Use list3.
	(Fwindow_scroll_bars): Use list4.
	(Fwindow_frame, Fwindow_top_child, Fwindow_left_child)
	(Fwindow_combination_limit): Allow zero number of arguments.

1548 1549 1550 1551
2012-11-05  Eli Zaretskii  <eliz@gnu.org>

	* makefile.w32-in ($(BLD)/w32fns.$(O)): Depend on $(NT_INC)/unistd.h.

Juanma Barranquero's avatar
Juanma Barranquero committed
1552
	* w32fns.c: Include unistd.h, to avoid compiler warnings on Cygwin.
1553
	(emacs_abort) [CYGWIN]: Don't call _open_osfhandle; instead, use
1554
	file descriptor 2 for standard error.  (Bug#12805)
1555

1556 1557 1558 1559
2012-11-05  Chong Yidong  <cyd@gnu.org>

	* process.c (wait_reading_process_output): Revert previous change.

Paul Eggert's avatar
Paul Eggert committed
1560 1561
2012-11-05  Paul Eggert  <eggert@cs.ucla.edu>

1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581
	Assume at least POSIX.1-1988 for getpgrp, setpgid, setsid (Bug#12800).
	This removes code that has been obsolete since around 1990.
	* callproc.c (Fcall_process):
	* emacs.c (main):
	* process.c (create_process):
	* term.c (dissociate_if_controlling_tty):
	Assume setsid exists.
	* callproc.c (child_setup): Assume setpgid exists and behaves as
	per POSIX.1-1988 or later.
	* conf_post.h (setpgid) [!HAVE_SETPGID]: Remove.
	* emacs.c (shut_down_emacs):
	* sysdep.c (sys_suspend, init_foreground_group):
	Assume getpgrp behaves as per POSIX.1-1998 or later.
	* msdos.c (setpgrp): Remove.
	(tcgetpgrp, setpgid, setsid): New functions.
	* systty.h (EMACS_GETPGRP): Remove.  All callers now use getpgrp.
	* term.c (no_controlling_tty): Remove; unused.
	* w32proc.c (setpgrp): Remove.
	(setsid, tcgetpgrp): New functions.

Paul Eggert's avatar
Paul Eggert committed
1582 1583 1584 1585 1586
	Simplify by assuming __fpending.
	* 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.

Paul Eggert's avatar
Paul Eggert committed
1587 1588
2012-11-04  Paul Eggert  <eggert@cs.ucla.edu>

1589 1590
	Remove EMACS_OUTQSIZE+sleep hack.
	* dispnew.c (update_frame_1): Remove hack for terminals slower