help-gnu-emacs
[Top][All Lists]
Advanced

[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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]