Mercurial > emacs
comparison lisp/net/tramp-smb.el @ 49612:407d6516031a
2003-02-05 Kai Gro?ohann <kai.grossjohann@uni-duisburg.de>
Version 2.0.29 released.
* net/tramp.el (tramp-send-region): Protect against
tramp-chunksize being nil.
2003-02-04 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-handle-directory-file-name): Handle the case
PATH is "".
(tramp-completion-handle-file-name-all-completions): Define
`tramp-current-user' locally. See `tramp-parse-passwd'.
(tramp-parse-passwd): For su-alike methods it would be desirable
to return "root@localhost" as default. Unfortunately, we have no
information whether any user name has been typed already. So we
(mis-)use tramp-current-user as indication, assuming it is set in
`tramp-completion-handle-file-name-all-completions'.
(tramp-send-region): Handle the case `tramp-chunksize' is equal
0. I did it accidently. Infinite loop ...
* net/tramp-ftp.el (top-level): eval-after-load "ange-ftp"
'(tramp-disable-ange-ftp). Suggested by Kai.
(tramp-ftp-file-name-handler): `tramp-disable-ange-ftp' not needed
any longer.
* net/tramp-smb.el (tramp-smb-file-name-handler-alist): Apply
`tramp-handle-directory-file-name' in order to profit from Kai's
yesterday changes.
2003-02-03 Kai Gro?ohann <kai.grossjohann@uni-duisburg.de>
* net/tramp.el (tramp-chunksize): Set default to 500 as workaround
for some ssh connections.
(tramp-handle-directory-file-name): New implementation. Not sure
if it works.
2003-01-28 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-get-device): `tramp-make-tramp-file-name'
must not be called with NIL path. It fails in case of
multi-method.
2003-01-27 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-file-name-for-operation): Apply
`expand-file-name' for relative file names only. Otherwise there
might be problems if the default directory is another Tramp
directory as the directory the file is based on.
(tramp-find-foreign-file-name-handler): Check whether FILENAME is
a Tramp file name. It isn't if it comes from an expanded file
name (like "/xx:yy//zz").
2003-01-25 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-devices): New variable. Keeps virtual
device numbers. Devices must distinguish physical file systems.
The device numbers provided by "lstat" aren't unique, because we
operate on different hosts. So we use virtual device numbers,
generated by `tramp-get-device'. Both Ange-FTP and EFS use device
number -1. In order to be different, we use device number (-1 x),
whereby "x" is unique for a given (multi-method method user host).
Suggested by Kai.
(tramp-perl-file-attributes): Always return device number -1.
There will be a virtual device number set in
`tramp-handle-file-attributes', which replaces this one.
(tramp-handle-file-attributes): Set virtual device number.
(tramp-get-device): New function. Returns the virtual device
number. If it doesn't exist, generate a new one.
(tramp-handle-file-regular-p): Use Emacs file name primitives
instead of calling tramp-handle-* equivalents directly. Needed
for tramp-smb.
* net/tramp-smb.el (tramp-smb-devices, tramp-smb-get-device): Removed.
Functionality moved to tramp.el.
(tramp-smb-handle-file-attributes): Apply
`tramp-get-device'. ATIME and CTIME are (0 0) now (= "don't
know"), which is more honest.
(tramp-smb-handle-make-directory): Use Emacs file name primitives
instead of calling tramp-smb-handle-* equivalents directly.
(tramp-smb-read-file-entry): Return size as a number but a string.
2003-01-24 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-function-alist-ssh): Add parsing
of "/etc/ssh_config" and "~/.ssh/config". Suggested by Kai.
(tramp-completion-function-alist, tramp-set-completion-function):
Doc string update.
(tramp-parse-sconfig, tramp-parse-sconfig-group): New functions.
Provide parsing of "~/.ssh/config" style files.
2003-01-21 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-handle-expand-file-name): Apply
`tramp-drop-volume-letter'. Otherwise, there are problems on W32
systems.
2003-01-21 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp-smb.el (tramp-smb-get-device, tramp-smb-get-inode): New
functions. Device number and inode number don't exist for SMB
files. Therefore we must generate virtual ones.
(tramp-smb-devices, tramp-smb-inodes): New variables. Keep
generated virtual device numbers and inodes numbers for SMB files.
(tramp-smb-handle-file-attributes): Apply them.
2003-01-14 Kai Gro?ohann <kai.grossjohann@uni-duisburg.de>
* net/tramp.el (tramp-md5-function): Require md5 before checking
function md5. If using md5-encode, put wrapper around it that
converts vector of bytes to ascii text.
2003-01-13 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-completion-mode): Perform check (integerp
last-input-event) before (event-modifiers last-input-event) -
there might be problems if `last-input-event' is a mouse event.
2003-01-12 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp.el (tramp-parse-rhosts, tramp-parse-shosts)
(tramp-parse-hosts, tramp-parse-passwd, tramp-parse-netrc): Use
`file-readable-p' instead of `file-exists-p'. Otherwise these
functions might block. Reported by <kin@neoscale.com>.
2003-01-02 Michael Albinus <Michael.Albinus@alcatel.de>
* net/tramp-ftp.el (top-level): Defaults for
`tramp-default-method-alist' must be a list.
* net/tramp-smb.el (top-level): Defaults for
`tramp-default-method-alist' must be a list.
2003-01-02 Kai Gro?ohann <kai.grossjohann@uni-duisburg.de>
* net/tramp.el (top-level): Avoid byte-compiler warnings of unused
variables if the byte-compiler supports this. This is for the
with-parsed-tramp-file-name macro which is wont to produce such
stuff.
author | Kai Großjohann <kgrossjo@eu.uu.net> |
---|---|
date | Wed, 05 Feb 2003 21:03:36 +0000 |
parents | 0d8b17d428b5 |
children | a0e8a85259ed d7ddb3e565de |
comparison
equal
deleted
inserted
replaced
49611:c6104239711d | 49612:407d6516031a |
---|---|
1 ;;; tramp-smb.el --- Tramp access functions for SMB servers -*- coding: iso-8859-1; -*- | 1 ;;; tramp-smb.el --- Tramp access functions for SMB servers -*- coding: iso-8859-1; -*- |
2 | 2 |
3 ;; Copyright (C) 2002 Free Software Foundation, Inc. | 3 ;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. |
4 | 4 |
5 ;; Author: Michael Albinus <Michael.Albinus@alcatel.de> | 5 ;; Author: Michael Albinus <Michael.Albinus@alcatel.de> |
6 ;; Keywords: comm, processes | 6 ;; Keywords: comm, processes |
7 | 7 |
8 ;; This file is part of GNU Emacs. | 8 ;; This file is part of GNU Emacs. |
48 (add-to-list 'tramp-methods (cons tramp-smb-method nil)) | 48 (add-to-list 'tramp-methods (cons tramp-smb-method nil)) |
49 | 49 |
50 ;; Add a default for `tramp-default-method-alist'. Rule: If there is | 50 ;; Add a default for `tramp-default-method-alist'. Rule: If there is |
51 ;; a domain in USER, it must be the SMB method. | 51 ;; a domain in USER, it must be the SMB method. |
52 (add-to-list 'tramp-default-method-alist | 52 (add-to-list 'tramp-default-method-alist |
53 '("%" "" tramp-smb-method)) | 53 (list "%" "" tramp-smb-method)) |
54 | 54 |
55 ;; Add completion function for SMB method. | 55 ;; Add completion function for SMB method. |
56 (tramp-set-completion-function | 56 (tramp-set-completion-function |
57 tramp-smb-method | 57 tramp-smb-method |
58 '((tramp-parse-netrc "~/.netrc"))) | 58 '((tramp-parse-netrc "~/.netrc"))) |
106 "Flag whether a corresponding process is still running. | 106 "Flag whether a corresponding process is still running. |
107 Will be changed by corresponding `process-sentinel'. | 107 Will be changed by corresponding `process-sentinel'. |
108 This variable is local to each buffer.") | 108 This variable is local to each buffer.") |
109 (make-variable-buffer-local 'tramp-smb-process-running) | 109 (make-variable-buffer-local 'tramp-smb-process-running) |
110 | 110 |
111 (defvar tramp-smb-inodes nil | |
112 "Keeps virtual inodes numbers for SMB files.") | |
113 | |
111 ;; New handlers should be added here. | 114 ;; New handlers should be added here. |
112 (defconst tramp-smb-file-name-handler-alist | 115 (defconst tramp-smb-file-name-handler-alist |
113 '( | 116 '( |
114 ;; `access-file' performed by default handler | 117 ;; `access-file' performed by default handler |
115 (add-name-to-file . tramp-smb-handle-copy-file) ;; we're on Windows, honey. | 118 (add-name-to-file . tramp-smb-handle-copy-file) ;; we're on Windows, honey. |
116 ;; `byte-compiler-base-file-name' performed by default handler | 119 ;; `byte-compiler-base-file-name' performed by default handler |
117 (copy-file . tramp-smb-handle-copy-file) | 120 (copy-file . tramp-smb-handle-copy-file) |
118 (delete-directory . tramp-smb-handle-delete-directory) | 121 (delete-directory . tramp-smb-handle-delete-directory) |
119 (delete-file . tramp-smb-handle-delete-file) | 122 (delete-file . tramp-smb-handle-delete-file) |
120 ;; `diff-latest-backup-file' performed by default handler | 123 ;; `diff-latest-backup-file' performed by default handler |
121 ;; `directory-file-name' performed by default handler | 124 (directory-file-name . tramp-handle-directory-file-name) |
122 (directory-files . tramp-smb-handle-directory-files) | 125 (directory-files . tramp-smb-handle-directory-files) |
123 (directory-files-and-attributes . tramp-smb-handle-directory-files-and-attributes) | 126 (directory-files-and-attributes . tramp-smb-handle-directory-files-and-attributes) |
124 (dired-call-process . tramp-smb-not-handled) | 127 (dired-call-process . tramp-smb-not-handled) |
125 (dired-compress-file . tramp-smb-not-handled) | 128 (dired-compress-file . tramp-smb-not-handled) |
126 ;; `dired-uncache' performed by default handler | 129 ;; `dired-uncache' performed by default handler |
340 (save-excursion | 343 (save-excursion |
341 (let* ((share (tramp-smb-get-share path)) | 344 (let* ((share (tramp-smb-get-share path)) |
342 (file (tramp-smb-get-path path nil)) | 345 (file (tramp-smb-get-path path nil)) |
343 (entries (tramp-smb-get-file-entries user host share file)) | 346 (entries (tramp-smb-get-file-entries user host share file)) |
344 (entry (and entries | 347 (entry (and entries |
345 (assoc (file-name-nondirectory file) entries)))) | 348 (assoc (file-name-nondirectory file) entries))) |
349 (inode (tramp-smb-get-inode share file)) | |
350 (device (tramp-get-device nil tramp-smb-method user host))) | |
351 | |
346 ; check result | 352 ; check result |
347 (when entry | 353 (when entry |
348 (list (and (string-match "d" (nth 1 entry)) | 354 (list (and (string-match "d" (nth 1 entry)) |
349 t) ;0 file type | 355 t) ;0 file type |
350 -1 ;1 link count | 356 -1 ;1 link count |
351 -1 ;2 uid | 357 -1 ;2 uid |
352 -1 ;3 gid | 358 -1 ;3 gid |
353 (nth 3 entry) ;4 atime | 359 '(0 0) ;4 atime |
354 (nth 3 entry) ;5 mtime | 360 (nth 3 entry) ;5 mtime |
355 (nth 3 entry) ;6 ctime | 361 '(0 0) ;6 ctime |
356 (nth 2 entry) ;7 size | 362 (nth 2 entry) ;7 size |
357 (nth 1 entry) ;8 mode | 363 (nth 1 entry) ;8 mode |
358 nil ;9 gid weird | 364 nil ;9 gid weird |
359 -1 ;10 inode number | 365 inode ;10 inode number |
360 -1)))))) ;11 file system number | 366 device)))))) ;11 file system number |
361 | 367 |
362 (defun tramp-smb-handle-file-directory-p (filename) | 368 (defun tramp-smb-handle-file-directory-p (filename) |
363 "Like `file-directory-p' for tramp files." | 369 "Like `file-directory-p' for tramp files." |
364 ; (with-parsed-tramp-file-name filename nil | 370 ; (with-parsed-tramp-file-name filename nil |
365 (let (user host path) | 371 (let (user host path) |
530 ;; Make missing directory parts | 536 ;; Make missing directory parts |
531 (when (and parents share (not (file-directory-p ldir))) | 537 (when (and parents share (not (file-directory-p ldir))) |
532 (make-directory ldir parents)) | 538 (make-directory ldir parents)) |
533 ;; Just do it | 539 ;; Just do it |
534 (when (file-directory-p ldir) | 540 (when (file-directory-p ldir) |
535 (tramp-smb-handle-make-directory-internal dir)) | 541 (make-directory-internal dir)) |
536 (unless (file-directory-p dir) | 542 (unless (file-directory-p dir) |
537 (error "Couldn't make directory %s" dir)))))) | 543 (error "Couldn't make directory %s" dir)))))) |
538 | 544 |
539 (defun tramp-smb-handle-make-directory-internal (directory) | 545 (defun tramp-smb-handle-make-directory-internal (directory) |
540 "Like `make-directory-internal' for tramp files." | 546 "Like `make-directory-internal' for tramp files." |
820 (setq line (substring line 0 -5)) | 826 (setq line (substring line 0 -5)) |
821 (return)) | 827 (return)) |
822 | 828 |
823 ;; size | 829 ;; size |
824 (if (string-match "\\([0-9]+\\)$" line) | 830 (if (string-match "\\([0-9]+\\)$" line) |
825 (setq size (match-string 1 line) | 831 (setq |
826 line (substring line 0 (- (max 8 (1+ (length size)))))) | 832 size (string-to-number (match-string 1 line)) |
833 line (substring | |
834 line 0 (- (max 8 (1+ (length (match-string 1 line))))))) | |
827 (return)) | 835 (return)) |
828 | 836 |
829 ;; mode | 837 ;; mode |
830 (if (string-match "\\(\\([ADHRS]+\\)?\\s-?\\)$" line) | 838 (if (string-match "\\(\\([ADHRS]+\\)?\\s-?\\)$" line) |
831 (setq | 839 (setq |
851 sec min hour day | 859 sec min hour day |
852 (cdr (assoc (downcase month) tramp-smb-parse-time-months)) | 860 (cdr (assoc (downcase month) tramp-smb-parse-time-months)) |
853 year) | 861 year) |
854 '(0 0))) | 862 '(0 0))) |
855 (list path mode size mtime)))) | 863 (list path mode size mtime)))) |
864 | |
865 ;; Inodes don't exist for SMB files. Therefore we must generate virtual ones. | |
866 ;; Used in `find-buffer-visiting'. | |
867 ;; The method applied might be not so efficient (Ange-FTP uses hashes). But | |
868 ;; performance isn't the major issue given that file transfer will take time. | |
869 | |
870 (defun tramp-smb-get-inode (share file) | |
871 "Returns the virtual inode number. | |
872 If it doesn't exist, generate a new one." | |
873 (let ((string (concat share "/" (directory-file-name file)))) | |
874 (unless (assoc string tramp-smb-inodes) | |
875 (add-to-list 'tramp-smb-inodes | |
876 (list string (length tramp-smb-inodes)))) | |
877 (nth 1 (assoc string tramp-smb-inodes)))) | |
856 | 878 |
857 | 879 |
858 ;; Connection functions | 880 ;; Connection functions |
859 | 881 |
860 (defun tramp-smb-send-command (user host command) | 882 (defun tramp-smb-send-command (user host command) |