]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/net/ange-ftp.el (ange-ftp-good-msgs, ange-ftp-get-pwd):
authorGlenn Morris <rgm@gnu.org>
Fri, 16 Aug 2013 07:13:48 +0000 (00:13 -0700)
committerGlenn Morris <rgm@gnu.org>
Fri, 16 Aug 2013 07:13:48 +0000 (00:13 -0700)
Handle "Remote Directory" response of some clients.

Fixes: debbugs:15058
lisp/ChangeLog
lisp/net/ange-ftp.el

index c35252b184ce1265d257af92e93d59d07855d9a5..9e77d51c8159a288604186710abc44da504edf83 100644 (file)
@@ -1,5 +1,8 @@
 2013-08-16  Glenn Morris  <rgm@gnu.org>
 
+       * net/ange-ftp.el (ange-ftp-good-msgs, ange-ftp-get-pwd):
+       Handle "Remote Directory" response of some clients.  (Bug#15058)
+
        * emacs-lisp/bytecomp.el (byte-compile-make-variable-buffer-local):
        Tweak warning.  (Bug#14926)
 
index c3adb7208e9c8e5b0138b4b885b7ff57cdfb4254..b8e279be91bfaf67d1f4063902bd7b1ae9cdb07a 100644 (file)
@@ -1,7 +1,6 @@
 ;;; ange-ftp.el --- transparent FTP support for GNU Emacs
 
-;; Copyright (C) 1989-1996, 1998, 2000-2013 Free Software Foundation,
-;; Inc.
+;; Copyright (C) 1989-1996, 1998, 2000-2013 Free Software Foundation, Inc.
 
 ;; Author: Andy Norman (ange@hplb.hpl.hp.com)
 ;; Maintainer: FSF
@@ -700,7 +699,7 @@ parenthesized expressions in REGEXP for the components (in that order)."
   "Regular expression matching the start of a multiline FTP reply.")
 
 (defvar ange-ftp-good-msgs
-  "^220 \\|^230 \\|^226 \\|^25. \\|^221 \\|^200 \\|^[Hh]ash mark"
+  "^220 \\|^230 \\|^226 \\|^25. \\|^221 \\|^200 \\|^[Hh]ash mark\\|^Remote directory:"
   "Regular expression matching FTP \"success\" messages.")
 
 ;; CMS and the odd VMS machine say 200 Port rather than 200 PORT.
@@ -3021,6 +3020,9 @@ and LINE is the relevant success or fail line from the FTP-client."
     (if (car result)
        (save-match-data
          (and (or (string-match "\"\\([^\"]*\\)\"" line)
+                  ;; Some clients cache the value and return it in
+                  ;; this way without asking the server.  (Bug#15058)
+                  (string-match "^Remote directory: \\(.*\\)" line)
                   (string-match " \\([^ ]+\\) " line)) ; stone-age VMS servers!
               (setq dir (match-string 1 line)))))
     (cons dir line)))