• Eli Zaretskii's avatar
    Implement CLASH_DETECTION for MS-Windows. · 343a2aef
    Eli Zaretskii authored
     src/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
     [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
     [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
     src/w32proc.c (sys_kill): Support the case of SIG = 0, in which case
     just check if the process by that PID exists.
     src/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.
     src/makefile.w32-in ($(BLD)/filelock.$(O)): Depend on src/w32.h.
     nt/inc/ms-w32.h (BOOT_TIME_FILE): Define.
     nt/config.nt (CLASH_DETECTION): Define to 1.
     lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Reject files
     that match "\`\.#", to avoid compiling lock files, even if they
     are readable (as they are on MS-Windows).
     doc/emacs/files.texi (Interlocking): Don't refer to symlinks as the
     exclusive means of locking files.
     etc/NEWS: Mention support for lock files on MS-Windows.
w32proc.c 92.1 KB