Support symlinks on latest versions of MS-Windows.
[bpt/emacs.git] / src / ChangeLog
index 50c6d18..3ba80f6 100644 (file)
@@ -1,3 +1,85 @@
+2012-08-03  Eli Zaretskii  <eliz@gnu.org>
+
+       Support symlinks on latest versions of MS-Windows.
+       * w32.c: Include winioctl.h and aclapi.h.
+       (is_symlink, chase_symlinks, enable_privilege, restore_privilege)
+       (revert_to_self): Forward declarations of static functions.
+       <static BOOL g_b_init_get_security_info>:
+       <g_b_init_create_symbolic_link>: New static flags.
+       (globals_of_w32): Initialize them to zero.
+       (GetSecurityInfo_Proc, CreateSymbolicLink_Proc): New typedefs.
+       (map_w32_filename): Improve commentary.  Simplify switch.
+       (SYMBOLIC_LINK_FLAG_DIRECTORY): Define if not defined in system
+       headers (most versions of MinGW w32api don't).
+       (get_security_info, create_symbolic_link)
+       (get_file_security_desc_by_handle, is_symlink, chase_symlinks):
+       New functions.
+       (sys_access, sys_chmod): Call 'chase_symlinks' to resolve symlinks
+       in the argument file name.
+       (sys_access): Call unc_volume_file_attributes only if
+       GetFileAttributes fails with network-related error codes.
+       (sys_rename): Diagnose renaming of a symlink when the user doesn't
+       have the required privileges.
+       (get_file_security_desc_by_name): Renamed from
+       get_file_security_desc.
+       (stat_worker): New function, with most of the guts of 'stat', and
+       with addition of handling of symlinks and support for 'lstat'.  If
+       possible, get file's attributes and security information by
+       handle, not by name.  Produce S_IFLNK bit for symlinks, when
+       called from 'lstat'.
+       (stat, lstat): New functions, call 'stat_worker'.
+       (symlink, readlink, careadlinkat): Rewritten to create and resolve
+       symlinks when the underlying filesystem supports them.
+
+2012-08-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix macroexp crash on Windows with debugging (Bug#12118).
+       * lisp.h (ASET) [ENABLE_CHECKING]: Ignore ARRAY_MARK_FLAG when
+       checking subscripts; problem introduced with the recent
+       "ASET (a, i, v)" rather than "AREF (a, i) = v" patch.
+       (ARRAY_MARK_FLAG): Now a macro as well as a constant,
+       since it's used in non-static inline functions now.
+
+       * xfaces.c (face_at_buffer_position, face_for_overlay_string):
+       Don't assume buffer size fits in 'int'.  Remove unused local.
+
+       Use C99-style 'extern inline' if available.
+       * buffer.h (BUFFER_INLINE):
+       * category.h (CATEGORY_INLINE):
+       * character.h (CHARACTER_INLINE):
+       * charset.h (CHARSET_INLINE):
+       * composite.h (COMPOSITE_INLINE):
+       * dispextern.h (DISPEXTERN_INLINE):
+       * lisp.h (LISP_INLINE):
+       * systime.h (SYSTIME_INLINE):
+       New macro, replacing 'static inline' in this header.
+       * buffer.h, category.h, character.h, charset.h, composite.h:
+       * dispextern.h, lisp.h, systime.h:
+       Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
+       * alloc.c (LISP_INLINE):
+       * buffer.c (BUFFER_INLINE):
+       * category.c (CATEGORY_INLINE):
+       * character.c (CHARACTER_INLINE):
+       * charset.c (CHARSET_INLINE):
+       * composite.c (COMPOSITE_INLINE):
+       * dispnew.c (DISPEXTERN_INLINE):
+       * sysdep.c (SYSTIME_INLINE):
+       Define to EXTERN_INLINE, so that the corresponding functions
+       are compiled into code.
+       * conf_post.h (INLINE, EXTERN_INLINE, INLINE_HEADER_BEGIN)
+       (INLINE_HEADER_END): New macros.
+       * lisp.h (PSEUDOVECTOR_FLAG): Now a macro as well as a constant,
+       since it's used in non-static inline functions now.
+       (VALMASK) [!USE_LSB_TAG]: Likewise.
+
+2012-08-02  Glenn Morris  <rgm@gnu.org>
+
+       * s/: Remove empty directory.
+
+       * s/ms-w32.h: Move to ../nt/inc.
+       * makefile.w32-in (TAGS, TAGS-gmake, MS_W32_H):
+       Update for new ms-w32.h location.
+
 2012-08-02  Paul Eggert  <eggert@cs.ucla.edu>
 
        Port to Solaris 8.