Function: ange-ftp-file-attributes

ange-ftp-file-attributes is a byte-compiled function defined in ange-ftp.el.gz.

Signature

(ange-ftp-file-attributes FILE &optional ID-FORMAT)

Source Code

;; Defined in /usr/src/emacs/lisp/net/ange-ftp.el.gz
(defun ange-ftp-file-attributes (file &optional id-format)
  (setq file (expand-file-name file))
  (let ((parsed (ange-ftp-ftp-name file)))
    (if parsed
	(let ((part (ange-ftp-get-file-part file))
	      (files (ange-ftp-get-files (file-name-directory file))))
	  (if (ange-ftp-hash-entry-exists-p part files)
	      (let (;; (host (nth 0 parsed))
		    ;; (user (nth 1 parsed))
		    ;; (name (nth 2 parsed))
		    (dirp (gethash part files))
		    (inode (gethash file ange-ftp-inodes-hashtable)))
		(unless inode
		  (setq inode ange-ftp-next-inode-number
			ange-ftp-next-inode-number (1+ inode))
		  (puthash file inode ange-ftp-inodes-hashtable))
		(list (if (and (stringp dirp) (file-name-absolute-p dirp))
			  (ange-ftp-expand-symlink dirp
						   (file-name-directory file))
			dirp)		;0 file type
		      -1		;1 link count
		      (if (eq id-format 'string)
                          "nobody" -1)	;2 uid
		      (if (eq id-format 'string)
                          "nobody" -1)	;3 gid
		      '(0 0)		;4 atime
		      (ange-ftp-file-modtime file) ;5 mtime
		      '(0 0)		;6 ctime
		      (ange-ftp-file-size file)	;7 size
		      (concat (if (stringp dirp) "l" (if dirp "d" "-"))
			      "?????????") ;8 mode
		      nil		;9 gid weird
		      inode		;10 "inode number".
		      -1		;11 device number [v19 only]
		      ))))
      (if id-format
	  (ange-ftp-real-file-attributes file id-format)
	(ange-ftp-real-file-attributes file)))))