diff options
| author | Richard M. Stallman | 1998-01-17 19:44:51 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1998-01-17 19:44:51 +0000 |
| commit | ef1c82874d22fb3060e95086e93592f7e72545a4 (patch) | |
| tree | c3178eec9a19306d5449f751b0038b234933c381 | |
| parent | 251680cf7dc7e473446a4acba81a9e610a261b1c (diff) | |
| download | emacs-ef1c82874d22fb3060e95086e93592f7e72545a4.tar.gz emacs-ef1c82874d22fb3060e95086e93592f7e72545a4.zip | |
(ange-ftp-inodes-hashtable): New variable.
(ange-ftp-next-inode-number): New variable.
(ange-ftp-file-attributes): Assign each file a unique "inode number".
| -rw-r--r-- | lisp/ange-ftp.el | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/lisp/ange-ftp.el b/lisp/ange-ftp.el index 0d395dd0402..c00737bee15 100644 --- a/lisp/ange-ftp.el +++ b/lisp/ange-ftp.el | |||
| @@ -1010,6 +1010,12 @@ All HOST values should be in lower case.") | |||
| 1010 | (defvar ange-ftp-files-hashtable (ange-ftp-make-hashtable 97) | 1010 | (defvar ange-ftp-files-hashtable (ange-ftp-make-hashtable 97) |
| 1011 | "Hash table for storing directories and their respective files.") | 1011 | "Hash table for storing directories and their respective files.") |
| 1012 | 1012 | ||
| 1013 | (defvar ange-ftp-inodes-hashtable (ange-ftp-make-hashtable 97) | ||
| 1014 | "Hash table for storing file names and their \"inode numbers\".") | ||
| 1015 | |||
| 1016 | (defvar ange-ftp-next-inode-number 1 | ||
| 1017 | "Next \"inode number\" value. We give each file name a unique number.") | ||
| 1018 | |||
| 1013 | (defvar ange-ftp-ls-cache-lsargs nil | 1019 | (defvar ange-ftp-ls-cache-lsargs nil |
| 1014 | "Last set of args used by ange-ftp-ls.") | 1020 | "Last set of args used by ange-ftp-ls.") |
| 1015 | 1021 | ||
| @@ -3294,7 +3300,13 @@ system TYPE.") | |||
| 3294 | (let ((host (nth 0 parsed)) | 3300 | (let ((host (nth 0 parsed)) |
| 3295 | (user (nth 1 parsed)) | 3301 | (user (nth 1 parsed)) |
| 3296 | (name (nth 2 parsed)) | 3302 | (name (nth 2 parsed)) |
| 3297 | (dirp (ange-ftp-get-hash-entry part files))) | 3303 | (dirp (ange-ftp-get-hash-entry part files)) |
| 3304 | (inode (ange-ftp-get-hash-entry | ||
| 3305 | file ange-ftp-inodes-hashtable))) | ||
| 3306 | (unless inode | ||
| 3307 | (setq inode ange-ftp-next-inode-number | ||
| 3308 | ange-ftp-next-inode-number (1+ inode)) | ||
| 3309 | (ange-ftp-put-hash-entry file inode ange-ftp-inodes-hashtable)) | ||
| 3298 | (list (if (and (stringp dirp) (file-name-absolute-p dirp)) | 3310 | (list (if (and (stringp dirp) (file-name-absolute-p dirp)) |
| 3299 | (ange-ftp-expand-symlink dirp | 3311 | (ange-ftp-expand-symlink dirp |
| 3300 | (file-name-directory file)) | 3312 | (file-name-directory file)) |
| @@ -3309,12 +3321,7 @@ system TYPE.") | |||
| 3309 | (concat (if (stringp dirp) "l" (if dirp "d" "-")) | 3321 | (concat (if (stringp dirp) "l" (if dirp "d" "-")) |
| 3310 | "?????????") ;8 mode | 3322 | "?????????") ;8 mode |
| 3311 | nil ;9 gid weird | 3323 | nil ;9 gid weird |
| 3312 | ;; Hack to give remote files a unique "inode number". | 3324 | inode ;10 "inode number". |
| 3313 | ;; It's actually the sum of the characters in its name. | ||
| 3314 | (apply '+ (nconc (mapcar 'identity host) | ||
| 3315 | (mapcar 'identity user) | ||
| 3316 | (mapcar 'identity | ||
| 3317 | (directory-file-name name)))) | ||
| 3318 | -1 ;11 device number [v19 only] | 3325 | -1 ;11 device number [v19 only] |
| 3319 | )))) | 3326 | )))) |
| 3320 | (ange-ftp-real-file-attributes file)))) | 3327 | (ange-ftp-real-file-attributes file)))) |