• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/emacs-93/emacs/lisp/net/

Lines Matching +defs:substitute +defs:in +defs:file +defs:name

8 ;; This file is part of GNU Emacs.
15 ;; GNU Emacs is distributed in the hope that it will be useful,
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
59 ;; a domain in USER, it must be the SMB method.
74 "Regexp used as prompt in smbclient.")
107 "Holds the share name for the current buffer.
120 (defconst tramp-smb-file-name-handler-alist
122 ;; `access-file' performed by default handler
123 (add-name-to-file . tramp-smb-handle-copy-file) ;; we're on Windows, honey.
124 ;; `byte-compiler-base-file-name' performed by default handler
125 (copy-file . tramp-smb-handle-copy-file)
127 (delete-file . tramp-smb-handle-delete-file)
128 ;; `diff-latest-backup-file' performed by default handler
129 (directory-file-name . tramp-handle-directory-file-name)
133 (dired-compress-file . tramp-smb-not-handled)
135 ;; `expand-file-name' not necessary because we cannot expand "~/"
136 (file-accessible-directory-p . tramp-smb-handle-file-directory-p)
137 (file-attributes . tramp-smb-handle-file-attributes)
138 (file-directory-p . tramp-smb-handle-file-directory-p)
139 (file-executable-p . tramp-smb-handle-file-exists-p)
140 (file-exists-p . tramp-smb-handle-file-exists-p)
141 (file-local-copy . tramp-smb-handle-file-local-copy)
142 (file-remote-p . tramp-handle-file-remote-p)
143 (file-modes . tramp-handle-file-modes)
144 (file-name-all-completions . tramp-smb-handle-file-name-all-completions)
145 ;; `file-name-as-directory' performed by default handler
146 (file-name-completion . tramp-handle-file-name-completion)
147 (file-name-directory . tramp-handle-file-name-directory)
148 (file-name-nondirectory . tramp-handle-file-name-nondirectory)
149 ;; `file-name-sans-versions' performed by default handler
150 (file-newer-than-file-p . tramp-smb-handle-file-newer-than-file-p)
151 (file-ownership-preserved-p . tramp-smb-not-handled)
152 (file-readable-p . tramp-smb-handle-file-exists-p)
153 (file-regular-p . tramp-handle-file-regular-p)
154 (file-symlink-p . tramp-smb-not-handled)
155 ;; `file-truename' performed by default handler
156 (file-writable-p . tramp-smb-handle-file-writable-p)
157 (find-backup-file-name . tramp-handle-find-backup-file-name)
158 ;; `find-file-noselect' performed by default handler
159 ;; `get-file-buffer' performed by default handler
161 (insert-file-contents . tramp-handle-insert-file-contents)
166 (rename-file . tramp-smb-handle-rename-file)
167 (set-file-modes . tramp-smb-not-handled)
168 (set-visited-file-modtime . tramp-smb-not-handled)
170 (substitute-in-file-name . tramp-smb-handle-substitute-in-file-name)
171 (unhandled-file-name-directory . tramp-handle-unhandled-file-name-directory)
173 (verify-visited-file-modtime . tramp-smb-not-handled)
179 (defun tramp-smb-file-name-p (filename)
181 (let ((v (tramp-dissect-file-name filename)))
184 (tramp-file-name-multi-method v)
185 (tramp-file-name-method v)
186 (tramp-file-name-user v)
187 (tramp-file-name-host v))
190 (defun tramp-smb-file-name-handler (operation &rest args)
194 (let ((fn (assoc operation tramp-smb-file-name-handler-alist)))
201 (add-to-list 'tramp-foreign-file-name-handler-alist
202 (cons 'tramp-smb-file-name-p 'tramp-smb-file-name-handler))
205 ;; File name primitives
212 (defun tramp-smb-handle-copy-file
214 "Like `copy-file' for tramp files.
215 KEEP-DATE is not handled in case NEWNAME resides on an SMB server."
216 (setq filename (expand-file-name filename)
217 newname (expand-file-name newname))
219 (let ((tmpfile (file-local-copy filename)))
223 (rename-file tmpfile newname ok-if-already-exists)
226 (when (file-directory-p newname)
227 (setq newname (expand-file-name
228 (file-name-nondirectory filename) newname)))
230 (file-exists-p newname))
231 (error "copy-file: file %s already exists" newname))
233 (with-parsed-tramp-file-name newname nil
236 (file (tramp-smb-get-localname localname t)))
238 (error "Target `%s' must contain a share name" filename))
242 5 "Copying file %s to file %s..." filename newname)
244 user host (format "put %s \"%s\"" filename file))
247 5 "Copying file %s to file %s...done" filename newname)
252 (setq directory (directory-file-name (expand-file-name directory)))
253 (when (file-exists-p directory)
254 (with-parsed-tramp-file-name directory nil
257 (dir (tramp-smb-get-localname (file-name-directory localname) t))
258 (file (file-name-nondirectory localname)))
262 (tramp-smb-send-command user host (format "rmdir \"%s\"" file)))
269 (defun tramp-smb-handle-delete-file (filename)
270 "Like `delete-file' for tramp files."
271 (setq filename (expand-file-name filename))
272 (when (file-exists-p filename)
273 (with-parsed-tramp-file-name filename nil
276 (dir (tramp-smb-get-localname (file-name-directory localname) t))
277 (file (file-name-nondirectory localname)))
281 (tramp-smb-send-command user host (format "rm \"%s\"" file)))
286 (error "Cannot delete file `%s'" filename)))))))
291 (setq directory (directory-file-name (expand-file-name directory)))
292 (with-parsed-tramp-file-name directory nil
295 (file (tramp-smb-get-localname localname nil))
296 (entries (tramp-smb-get-file-entries user host share file)))
297 ;; Just the file names are needed
309 (concat (file-name-as-directory directory) x))
321 ;; We cannot call `file-attributes' for backward compatibility reasons.
323 (cons x (tramp-smb-handle-file-attributes
324 (if full x (concat (file-name-as-directory directory) x)) id-format)))
327 (defun tramp-smb-handle-file-attributes (filename &optional id-format)
328 "Like `file-attributes' for tramp files."
329 (with-parsed-tramp-file-name filename nil
332 (file (tramp-smb-get-localname localname nil))
333 (entries (tramp-smb-get-file-entries user host share file))
335 (assoc (file-name-nondirectory file) entries)))
338 (inode (tramp-smb-get-inode share file))
344 t) ;0 file type
355 device)))))) ;11 file system number
357 (defun tramp-smb-handle-file-directory-p (filename)
358 "Like `file-directory-p' for tramp files."
359 (with-parsed-tramp-file-name filename nil
362 (file (tramp-smb-get-localname localname nil))
363 (entries (tramp-smb-get-file-entries user host share file))
365 (assoc (file-name-nondirectory file) entries))))
370 (defun tramp-smb-handle-file-exists-p (filename)
371 "Like `file-exists-p' for tramp files."
372 (with-parsed-tramp-file-name filename nil
375 (file (tramp-smb-get-localname localname nil))
376 (entries (tramp-smb-get-file-entries user host share file)))
378 (member (file-name-nondirectory file) (mapcar 'car entries))
381 (defun tramp-smb-handle-file-local-copy (filename)
382 "Like `file-local-copy' for tramp files."
383 (with-parsed-tramp-file-name filename nil
386 (file (tramp-smb-get-localname localname t))
387 (tmpfil (tramp-make-temp-file filename)))
388 (unless (file-exists-p filename)
389 (error "Cannot make local copy of non-existing file `%s'" filename))
392 5 "Fetching %s to tmp file %s..." filename tmpfil)
395 user host (format "get \"%s\" %s" file tmpfil))
398 5 "Fetching %s to tmp file %s...done" filename tmpfil)
399 (error "Cannot make local copy of file `%s'" filename))
404 (defun tramp-smb-handle-file-name-all-completions (filename directory)
405 "Like `file-name-all-completions' for tramp files."
406 (with-parsed-tramp-file-name directory nil
410 (file (tramp-smb-get-localname localname nil))
411 (entries (tramp-smb-get-file-entries user host share file)))
419 (file-name-as-directory (nth 0 x))
423 (defun tramp-smb-handle-file-newer-than-file-p (file1 file2)
424 "Like `file-newer-than-file-p' for tramp files."
426 ((not (file-exists-p file1)) nil)
427 ((not (file-exists-p file2)) t)
428 (t (tramp-smb-time-less-p (file-attributes file2)
429 (file-attributes file1)))))
431 (defun tramp-smb-handle-file-writable-p (filename)
432 "Like `file-writable-p' for tramp files."
433 (if (not (file-exists-p filename))
434 (let ((dir (file-name-directory filename)))
435 (and (file-exists-p dir)
436 (file-writable-p dir)))
437 (with-parsed-tramp-file-name filename nil
440 (file (tramp-smb-get-localname localname nil))
441 (entries (tramp-smb-get-file-entries user host share file))
443 (assoc (file-name-nondirectory file) entries))))
452 (setq filename (expand-file-name filename))
453 (when (file-directory-p filename)
454 ;; This check is a little bit strange, but in `dired-add-entry'
456 (setq filename (file-name-as-directory filename)))
457 (with-parsed-tramp-file-name filename nil
460 (file (tramp-smb-get-localname localname nil))
461 (entries (tramp-smb-get-file-entries user host share file)))
465 (if (file-directory-p filename)
468 (list (assoc (file-name-nondirectory filename) entries))))
478 ; sort by name
497 (nth 0 x))) ; file name
504 (setq dir (directory-file-name (expand-file-name dir)))
505 (unless (file-name-absolute-p dir)
507 (with-parsed-tramp-file-name dir nil
510 (ldir (file-name-directory dir)))
512 (when (and parents share (not (file-directory-p ldir)))
515 (when (file-directory-p ldir)
517 (unless (file-directory-p dir)
522 (setq directory (directory-file-name (expand-file-name directory)))
523 (unless (file-name-absolute-p directory)
525 (with-parsed-tramp-file-name directory nil
528 (file (tramp-smb-get-localname localname nil)))
529 (when (file-directory-p (file-name-directory directory))
531 (tramp-smb-send-command user host (format "mkdir \"%s\"" file)))
532 (unless (file-directory-p directory)
535 (defun tramp-smb-handle-rename-file
537 "Like `rename-file' for tramp files."
538 (setq filename (expand-file-name filename)
539 newname (expand-file-name newname))
541 (let ((tmpfile (file-local-copy filename)))
545 (rename-file tmpfile newname ok-if-already-exists)
548 (when (file-directory-p newname)
549 (setq newname (expand-file-name
550 (file-name-nondirectory filename) newname)))
552 (file-exists-p newname))
553 (error "rename-file: file %s already exists" newname))
555 (with-parsed-tramp-file-name newname nil
558 (file (tramp-smb-get-localname localname t)))
562 5 "Copying file %s to file %s..." filename newname)
564 user host (format "put %s \"%s\"" filename file))
567 5 "Copying file %s to file %s...done" filename newname)
570 (delete-file filename))
572 (defun tramp-smb-handle-substitute-in-file-name (filename)
573 "Like `handle-substitute-in-file-name' for tramp files.
574 Catches errors for shares like \"C$/\", which are common in Microsoft Windows."
576 (tramp-run-real-handler 'substitute-in-file-name (list filename))
583 (error "Cannot append to file using tramp (`%s')" filename))
584 (setq filename (expand-file-name filename))
587 confirm (file-exists-p filename))
591 (with-parsed-tramp-file-name filename nil
594 (file (tramp-smb-get-localname localname t))
597 ;; Write region into a tmp file.
598 (setq tmpfil (tramp-make-temp-file filename))
599 ;; We say `no-message' here because we don't want the visited file
600 ;; modtime data to be clobbered from the temp file. We call
601 ;; `set-visited-file-modtime' ourselves later on.
611 5 "Writing tmp file %s to file %s..." tmpfil filename)
613 user host (format "put %s \"%s\"" tmpfil file))
616 5 "Writing tmp file %s to file %s...done" tmpfil filename)
619 (delete-file tmpfil)
624 (set-visited-file-modtime))))))
627 ;; Internal file name functions
630 "Returns the share name of LOCALNAME."
636 "Returns the file name of LOCALNAME.
652 ;; Sometimes we have discarded `substitute-in-file-name'
660 (defun tramp-smb-get-file-entries (user host share localname)
687 (setq entry (tramp-smb-read-file-entry share))
706 ;; Return either a share name (if SHARE is nil), or a file name
711 ;; \S-\(.*\S-\)\s-* - share name, 14 char
720 ;; \S-\(.*\S-\)\s-* - file name, 30 chars, left bound
739 ;; finfo->name,
744 ;; in Samba 1.9, there's the following code:
747 ;; CNV_LANG(finfo->name),
754 ;; available in older Emacsen.
755 ;; * The length of constructs (file name, size) might exceed the default.
760 (defun tramp-smb-read-file-entry (share)
761 "Parse entry in SMB output buffer.
847 ;; Used in `find-buffer-visiting'.
849 ;; performance isn't the major issue given that file transfer will take time.
851 (defun tramp-smb-get-inode (share file)
854 (let ((string (concat share "/" (directory-file-name file))))
874 "Maybe open a connection to HOST, logging in as USER, using `tramp-smb-program'.
906 Domain names in USER and port numbers in HOST are acknowledged."
910 (error "Cannot find command %s in %s" tramp-smb-program exec-path))
943 (let* ((default-directory (tramp-temporary-file-directory))
945 ;; `undecided-dos' in some cases. With the conditional,
946 ;; we use nil in these cases. Which one is right?
950 (p (apply #'start-process (buffer-name buffer) buffer
1026 Return the difference in the format of a time value."
1039 ;; * Error handling in case password is wrong.
1041 ;; * Return more comprehensive file permission string. Think whether it is
1042 ;; possible to implement `set-file-modes'.
1043 ;; * Handle WILDCARD and FULL-DIRECTORY-P in
1048 ;; * Copy files in dired from SMB to another method doesn't work.
1050 ;; several places, especially in `tramp-smb-handle-insert-directory'.