Commit c18381d1 authored by Paul Eggert's avatar Paul Eggert
Browse files

(vc-utc-string): Remove; it wasn't reliable near DST or leap-second

transitions.
(vc-find-cvs-master): Convert UTC string to encoded time and compare
the results to the file attributes, rather than attempting to convert
file attributes to UTC string (which wasn't reliable).
parent 7999547d
......@@ -764,20 +764,6 @@ For CVS, the full name of CVS/Entries is returned."
vc-master-templates)
nil)))))
(defun vc-utc-string (timeval)
;; Convert a time value into universal time, and return it as a
;; human-readable string. This is for comparing CVS checkout times
;; with file modification times.
(let (utc (high (car timeval)) (low (nth 1 timeval))
(offset (car (current-time-zone timeval))))
(setq low (- low offset))
(setq utc (if (> low 65535)
(list (1+ high) (- low 65536))
(if (< low 0)
(list (1- high) (+ 65536 low))
(list high low))))
(current-time-string utc)))
(defun vc-find-cvs-master (dirname basename)
;; Check if DIRNAME/BASENAME is handled by CVS.
;; If it is, do a (throw 'found (cons MASTER 'CVS)).
......@@ -801,7 +787,7 @@ For CVS, the full name of CVS/Entries is returned."
(cond
((re-search-forward
(concat "^/" (regexp-quote basename)
"/\\([^/]*\\)/\\([^/]*\\)/")
"/\\([^/]*\\)/[^ /]* \\([A-Z][a-z][a-z]\\) *\\([0-9]*\\) \\([0-9]*\\):\\([0-9]*\\):\\([0-9]*\\) \\([0-9]*\\)/")
nil t)
(setq case-fold-search fold) ;; restore the old value
;; We found it. Store away version number now that we
......@@ -811,8 +797,20 @@ For CVS, the full name of CVS/Entries is returned."
(match-string 1))
;; If the file hasn't been modified since checkout,
;; store the checkout-time.
(let ((mtime (nth 5 (file-attributes file))))
(if (string= (match-string 2) (vc-utc-string mtime))
(let ((mtime (nth 5 (file-attributes file)))
(second (string-to-number (match-string 6)))
(minute (string-to-number (match-string 5)))
(hour (string-to-number (match-string 4)))
(day (string-to-number (match-string 3)))
(year (string-to-number (match-string 7))))
(if (equal mtime
(encode-time
second minute hour day
(/ (string-match
(match-string 2)
"xxxJanFebMarAprMayJunJulAugSepOctNovDec")
3)
year 0))
(vc-file-setprop file 'vc-checkout-time mtime)
(vc-file-setprop file 'vc-checkout-time 0)))
(throw 'found (cons (concat dirname "CVS/Entries") 'CVS)))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment