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: Kevin Rodgers
Subject: Re: Multiple people touching the same file with ange-ftp
Date: Fri, 12 Jan 2007 01:00:31 -0700
User-agent: Thunderbird 1.5.0.9 (Macintosh/20061207)

rgb wrote:
Kevin Rodgers wrote:
rgb wrote:
I see the command MDTM being attempted and the response
'command not understood' coming back.
If I could intercept this, the DIR command does show the modification
time so I should be able to find and return it.
Searching for MDTM in ange-ftp.el leads one to ange-ftp-file-modtime.


Yes I did notice that.  Thanks
As yet I don't see an obvious way to override or intercept that
function on a  host by host basis.
I see examples of host specific calls being set up like this.
(add-to-list 'ange-ftp-parse-list-func-alist
             '(vms . ange-ftp-parse-vms-listing))
But it doesn't work for this function.
I'm sure, with some further study
I'll find a way.  It's been a slow process so far.  Perhaps putting
advice around it is the only way.
There seems to be lots of essoteric knowledge needed to
retrieve the data needed to compute the time too.
I'm continuing to plug away at it and will keep my eye here
for shortcuts or advise on the best way to proceed.

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. :-)

--
Kevin Rodgers
Denver, Colorado, USA





reply via email to

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