• Michael Albinus's avatar
    Implement file locks for remote files (Bug#49261) · d35868be
    Michael Albinus authored
    * doc/lispref/files.texi (Magic File Names): Add file-locked-p,
    lock-file and unlock-file.
    
    * etc/NEWS: Tramp supports file locks now.
    
    * lisp/net/tramp-adb.el (tramp-adb-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-adb-handle-write-region): Handle LOCKNAME.
    
    * lisp/net/tramp-archive.el (tramp-archive-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    
    * lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-crypt-handle-file-locked-p, tramp-crypt-handle-lock-file)
    (tramp-crypt-handle-unlock-file): New defun.
    
    * lisp/net/tramp-fuse.el (tramp-fuse-mounted-p): Simplify.
    (tramp-fuse-unmount): New defun.
    
    * lisp/net/tramp-gvfs.el (tramp-gvfs-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-gvfs-maybe-open-connection): Set "lock-pid" connection property.
    
    * lisp/net/tramp-rclone.el (tramp-rclone-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-rclone-maybe-open-connection): Set "lock-pid" connection property.
    
    * lisp/net/tramp-sh.el (tramp-sh-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-sh-handle-write-region): Handle LOCKNAME.
    
    * lisp/net/tramp-smb.el (tramp-smb-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-smb-handle-copy-directory): Use `sleep-for'.
    (tramp-smb-handle-write-region): Handle LOCKNAME.
    
    * lisp/net/tramp-sshfs.el (tramp-sshfs-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-sshfs-handle-write-region): Handle LOCKNAME.
    (tramp-sshfs-maybe-open-connection): Set "lock-pid" connection property.
    
    * lisp/net/tramp-sudoedit.el (tramp-sudoedit-file-name-handler-alist):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-sudoedit-maybe-open-connection):
    Set "lock-pid" connection property.
    
    * lisp/net/tramp.el (tramp-file-name-for-operation):
    Add `file-locked-p', `lock-file' and `unlock-file'.
    (tramp-make-lock-name, tramp-get-lock-file, tramp-get-lock-pid)
    (tramp-handle-file-locked-p, tramp-handle-lock-file)
    (tramp-handle-unlock-file): New defuns.
    (tramp-lock-file-contents-regexp): New regexp.
    (tramp-handle-write-region): Handle LOCKNAME.
    
    * src/filelock.c (lock_file, unlock_file_body, Ffile_locked_p):
    Call handler if exists.
    (Flock_file, Funlock_file): New defuns.
    (Qlock_file, Qunlock_file, Qfile_locked_p): Declare symbols.
    (Slock_file, Sunlock_file): Declare subroutines.
    
    * test/lisp/net/tramp-archive-tests.el
    (tramp-archive-test40-make-nearby-temp-file)
    (tramp-archive-test43-file-system-info): Rename.
    
    * test/lisp/net/tramp-tests.el (top): Set `create-lockfiles' to nil.
    (tramp--test-fuse-p): New defun.
    (tramp-test14-delete-directory): Use it.
    (tramp-test39-lock-file): New test.
    (tramp-test40-make-nearby-temp-file)
    (tramp-test41-special-characters)
    (tramp-test41-special-characters-with-stat)
    (tramp-test41-special-characters-with-perl)
    (tramp-test41-special-characters-with-ls, tramp-test42-utf8)
    (tramp-test42-utf8-with-stat, tramp-test42-utf8-with-perl)
    (tramp-test42-utf8-with-ls, tramp-test43-file-system-info)
    (tramp-test44-asynchronous-requests, tramp-test45-auto-load)
    (tramp-test45-delay-load, tramp-test45-recursive-load)
    (tramp-test45-remote-load-path, tramp-test46-unload): Rename.
    (tramp--test-special-characters, tramp--test-utf8)
    (tramp--test-asynchronous-requests-timeout): Modify docstring.
    d35868be
tramp-fuse.el 8.15 KB