comparison lisp/net/tramp-imap.el @ 110776:073caec7510f

* net/tramp.el (tramp-handle-directory-files-and-attributes) (tramp-handle-file-exists-p, tramp-handle-file-newer-than-file-p): New defuns, taken from tramp-smb.el. (tramp-coding-system-change-eol-conversion) (tramp-set-process-query-on-exit-flag): Removed. * net/tramp-compat.el (top): Do not check for byte-compiler objects. (tramp-compat-coding-system-change-eol-conversion) (tramp-compat-set-process-query-on-exit-flag): New defuns, taken from tramp.el. * net/tramp-gvfs.el: * net/tramp-gw.el: Replace `tramp-set-process-query-on-exit-flag' by `tramp-compat-set-process-query-on-exit-flag'. * net/tramp-imap.el (tramp-imap-file-name-handler-alist): Use `tramp-handle-directory-files-and-attributes', `tramp-handle-file-exists-p' and `tramp-handle-file-newer-than-file-p'. (tramp-imap-handle-file-exists-p) (tramp-imap-handle-file-executable-p) (tramp-imap-handle-file-readable-p) (tramp-imap-handle-directory-files-and-attributes) (tramp-imap-handle-file-newer-than-file-p): Removed. * net/tramp-sh.el: Replace `tramp-set-process-query-on-exit-flag' by `tramp-compat-set-process-query-on-exit-flag' and `tramp-coding-system-change-eol-conversion' by `tramp-compat-coding-system-change-eol-conversion'. * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Use `tramp-handle-directory-files-and-attributes', `tramp-handle-file-exists-p' and `tramp-handle-file-newer-than-file-p'. (tramp-smb-handle-directory-files-and-attributes) (tramp-smb-handle-file-exists-p) (tramp-smb-handle-file-newer-than-file-p): Removed. (tramp-smb-maybe-open-connection): Replace `tramp-set-process-query-on-exit-flag' by `tramp-compat-set-process-query-on-exit-flag'.
author Michael Albinus <michael.albinus@gmx.de>
date Tue, 05 Oct 2010 16:20:24 +0200
parents ec526909f60b
children 8e746f396237
comparison
equal deleted inserted replaced
110775:6ae391b53988 110776:073caec7510f
120 (delete-file . tramp-imap-handle-delete-file) 120 (delete-file . tramp-imap-handle-delete-file)
121 ;; `diff-latest-backup-file' performed by default handler 121 ;; `diff-latest-backup-file' performed by default handler
122 (directory-file-name . tramp-handle-directory-file-name) 122 (directory-file-name . tramp-handle-directory-file-name)
123 (directory-files . tramp-handle-directory-files) 123 (directory-files . tramp-handle-directory-files)
124 (directory-files-and-attributes 124 (directory-files-and-attributes
125 . tramp-imap-handle-directory-files-and-attributes) 125 . tramp-handle-directory-files-and-attributes)
126 (dired-call-process . ignore) 126 (dired-call-process . ignore)
127 ;; `dired-compress-file' performed by default handler 127 ;; `dired-compress-file' performed by default handler
128 ;; `dired-uncache' performed by default handler 128 ;; `dired-uncache' performed by default handler
129 (expand-file-name . tramp-imap-handle-expand-file-name) 129 (expand-file-name . tramp-imap-handle-expand-file-name)
130 ;; `file-accessible-directory-p' performed by default handler 130 ;; `file-accessible-directory-p' performed by default handler
131 (file-attributes . tramp-imap-handle-file-attributes) 131 (file-attributes . tramp-imap-handle-file-attributes)
132 (file-directory-p . tramp-imap-handle-file-directory-p) 132 (file-directory-p . tramp-imap-handle-file-directory-p)
133 (file-executable-p . tramp-imap-handle-file-executable-p) 133 (file-executable-p . ignore)
134 (file-exists-p . tramp-imap-handle-file-exists-p) 134 (file-exists-p . tramp-handle-file-exists-p)
135 (file-local-copy . tramp-imap-handle-file-local-copy) 135 (file-local-copy . tramp-imap-handle-file-local-copy)
136 (file-modes . tramp-handle-file-modes) 136 (file-modes . tramp-handle-file-modes)
137 (file-name-all-completions . tramp-imap-handle-file-name-all-completions) 137 (file-name-all-completions . tramp-imap-handle-file-name-all-completions)
138 (file-name-as-directory . tramp-handle-file-name-as-directory) 138 (file-name-as-directory . tramp-handle-file-name-as-directory)
139 (file-name-completion . tramp-handle-file-name-completion) 139 (file-name-completion . tramp-handle-file-name-completion)
140 (file-name-directory . tramp-handle-file-name-directory) 140 (file-name-directory . tramp-handle-file-name-directory)
141 (file-name-nondirectory . tramp-handle-file-name-nondirectory) 141 (file-name-nondirectory . tramp-handle-file-name-nondirectory)
142 ;; `file-name-sans-versions' performed by default handler 142 ;; `file-name-sans-versions' performed by default handler
143 (file-newer-than-file-p . tramp-imap-handle-file-newer-than-file-p) 143 (file-newer-than-file-p . tramp-handle-file-newer-than-file-p)
144 (file-ownership-preserved-p . ignore) 144 (file-ownership-preserved-p . ignore)
145 (file-readable-p . tramp-imap-handle-file-readable-p) 145 (file-readable-p . tramp-handle-file-exists-p)
146 (file-regular-p . tramp-handle-file-regular-p) 146 (file-regular-p . tramp-handle-file-regular-p)
147 (file-remote-p . tramp-handle-file-remote-p) 147 (file-remote-p . tramp-handle-file-remote-p)
148 ;; `file-selinux-context' performed by default handler. 148 ;; `file-selinux-context' performed by default handler.
149 (file-symlink-p . tramp-handle-file-symlink-p) 149 (file-symlink-p . tramp-handle-file-symlink-p)
150 ;; `file-truename' performed by default handler 150 ;; `file-truename' performed by default handler
524 ;;; (setq size (- end beg)) 524 ;;; (setq size (- end beg))
525 ;;; (buffer-substring beg end)) 525 ;;; (buffer-substring beg end))
526 (goto-char point) 526 (goto-char point)
527 (list (expand-file-name filename) size)))))) 527 (list (expand-file-name filename) size))))))
528 528
529 (defun tramp-imap-handle-file-exists-p (filename)
530 "Like `file-exists-p' for Tramp files."
531 (and (file-attributes filename) t))
532
533 (defun tramp-imap-handle-file-directory-p (filename) 529 (defun tramp-imap-handle-file-directory-p (filename)
534 "Like `file-directory-p' for Tramp-IMAP files." 530 "Like `file-directory-p' for Tramp-IMAP files."
535 ;; We allow only mailboxes to be a directory. 531 ;; We allow only mailboxes to be a directory.
536 (with-parsed-tramp-file-name (expand-file-name filename default-directory) nil 532 (with-parsed-tramp-file-name (expand-file-name filename default-directory) nil
537 (and (string-match "^/[^/]*$" (directory-file-name localname)) t))) 533 (and (string-match "^/[^/]*$" (directory-file-name localname)) t)))
547 543
548 (defun tramp-imap-get-file-inode (filename &optional id-format) 544 (defun tramp-imap-get-file-inode (filename &optional id-format)
549 "Get inode equivalent \(actually the UID) for Tramp-IMAP FILENAME." 545 "Get inode equivalent \(actually the UID) for Tramp-IMAP FILENAME."
550 (nth 10 (tramp-compat-file-attributes filename id-format))) 546 (nth 10 (tramp-compat-file-attributes filename id-format)))
551 547
552 (defun tramp-imap-handle-file-executable-p (filename)
553 "Like `file-executable-p' for Tramp files. False for IMAP."
554 nil)
555
556 (defun tramp-imap-handle-file-readable-p (filename)
557 "Like `file-readable-p' for Tramp files. True for IMAP."
558 (file-exists-p filename))
559
560 (defun tramp-imap-handle-file-writable-p (filename) 548 (defun tramp-imap-handle-file-writable-p (filename)
561 "Like `file-writable-p' for Tramp files. True for IMAP." 549 "Like `file-writable-p' for Tramp files. True for IMAP."
562 ;; `file-exists-p' does not work yet for directories. 550 ;; `file-exists-p' does not work yet for directories.
563 ;; (file-exists-p (file-name-directory filename))) 551 ;; (file-exists-p (file-name-directory filename)))
564 (file-directory-p (file-name-directory filename))) 552 (file-directory-p (file-name-directory filename)))
568 (cond 556 (cond
569 ((not (file-exists-p filename)) nil) 557 ((not (file-exists-p filename)) nil)
570 (t (with-parsed-tramp-file-name (expand-file-name filename) nil 558 (t (with-parsed-tramp-file-name (expand-file-name filename) nil
571 (let ((iht (tramp-imap-make-iht v))) 559 (let ((iht (tramp-imap-make-iht v)))
572 (imap-hash-rem (tramp-imap-get-file-inode filename) iht)))))) 560 (imap-hash-rem (tramp-imap-get-file-inode filename) iht))))))
573
574 (defun tramp-imap-handle-directory-files-and-attributes
575 (directory &optional full match nosort id-format)
576 "Like `directory-files-and-attributes' for Tramp files."
577 (mapcar
578 (lambda (x)
579 (cons x (tramp-compat-file-attributes
580 (if full x (expand-file-name x directory)) id-format)))
581 (directory-files directory full match nosort)))
582
583 ;; TODO: fix this in tramp-imap-get-file-entries.
584 (defun tramp-imap-handle-file-newer-than-file-p (file1 file2)
585 "Like `file-newer-than-file-p' for Tramp files."
586 (cond
587 ((not (file-exists-p file1)) nil)
588 ((not (file-exists-p file2)) t)
589 (t (tramp-time-less-p (nth 5 (file-attributes file2))
590 (nth 5 (file-attributes file1))))))
591 561
592 (defun tramp-imap-handle-file-local-copy (filename) 562 (defun tramp-imap-handle-file-local-copy (filename)
593 "Like `file-local-copy' for Tramp files." 563 "Like `file-local-copy' for Tramp files."
594 (with-parsed-tramp-file-name (expand-file-name filename) nil 564 (with-parsed-tramp-file-name (expand-file-name filename) nil
595 (unless (file-exists-p filename) 565 (unless (file-exists-p filename)