emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: time values


From: Luc Teirlinck
Subject: Re: time values
Date: Sun, 11 Jul 2004 10:13:09 -0500 (CDT)

   It would be great if there was a way for Tramp to find out whether
   the new-style or the old-style value should be returned.  Then a
   single code base could be used to support Emacs 21.3 as well as 21.4.

Like Andreas already pointed out, it depends on whether you actually
have to construct time values that other functions are going to _believe
to be return values of `visited-file-modtime'_.  In as far as I know,
all functions that accept time value arguments already can handle
both conses and lists.  If you have to construct such values, what
about just using `emacs-version'?

Otherwise, I believe the following patch should do.

By the way, your current code seems to assume that
`visited-file-modtime' is not 0.  Are you sure of that?  Of course,
you know that (nth 5 attr) is not (0 0), but still.  My patch still
probably assumes that: can tramp-time-diff handle 0 as an argument?
Otherwise, it is easy to rewrite the patch to transform 0 into (0 0),
or maybe an integer N < 2**16 into (0 N), because, theoretically,
`visited-file-modtime' can return such integers.  (Even though probably
not in practice).  But maybe `tramp-time-diff' is the place to
actually do that.

===File ~/tramp-diff-2======================================
*** tramp.el    26 Jun 2004 16:46:18 -0500      1.46
--- tramp.el    11 Jul 2004 09:35:00 -0500      
***************
*** 2338,2349 ****
        (let* ((attr (file-attributes f))
               (modtime (nth 5 attr)))
          (cond ((and attr (not (equal modtime '(0 0))))
-                ;; Why does `file-attributes' return a list (HIGH
-                ;; LOW), but `visited-file-modtime' returns a cons
-                ;; (HIGH . LOW)?
                 (let ((mt (visited-file-modtime)))
                   (< (abs (tramp-time-diff
!                           modtime (list (car mt) (cdr mt)))) 2)))
                (attr
                 (save-excursion
                   (tramp-send-command
--- 2338,2353 ----
        (let* ((attr (file-attributes f))
               (modtime (nth 5 attr)))
          (cond ((and attr (not (equal modtime '(0 0))))
                 (let ((mt (visited-file-modtime)))
                   (< (abs (tramp-time-diff
!                           modtime
!                           ;; For compatibility, deal with both the old
!                           ;; (HIGH . LOW) and the new (HIGH LOW)
!                           ;; return values of `visited-file-modtime'.
!                           (if (and (consp mt) (atom (cdr mt)))
!                               (list (car mt) (cdr mt))
!                             mt)))
!                          2)))
                (attr
                 (save-excursion
                   (tramp-send-command
============================================================




reply via email to

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