Mercurial > emacs
comparison lisp/net/ange-ftp.el @ 38312:b6dd8b1368af
(ange-ftp-file-modtime): Ignore 226 responses
from the server. Call encode-time only when we are sure that we
got a 213 response.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Fri, 06 Jul 2001 14:02:48 +0000 |
parents | 989feabdf50e |
children | 3c2404604bae |
comparison
equal
deleted
inserted
replaced
38311:b91b2fa6911d | 38312:b6dd8b1368af |
---|---|
3424 file))) | 3424 file))) |
3425 (ange-ftp-delete-file-entry file)) | 3425 (ange-ftp-delete-file-entry file)) |
3426 (ange-ftp-real-delete-file file)))) | 3426 (ange-ftp-real-delete-file file)))) |
3427 | 3427 |
3428 (defun ange-ftp-file-modtime (file) | 3428 (defun ange-ftp-file-modtime (file) |
3429 "Return the modification time of remote file FILE. | |
3430 Value is (0 0) if the modification time cannot be determined." | |
3429 (let* ((parsed (ange-ftp-ftp-name file)) | 3431 (let* ((parsed (ange-ftp-ftp-name file)) |
3432 ;; At least one FTP server (wu-ftpd) can return a "226 | |
3433 ;; Transfer complete" before the "213 MODTIME". Let's skip | |
3434 ;; that. | |
3435 (ange-ftp-skip-msgs (concat ange-ftp-skip-msgs "\\|^226")) | |
3430 (res (ange-ftp-send-cmd (car parsed) (cadr parsed) | 3436 (res (ange-ftp-send-cmd (car parsed) (cadr parsed) |
3431 (list 'quote "mdtm" (cadr (cdr parsed)))))) | 3437 (list 'quote "mdtm" (cadr (cdr parsed))))) |
3432 (if (= ?5 (aref (cdr res) 0)) '(0 0) | 3438 (line (cdr res)) |
3433 (encode-time ; MDTM returns "YYYYMMDDHHMMSS" GMT | 3439 (modtime '(0 0))) |
3434 (string-to-number (substring (cdr res) 16 18)) | 3440 (when (string-match "^213" line) |
3435 (string-to-number (substring (cdr res) 14 16)) | 3441 ;; MDTM should return "213 YYYYMMDDhhmmss" GMT on success. |
3436 (string-to-number (substring (cdr res) 12 14)) | 3442 (setq modtime |
3437 (string-to-number (substring (cdr res) 10 12)) | 3443 (encode-time |
3438 (string-to-number (substring (cdr res) 8 10)) | 3444 (string-to-number (substring line 16 18)) |
3439 (string-to-number (substring (cdr res) 4 8)) | 3445 (string-to-number (substring line 14 16)) |
3440 0)))) | 3446 (string-to-number (substring line 12 14)) |
3447 (string-to-number (substring line 10 12)) | |
3448 (string-to-number (substring line 8 10)) | |
3449 (string-to-number (substring line 4 8)) | |
3450 0))) | |
3451 modtime)) | |
3441 | 3452 |
3442 (defun ange-ftp-verify-visited-file-modtime (buf) | 3453 (defun ange-ftp-verify-visited-file-modtime (buf) |
3443 (let ((name (buffer-file-name buf))) | 3454 (let ((name (buffer-file-name buf))) |
3444 (if (and (stringp name) (ange-ftp-ftp-name name)) | 3455 (if (and (stringp name) (ange-ftp-ftp-name name)) |
3445 (let ((file-mdtm (ange-ftp-file-modtime name)) | 3456 (let ((file-mdtm (ange-ftp-file-modtime name)) |