X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/9dbda100755158fd070931748f2b80ad09bc6815..929aeac608c271b2448dffec29aeea85c69d6bff:/src/ChangeLog diff --git a/src/ChangeLog b/src/ChangeLog index 08eb9b50a9..1b8b3c5600 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,9 +1,695 @@ +2013-02-28 Eli Zaretskii + + * w32.c (sys_open): Don't reset the flags for FD in fd_info[]. + (Bug#13546). + +2013-02-27 Eli Zaretskii + + * filelock.c (create_lock_file) [WINDOWSNT]: Use _sopen with + _SH_DENYRW flag, instead of emacs_open, to deny any other process + access to the lock file until it is written and closed. + (Bug#13807) + +2013-02-27 Paul Eggert + + * callint.c (Qcall_interactively): + * macros.c (Qexecute_kbd_macro): + Now static. + +2013-02-26 Bastien Guerry + + * window.c (Frecenter): Tiny docstring enhancement. + +2013-02-26 Paul Eggert + + Minor textprop integer cleanup. + * intervals.h, textprop.c (add_text_properties_from_list): + Return void, not int, since nobody uses the return value. + * textprop.c (validate_plist, add_properties, remove_properties) + (Fadd_text_properties): + Don't assume list length fits in int. + (interval_has_all_properties, interval_has_some_properties) + (interval_has_some_properties_list, add_properties, remove_properties) + (Fadd_text_properties, Fremove_text_properties) + (Fremove_list_of_text_properties, text_property_stickiness): + Use bool for booleans. + (Fadd_text_properties, Fremove_text_properties): + (Fremove_list_of_text_properties): + Reindent do-while as per GNU style. + +2013-02-25 Eli Zaretskii + + Implement CLASH_DETECTION for MS-Windows. + + * filelock.c [WINDOWSNT]: Include w32.h. + (MAKE_LOCK_NAME): Don't use 'lock', it clashes with MS runtime + function of that name. Up-case the macro arguments. + (IS_LOCK_FILE): New macro. + (fill_in_lock_file_name): Use IS_LOCK_FILE instead of S_ISLNK. + (create_lock_file): New function, with body extracted from + lock_file_1. + [WINDOWSNT]: Implement lock files by writing a regular file with + the lock information as its contents. + (read_lock_data): New function, on Posix platforms just calls + emacs_readlinkat. + [WINDOWSNT]: Read the lock info from the file. + (current_lock_owner): Call read_lock_data instead of calling + emacs_readlinkat directly. + (lock_file) [WINDOWSNT]: Run the file name through + dostounix_filename. + + * w32proc.c (sys_kill): Support the case of SIG = 0, in which case + just check if the process by that PID exists. + + * w32.c (sys_open): Don't reset the _O_CREAT flag if _O_EXCL is + also present, as doing so will fail to error out if the file + already exists. + + * makefile.w32-in ($(BLD)/filelock.$(O)): Depend on src/w32.h. + + * textprop.c (Fadd_text_properties, Fremove_text_properties) + (Fremove_list_of_text_properties): Skip all of the intervals in + the region between START and END that already have resp. don't + have the requested properties, not just the first one. Add + assertions that the loop afterwards always modifies the + properties. (Bug#13743) + +2013-02-25 Stefan Monnier + + * callint.c (Fcall_interactively): Use the right lexical environment + for `interactive' specs (bug#13811). + * eval.c (Feval): Accept a lexical environment. + +2013-02-25 Paul Eggert + + Simplify data_start configuration (Bug#13783). + This is a followon simplification to the fix for Bug#13650. + * Makefile.in (LD_FIRSTFLAG, LIB_GCC, CRT_DIR, LIB_STANDARD) + (START_FILES): Remove. All uses removed. + (otherobj): Remove $(VMLIMIT_OBJ), as it's now first. + (ALLOBJS): Move here from autodeps.mk, and with VMLIMITS_OBJ first. + (buildobj.h): Use it. + ($(ALLOBJS)): Depend on globals.h. + (temacs$(EXEEXT)): Use $(ALLOBJS). + * autodeps.mk (ALLOBJS): Move to Makefile.in. + * deps.mk (vm-limit.o): + * makefile.w32-in ($(BLD)/vm-limit.$(O)): + Do not depend on mem-limits.h. + * emacs.c (__do_global_ctors, __do_global_ctors_aux) + (__do_global_dtors, __CTOR_LIST__, __DTOR_LIST__) + [__GNUC__ && !ORDINARY_LINK]: Remove. + * mem-limits.h, pre-crt0.c: Remove. + * unexaix.c, unexcoff.c: Don't include mem-limits.h. + * unexcoff.c (etext): New decl. + (make_hdr): Use DATA_START instead of start_of_data. + * vm-limit.c: Move most of mem-limits.h's contents here. + (data_start): New decl. It's OK if this is approximate, + so simplify-away some unnecessary exactness. + (POINTER): Remove; all uses removed. + (data_space_start): Now char *, to avoid casts. + (exceeds_lisp_ptr): New function, replacing the old + EXCEEDS_LISP_PTR macro. All uses changed. + (check_memory_limits): Simplify and remove casts. + (start_of_data) [!CANNOT_DUMP || !SYSTEM_MALLOC]: Remove. + (memory_warnings): Use data_start instead of start_of_data. + +2013-02-24 Andreas Schwab + + * xdisp.c (set_message): Only check for debug-on-message if STRING + is a string. (Bug#13797) + +2013-02-24 Paul Eggert + + Fix regression introduced by July 10 filelock.c patch. + * filelock.c (fill_in_lock_file_name): Fix crash caused by the + 2012-07-10 patch to this file. Reported by Eli Zaretskii in + + and diagnosed by Andreas Schwab in + . + +2013-02-22 Paul Eggert + + Assume C89 or better. + * ralloc.c (SIZE, POINTER, NIL): + * vm-limit.c (POINTER): + Remove, replacing all uses with C89 equivalents. These old + symbols were present only for porting to pre-C89 platforms. + +2013-02-22 Claudio Bley + + * w32.c (emacs_gnutls_pull): Don't call 'select', and don't loop. + This avoids warning messages reported as part of Bug#13546. + +2013-02-21 Ken Brown + + * sheap.c (report_sheap_usage): Fix arguments of message1_no_log. + +2013-02-20 Stefan Monnier + + * sheap.c (report_sheap_usage): Prefer message1_nolog. + + * keyboard.c (Qcommand_execute): New var. + (command_loop_1, read_char): Use it. + (Fcommand_execute): Remove, replace by an Elisp implementation. + (syms_of_keyboard): Adjust accordingly. + +2013-02-19 Daniel Colascione + + * sheap.c (report_sheap_usage): Use message, not message1, so + that we don't try to create a buffer while we're in the middle + of dumping Emacs. Explain why. + +2013-02-20 Dmitry Antipov + * search.c (find_newline): Return byte position in bytepos. + Adjust comment. + (find_next_newline_no_quit, find_before_next_newline): + Add bytepos argument. + * lisp.h (find_newline, find_next_newline_no_quit) + (find_before_next_newline): Adjust prototypes. + * bidi.c (bidi_find_paragraph_start): + * editfns.c (Fconstrain_to_field, Fline_end_position): + * indent.c (compute_motion, vmotion): + * xdisp.c (back_to_previous_line_start, forward_to_next_line_start): + (get_visually_first_element, move_it_vertically_backward): + Adjust users and avoid calls to CHAR_TO_BYTE where appropriate. + +2013-02-19 Eli Zaretskii + + * w32proc.c (new_child): Avoid leaking handles if the subprocess + resources were not orderly released. + +2013-02-17 Eli Zaretskii + + * xdisp.c (x_draw_vertical_border): For a window that is neither + the leftmost nor the rightmost, redraw both the left and the right + vertical borders. (Bug#13723) + +2013-02-17 Stefan Monnier + + * xml.c (init_libxml2_functions): + * sound.c (sound_warning): + * sheap.c (report_sheap_usage): + * process.c (wait_reading_process_output): + * msdos.c (XMenuActivate): + * macros.c (Fstart_kbd_macro, Fend_kbd_macro): + * keyboard.c (top_level_1): + * editfns.c (Fmessage, Fmessage_box): + * callint.c (Fcall_interactively): + * fns.c (Fyes_or_no_p): Prefer `message1' over `message'. + +2013-02-17 Jan Djärv + + * xterm.c (syms_of_xterm): Move scroll-bar-adjust-thumb-portion ... + * frame.c (syms_of_frame): ... to here. + +2013-02-16 Eli Zaretskii + + * w32.c (sys_chown): Remove unused function. + + * w32term.c : Declare 'volatile' + unconditionally. (Bug#9066) + + * w32.c (set_errno): Reset h_errno and don't set it to any other + value. Set errno instead. + (check_errno): Reset h_errno. + (sys_socket, socket_to_fd, sys_bind, sys_connect) + (sys_gethostname, sys_getservbyname, sys_getpeername) + (sys_shutdown, sys_setsockopt, sys_listen, sys_getsockname) + (sys_accept, sys_recvfrom, sys_sendto, fcntl, sys_read): Don't set + h_errno. + (sys_gethostbyname): Set h_errno only errors detected. + +2013-02-15 Paul Eggert + + * process.c (h_errno) [!HAVE_H_ERRNO]: Remove unused decl. + +2013-02-15 Eli Zaretskii + + * keyboard.c (read_char): Fix calculation of auto-save time out + when auto-save-timeout is less than 4. (Bug#13720) + + * w32proc.c (new_child): Free up to 2 slots of dead processes at a + time. Improve diagnostics in DebPrint. (Bug#13546) + + * w32.c (sys_socket, sys_bind, sys_connect, sys_gethostname) + (sys_gethostbyname, sys_getservbyname, sys_getpeername) + (sys_shutdown, sys_setsockopt, sys_listen, sys_getsockname) + (sys_accept, sys_recvfrom, sys_sendto, fcntl): In case of failure, + make sure errno is set to an appropriate value. (Bug#13546) + (socket_to_fd): Add assertion against indexing fd_info[] with a + value that is out of bounds. + (sys_accept): If fd is negative, do not set up the child_process + structure for reading. + +2013-02-15 Dmitry Antipov + + * composite.c (fill_gstring_header): Remove useless prototype. + Break long line. + * lisp.h (message_dolog, compile_pattern): Adjust prototype. + * print.c (PRINTDECLARE, print_object): + * search.c (compile_pattern, fast_looking_at, search_buffer): + (simple_search, boyer_moore, Freplace_match): + * xdisp.c (c_string_pos, number_of_chars, message_dolog): + (get_overlay_arrow_glyph_row, display_mode_element): + (decode_mode_spec_coding, message3): + * xfaces.c (face_at_string_position): Use bool for booleans. + Adjust comments. + +2013-02-15 Paul Eggert + + Fix AIX port (Bug#13650). + * lisp.h (XPNTR) [!USE_LSB_TAG && DATA_SEG_BITS]: + Fix bug introduced in 2012-07-27 change. DATA_SEG_BITS, if set, + was #undeffed earlier, so it cannot be used as a macro here. + Use the constant and not the macro. + +2013-02-15 Eli Zaretskii + + * w32proc.c (new_child): If no vacant slots are found in + child_procs[], make another pass looking for slots whose process + has exited or died. (Bug#13546) + + * w32.c (sys_pipe): When failing due to file descriptors above + MAXDESC, set errno to EMFILE. + (_sys_read_ahead): Update cp->status when failing to read serial + communications input, so that the status doesn't stay at + STATUS_READ_IN_PROGRESS. (Bug#13546) + +2013-02-14 Jan Djärv + + * gtkutil.c (tb_size_cb): New function. + (xg_create_tool_bar): Connect size-allocate to tb_size_cb (Bug#13512). + +2013-02-14 Stefan Monnier + + * keyboard.c (active_maps): Fcurrent_active_maps expects a position, not + an event. + +2013-02-13 Stefan Monnier + + * keyboard.c (syms_of_keyboard): Further tweaks of docstring. + +2013-02-13 Dmitry Antipov + + * font.c (font_range): Add pos_byte argument. Adjust comment + and break long line. + * font.h (font_range): Adjust prototype. + * composite.c (autocmp_chars): Pass byte position to font_range. + Break long line. Remove useless prototype and format comment. + +2013-02-13 Glenn Morris + + * keyboard.c (input-decode-map, key-translation-map): Doc fixes. + +2013-02-13 Paul Eggert + + Improve AIX port some more (Bug#13650). + With this, it should be as good as it was in 23.3, though it's + still pretty bad: the dumped emacs does not run. See Mark Fleishman in + http://lists.gnu.org/archive/html/help-gnu-emacs/2011-04/msg00287.html + * unexaix.c (start_of_text): Remove. + (_data, _text): Declare as char[], not int, as AIX manual suggests. + (bias, lnnoptr, text_scnptr, data_scnptr, load_scnptr) + (orig_load_scnptr, orig_data_scnptr): + Now off_t, not long, since they are file offsets. + (make_hdr): Use _data, not start_of_data (). + This is the key part of the fix. + (make_hdr, unrelocate_symbols): Use off_t for file offsets. + (unrelocate_symbols): Cast pointers to intptr_t, not to ulong. + + * pre-crt0.c (data_start): Initialize to 1. + This ports to compilers that optimize the external declaration + 'int x = 0;' as if it were 'int x;' to shrink the executable. + + Improve AIX port (Bug#13650). + This doesn't fix the bug, but it makes progress: Emacs builds now. + * unexaix.c: Include inttypes.h, stdarg.h. + (report_error, report_error_1): Mark as _Noreturn. + (report_error): Don't report the wrong errno. + (report_error_1): Now varargs. All callers changed. + (make_hdr): Use uintptr_t, not unsigned, when converting pointers + to unsigned. Don't use ADDR_CORRECT, as it no longer exists. + (write_ptr): Use %p to print address rather than %lx and a cast + to unsigned long. Grow buffer a bit, to be safer. + +2013-02-13 Eli Zaretskii + + * bidi.c (bidi_resolve_neutral): After finding the next + non-neutral character, accept NEUTRAL_ON type as well, because + directional control characters, such as LRE and RLE, have their + type converted to that by bidi_resolve_weak. This avoids aborts + when LRE/RLE follows a run of neutrals. + (bidi_move_to_visually_next): Assert that return value of + bidi_peek_at_next_level is non-negative. Negative values will + cause an infloop. + +2013-02-13 Paul Eggert + + Minor getenv-related fixes. + * callproc.c (Fcall_process_region) [!DOS_NT]: + Avoid unnecessary duplicate call to getenv. + * callproc.c (init_callproc): + * dispnew.c (init_display): + * sysdep.c (sys_subshell): + Omit unnecessary cast of getenv or egetenv. + +2013-02-13 Juanma Barranquero + + * makefile.w32-in ($(BLD)/filelock.$(O), $(BLD)/sysdep.$(O)): + Update dependencies. + +2013-02-12 Eli Zaretskii + + * xdisp.c (redisplay_internal): Don't set w->region_showing to the + marker's position. + (display_line): Set w->region_showing to the value of + it->region_beg_charpos, not to -1. This fixes redisplay + optimization when cursor is moved up after M->. (Bug#13623) + (Bug#13626) + (try_scrolling): Scroll text up more if point is too close to ZV + and inside the scroll margin. This makes sure point is moved + outside the scroll margin in these cases. + + * window.h (struct window): region_showing can no longer be + negative. + +2013-02-11 Paul Eggert + + Tune by using memchr and memrchr. + * doc.c (Fsnarf_documentation): + * fileio.c (Fsubstitute_in_file_name): + * search.c (find_newline, scan_newline): + * xdisp.c (pos_visible_p, display_count_lines): + Use memchr and memrchr rather than scanning byte-by-byte. + * search.c (find_newline): Rename from scan_buffer. + Omit first arg TARGET, as it's always '\n'. All callers changed. + + Clean up read_key_sequence a tiny bit more. + * keyboard.c (read_char_x_menu_prompt) [HAVE_MENUS]: + (read_key_sequence): Remove unused locals. + +2013-02-11 Stefan Monnier + + Clean up read_key_sequence a bit; reread active keymaps after first event. + * keyboard.c (read_char, read_char_x_menu_prompt) + (read_char_minibuf_menu_prompt): + Replace nmaps+maps with a single `map' arg. + (follow_key): Operate on a single map. + (active_maps): New function. + (test_undefined): Also return true for nil bindings. + (read_key_sequence): Use active_maps to replace the arrays of keymaps with + a single (composed) keymap. Remember `first_event' to choose the right + set of active keymaps. Recompute the set of keymaps after receiving + the first event. Remove GOBBLE_FIRST_EVENT. + (syms_of_keyboard): Remove inhibit_local_menu_bar_menus. + * keyboard.h (read_char): Update declaration. + * lread.c (read_filtered_event): Adjust call to read_char. + +2013-02-11 Eli Zaretskii + + * xdisp.c (move_it_vertically_backward, move_it_by_lines): + Don't use the limitation on backwards movement when lines are truncated + in the window. (Bug#13675) + +2013-02-11 Dmitry Antipov + + * marker.c (set_marker_internal): If desired position is passed + as a marker, avoid call to buf_charpos_to_bytepos. + * window.c (Fset_window_point): Omit redundant type checking. + (Fset_window_start): Likewise. Format comment. + (window_scroll_pixel_based): Use set_marker_restricted_both + with character and byte positions obtained from an iterator. + (Fset_window_configuration): Use set_marker_restricted_both. + * xdisp.c (message_dolog): Likewise. + +2013-02-10 Eli Zaretskii + + * xdisp.c (move_it_vertically_backward, move_it_by_lines): + When text lines are longer than window's screen lines, don't move back + too far. This speeds up some redisplay operations. (Bug#13675) + +2013-02-10 Dmitry Antipov + + * syntax.c (scan_sexps_forward): Fix byte position calculation + Bug#13664 (a.k.a Bug#13667) introduced with 2013-02-08 change. + +2013-02-10 Paul Eggert + + * fileio.c (Fexpand_file_name): Omit confusing pointer comparison + that was not needed. + +2013-02-09 Paul Eggert + + Minor hashing refactoring. + * fns.c (SXHASH_REDUCE): Move to lisp.h. + (sxhash_float): Return EMACS_UINT, for consistency with the other + hash functions. + * lisp.h (INTMASK): Now a macro, since SXHASH_REDUCE is now a + non-static inline function and therefore can't use static vars. + (SXHASH_REDUCE): Move here from fns.c, and make it inline. + * profiler.c (hashfn_profiler): Use SXHASH_REDUCE, to be consistent + with the other hash functions. + +2013-02-09 Eli Zaretskii + + * callproc.c (Fcall_process_region) [WINDOWSNT]: Make sure the + XXXXXX part of the temporary file pattern is not downcased even + when w32-downcase-file-names is non-nil. (Bug#13661) + + * xdisp.c (decode_mode_spec): Remove handling of %t. + + * msdos.c (careadlinkatcwd): Remove. + +2013-02-08 Stefan Monnier + + * lread.c (skip_dyn_bytes): New function (bug#12598). + (read1): Use it. Use getc instead of READCHAR to read bytes. + (load_each_byte): Remove. Update users. + +2013-02-08 Dmitry Antipov + + * search.c (scan_buffer): Calculate end byte position just once. + (scan_newline): Do not recalculate start_byte. + (search_command): Use eassert. + * syntax.c (struct lisp_parse_state): New member location_byte. + (scan_sexps_forward): Record from_byte and avoid redundant + character to byte position calculation ... + (Fparse_partial_sexp): ... here. Break too long line. + +2013-02-08 Dmitry Antipov + + * lisp.h (make_uninit_vector): New function. + * alloc.c (Fvector, Fmake_byte_code): + * ccl.c (Fregister_ccl_program): + * charset.c (Fdefine_charset_internal, define_charset_internal): + * coding.c (make_subsidiaries, Fdefine_coding_system_internal): + * composite.c (syms_of_composite): + * font.c (Fquery_font, Ffont_info, syms_of_font): + * fontset.c (FONT_DEF_NEW, Fset_fontset_font): + * ftfont.c (ftfont_shape_by_flt): + * indent.c (recompute_width_table): + * nsselect.m (clean_local_selection_data): + * syntax.c (init_syntax_once): + * w32unsubscribe.c (uniscribe_shape): + * window.c (Fcurrent_window_configuration): + * xfaces.c (Fx_family_fonts): + * xselect.c (selection_data_to_lisp_data): Use it. + +2013-02-07 Dmitry Antipov + + * coding.c (Fdefine_coding_system_internal): Use AREF where + argument is known to be a vector. + * fns.c (Flocale_info): Likewise for ASET. + * xselect.c (selection_data_to_lisp_data): Likewise for ASET. + * w32fns.c (w32_parse_hot_key): Likewise for ASIZE and AREF. + +2013-02-05 Jan Djärv + + * nsmenu.m (update_frame_tool_bar): Check for negative tool bar + height. + + * nsterm.h (HAVE_NATIVE_FS): Define if OSX => 10.7. + (EmacsView): Add fs_is_native, fsIsNative, isFullscreen and + updateCollectionBehaviour. + + * nsterm.m (NEW_STYLE_FS): Remove. + (ns_last_use_native_fullscreen): New variable. + (x_make_frame_visible): Replace NEW_STYLE_FS with isFullscreen. + (x_set_window_size): Do not take title bar and tool bar into account + if isFullscreen returns YES. + (ns_fullscreen_hook): Replace NEW_STYLE_FS with isFullscreen. + (check_native_fs): New function. + (ns_select, ns_read_socket): Call check_native_fs if HAVE_NATIVE_FS. + (ns_term_init): Remove NEW_STYLE_FS. + (updateFrameSize:, windowWillResize:toSize:): Only adjust for title bar + and tool bar if isFullscreen returns NO. + (windowDidResize:): Replace NEW_STYLE_FS with fsIsNative. + (initFrameFromEmacs:): Initialize fs_is_native. Replace NEW_STYLE_FS + with HAVE_NATIVE_FS. + (window:willUseFullScreenPresentationOptions:): New method. + (windowDidEnterFullScreen:): Replace NEW_STYLE_FS with fsIsNative. + Hide toolbar if not enabled (Bug#13444). + (windowDidExitFullScreen:): Call updateCollectionBehaviour. + Restore tool bar if enabled, hide it otherwise (Bug#13444). + (fsIsNative, isFullscreen, updateCollectionBehaviour): New methods. + (toggleFullScreen:): If fs_is_native, call toggleFullScreen on + window. Do no set FRAME_EXTERNAL_TOOL_BAR (f) to 0. + Check FRAME_EXTERNAL_TOOL_BAR (f) before restoring + FRAME_TOOLBAR_HEIGHT (f). Call updateFrameSize when going non-fs. + (syms_of_nsterm): Add ns-use-native-fullscreen. + +2013-02-04 Paul Eggert + + * fileio.c (Qchoose_write_coding_system): Now static. + +2013-02-04 Eli Zaretskii + + * xdisp.c (window_buffer_changed): region_showing can be negative, + which still means region is being displayed. + (redisplay_internal): Resurrect code that forced redisplay of the + whole window when showing region and the mark has changed. + Record the new mark position to allow redisplay optimizations. + (display_line): If it->region_beg_charpos is non-zero, set the + window's region_showing member to -1. (Bug#13623) (Bug#13626) + + * window.h (struct window) : Declare ptrdiff_t, + not bitfield of 1 bit. + +2013-02-03 Daniel Colascione + + * emacs.c: Use execvp, not execv, when DAEMON_MUST_EXEC, so that + daemon mode works on cygw32 when Emacs is installed and not just + during development. + +2013-02-02 Paul Eggert + + Avoid file time stamp bug on MS-Windows (Bug#13149). + * fileio.c (Fwrite_region): Don't use the heuristic on empty files, + as FAT32 doesn't update time stamps when truncating them. + Also, check that a file time stamp is not a multiple of 100 ns; + this should catch all instances of the problem on MS-Windows, + as its native file system resolution is 100 ns or worse, and + checking for a non-multiple of 100 ns should impose only a small + overhead on systems with ns resolution. + +2013-02-02 Eli Zaretskii + + Avoid encoding file names on MS-Windows when they need to be run + through dostounix_filename. + * w32.c (normalize_filename): Accept an additional argument + MULTIBYTE; if non-zero, traverse the file name by bytes and don't + downcase it even if w32-downcase-file-names is non-nil. + (dostounix_filename): Accept an additional argument MULTIBYTE and + pass it to normalize_filename. + (emacs_root_dir): Adjust. + + * msdos.h (dostounix_filename): Adjust prototype. + + * w32.h (dostounix_filename): Adjust prototype. + + * msdos.c (dostounix_filename): Accept an additional argument and + ignore it. + (init_environment): Adjust callers of dostounix_filename. + + * fileio.c (Ffile_name_directory, file_name_as_directory) + (directory_file_name, Fexpand_file_name) + (Fsubstitute_in_file_name): [DOS_NT] Adjust call to + dostounix_filename. + [WINDOWSNT]: Downcase file names if w32-downcase-file-names is + non-nil. + (Fsubstitute_in_file_name): [DOS_NT] Don't downcase environment + variables, as egetenv is case-insensitive for DOS_NT. + + * dired.c (file_name_completion): Don't call Fdirectory_file_name + with an encoded file name. + + * w32proc.c (Fw32_short_file_name, Fw32_long_file_name): + Adjust calls to dostounix_filename. + + * w32fns.c (Fx_file_dialog): Adjust call to dostounix_filename. + + * unexw32.c (unexec): Adjust call to dostounix_filename. + + * termcap.c (tgetent) [MSDOS]: Adjust call to dostounix_filename. + + * emacs.c (decode_env_path) [DOS_NT]: Adjust call to + dostounix_filename. + + * callproc.c (Fcall_process) [MSDOS]: Adjust call to + dostounix_filename. + + * callproc.c (Fcall_process): Make sure program name in PATH and + new_argv[0] is encoded, if needed. Otherwise, un-encoded string + is passed to exec/spawnve, which fails unless the file-name + encoding is UTF-8. + + * w32proc.c (sys_spawnve): Make sure escape_char is initialized, + even if w32-quote-process-args is nil. + +2013-02-01 Paul Eggert + + Fix timestamp bug when write-region appends nothing (Bug#13149). + * fileio.c (Fwrite_region): When neither O_EXCL nor O_TRUNC is used, + the file's time stamp doesn't change if Emacs happens to write nothing + to the file, and on a buggy file system this could cause Emacs to + incorrectly infer that the file system doesn't have the bug. + Avoid this problem by inhibiting the inference in this case. + +2013-02-01 Dmitry Antipov + + * window.h (struct window): Convert base_line_number, base_line_pos + and column_number_displayed members from Lisp_Object to ptrdiff_t. + Convert region_showing member from Lisp_Object to bitfield. + Remove sequence_number member. Adjust comments. + * window.c (sequence_number): Remove. + (make_window): Initialize column_number_displayed. + * print.c (print_object): Follow the printed representation of + frames and print window pointer to distinguish between windows. + (adjust_window_count): Invalidate base_line_pos. Adjust comment. + * xdisp.c (wset_base_line_number, wset_base_line_pos) + (wset_column_number_displayed, wset_region_showing): Remove. + (window_buffer_changed, mode_line_update_needed, redisplay_internal) + (try_scrolling, try_cursor_movement, redisplay_window) + (try_window_reusing_current_matrix, try_window_id, display_line) + (display_mode_lines, decode_mode_spec): Adjust users. + * .gdbinit (pwinx): Do not print sequence_number. + +2013-02-01 Paul Eggert + + Use fdopendir, fstatat and readlinkat, for efficiency (Bug#13539). + * conf_post.h (GNULIB_SUPPORT_ONLY_AT_FDCWD): Remove. + * dired.c: Include . + (open_directory): New function, which uses open and fdopendir + rather than opendir. DOS_NT platforms still use opendir, though. + (directory_files_internal, file_name_completion): Use it. + (file_attributes): New function, with most of the old Ffile_attributes. + (directory_files_internal, Ffile_attributes): Use it. + (file_attributes, file_name_completion_stat): First arg is now fd, + not dir name. All uses changed. Use fstatat rather than lstat + + stat. + (file_attributes): Use emacs_readlinkat rather than Ffile_symlink_p. + * fileio.c: Include , . + (emacs_readlinkat): New function, with much of the old + Ffile_symlink_p, but with an fd argument for speed. + It uses readlinkat rather than careadlinkatcwd, so that it + need not assume the working directory. + (Ffile_symlink_p): Use it. + * filelock.c (current_lock_owner): Use emacs_readlinkat + rather than emacs_readlink. + * lisp.h (emacs_readlinkat): New decl. + (READLINK_BUFSIZE, emacs_readlink): Remove. + * sysdep.c: Do not include , . + (emacs_norealloc_allocator, emacs_readlink): Remove. + This stuff is moved to fileio.c. + * w32.c (fstatat, readlinkat): New functions. + (careadlinkat): Don't check that fd == AT_FDCWD. + (careadlinkatcwd): Remove; no longer needed. + 2013-01-31 Glenn Morris * fileio.c (choose_write_coding_system): Make it callable from Lisp. - (Fwrite_region): If coding-system-for-write is set, don't - call choose_write_coding_system. Move the last piece of - choose_write_coding_system here. (Bug#13522) + (Fwrite_region): Update for new choose_write_coding_system args. + Move the last piece of choose_write_coding_system here. (Bug#13522) (syms_of_fileio): Add choose-write-coding-system. 2013-01-30 Eli Zaretskii @@ -13,8 +699,8 @@ closing it. (Bug#13546) * w32.c (parse_root, get_volume_info, readdir, read_unc_volume) - (logon_network_drive, stat_worker, symlink, chase_symlinks): Use - CharNextExA and CharPrevExA to iterate over file names encoded in + (logon_network_drive, stat_worker, symlink, chase_symlinks): + Use CharNextExA and CharPrevExA to iterate over file names encoded in DBCS. (Bug#13553) * w32.c (w32_get_long_filename, init_environment, readlink): @@ -54,8 +740,8 @@ (normalize_filename, readdir): Use it to detect locales where ANSI encoding of file names uses a double-byte character set (DBCS). If a DBCS encoding is used, advance by characters using - CharNextExA, instead of incrementing a 'char *' pointer. Use - _mbslwr instead of _strlwr. (Bug#13515) + CharNextExA, instead of incrementing a 'char *' pointer. + Use _mbslwr instead of _strlwr. (Bug#13515) * w32heap.c (allocate_heap) [!_WIN64]: Decrease the initial request of memory reservation to 1.7GB. (Bug#13065) @@ -196,8 +882,8 @@ segfault when there are lots of overlays. * buffer.c (sort_overlays): Use SAFE_NALLOCA, to avoid segfault - when there are lots of overlays. See - http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00421.html + when there are lots of overlays. + See http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00421.html for the details and a way to reproduce. 2013-01-19 Paul Eggert @@ -255,8 +941,8 @@ 2013-01-18 Dmitry Antipov - Fix crash when inserting data from non-regular files. See - http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00406.html + Fix crash when inserting data from non-regular files. + See http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00406.html for the error description produced by valgrind. * fileio.c (read_non_regular): Rename to read_contents. Free Lisp_Save_Value object used to pass parameters. @@ -308,8 +994,8 @@ (map_keymap_char_table_item): Adjust accordingly. * fileio.c (non_regular_fd, non_regular_inserted) (non_regular_nbytes): Remove. - (Finsert_file_contents): Convert trytry to ptrdiff_t. Use - format_save_value to pass parameters to read_non_regular. + (Finsert_file_contents): Convert trytry to ptrdiff_t. + Use format_save_value to pass parameters to read_non_regular. (read_non_regular): Use XSAVE_ macros to extract parameters. Adjust comment. * xmenu.c (xmenu_show) [!USE_X_TOOLKIT && !USE_GTK]: Use @@ -436,8 +1122,8 @@ 2013-01-11 Aaron S. Hawley - * insdel.c (Fcombine_after_change_execute, syms_of_insdel): Fix - ambiguous doc string cross-reference(s). + * insdel.c (Fcombine_after_change_execute, syms_of_insdel): + Fix ambiguous doc string cross-reference(s). * keyboard.c (Fcommand_execute, syms_of_keyboard): Fix ambiguous doc string cross-reference(s).