# HG changeset patch # User Andr Spiegel # Date 1064404545 0 # Node ID 04c9b596cce6a3c61045f920b591b0f823196acc # Parent 87fd1a2fa4260cb1487934db03e4bfc5274421f5 (vc-cvs-parse-entry): Restore the code to compare time stamps numerically, rather than textually. diff -r 87fd1a2fa426 -r 04c9b596cce6 lisp/vc-cvs.el --- a/lisp/vc-cvs.el Wed Sep 24 08:52:09 2003 +0000 +++ b/lisp/vc-cvs.el Wed Sep 24 11:55:45 2003 +0000 @@ -5,7 +5,7 @@ ;; Author: FSF (see vc.el for full credits) ;; Maintainer: Andre Spiegel -;; $Id: vc-cvs.el,v 1.62 2003/07/04 22:40:26 monnier Exp $ +;; $Id: vc-cvs.el,v 1.63 2003/09/01 15:45:17 miles Exp $ ;; This file is part of GNU Emacs. @@ -922,20 +922,22 @@ (vc-file-setprop file 'vc-workfile-version (match-string 1)) (vc-file-setprop file 'vc-cvs-sticky-tag (vc-cvs-parse-sticky-tag (match-string 4) (match-string 5))) - ;; compare checkout time and modification time - (let* ((mtime (nth 5 (file-attributes file))) - (system-time-locale "C") - (mtstr (format-time-string "%c" mtime 'utc))) - ;; Solaris sometimes uses "Wed Sep 05" instead of "Wed Sep 5". - ;; See "grep '[^a-z_]ctime' cvs/src/*.c" for reference. - (if (= (aref mtstr 8) ?0) - (setq mtstr (concat (substring mtstr 0 8) " " (substring mtstr 9)))) - (cond ((equal mtstr (match-string 2)) - (vc-file-setprop file 'vc-checkout-time mtime) - (if set-state (vc-file-setprop file 'vc-state 'up-to-date))) - (t - (vc-file-setprop file 'vc-checkout-time 0) - (if set-state (vc-file-setprop file 'vc-state 'edited)))))))) + ;; Compare checkout time and modification time. + ;; This is intentionally different from the algorithm that CVS uses + ;; (based on textual comparison), because there can be problems + ;; generating a time string that looks exactly like the one from CVS. + (let ((mtime (nth 5 (file-attributes file)))) + (require 'parse-time) + (let ((parsed-time + (parse-time-string (concat (match-string 2) " +0000")))) + (cond ((and (not (string-match "\\+" (match-string 2))) + (car parsed-time) + (equal mtime (apply 'encode-time parsed-time))) + (vc-file-setprop file 'vc-checkout-time mtime) + (if set-state (vc-file-setprop file 'vc-state 'up-to-date))) + (t + (vc-file-setprop file 'vc-checkout-time 0) + (if set-state (vc-file-setprop file 'vc-state 'edited))))))))) (provide 'vc-cvs)