[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Multiple people touching the same file with ange-ftp
From: |
rgb |
Subject: |
Re: Multiple people touching the same file with ange-ftp |
Date: |
12 Jan 2007 10:40:50 -0800 |
User-agent: |
G2/1.0 |
> >> Searching for MDTM in ange-ftp.el leads one to ange-ftp-file-modtime.
> >>
> > As yet I don't see an obvious way to override or intercept that
> > function on a host by host basis.
>
> You could start by making ange-ftp-file-modtime extensible, the same way
> ange-ftp-parse-listing is extensible via the ange-ftp-parse-list-func-alist
> variable:
>
> (defvar ange-ftp-file-modtime-func-alist nil
> "Alist saying how to return modification time of remote file.
> Association list of \( TYPE \. FUNC \) pairs, where FUNC is a
> routine which returns the modification time of a remote file from
> a host of type TYPE.")
>
> (defadvice ange-ftp-file-modtime (around func-alist activate)
> "If `ange-ftp-file-modtime-func-alist' has an entry for FILE's host type,
> return the result of calling that function."
> (let* ((ftp-name (ange-ftp-ftp-name file))
> (host (nth 0 ftp-name))
> (user (nth 1 ftp-name))
> (name (nth 2 ftp-name))
> (func (assq (ange-ftp-host-type host)
> ange-ftp-file-modtime-func-alist)))
> (if func
> (funcall func file)
> ad-do-it)))
>
> Now you just have to implement ange-ftp-file-modtime-for-FOO and add
> (FOO . ange-ftp-file-modtime-for-FOO) to ange-ftp-file-modtime-func-alist,
> assuming ange-ftp-host-type returns FOO for file's on your server. :-)
>
Thanks.
I did get it working using your alist suggestion.
(defadvice ange-ftp-file-modtime
(around host-type-alist-advice compile activate)
"If `ange-ftp-file-modtime-func-alist' has an entry for FILE's host
type,
return the result of calling that function."
(let ((fcn (cdr (assq (ange-ftp-host-type
(car (ange-ftp-ftp-name file)))
ange-ftp-file-modtime-func-alist))))
(if fcn
(setq ad-return-value (funcall fcn file))
ad-do-it)))