aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1998-01-17 19:44:51 +0000
committerRichard M. Stallman1998-01-17 19:44:51 +0000
commitef1c82874d22fb3060e95086e93592f7e72545a4 (patch)
treec3178eec9a19306d5449f751b0038b234933c381
parent251680cf7dc7e473446a4acba81a9e610a261b1c (diff)
downloademacs-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.el21
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))))