diff options
author | Rasmus Pank Roulund <emacs@pank.eu> | 2014-12-10 17:47:53 +0100 |
---|---|---|
committer | Michael Albinus <michael.albinus@gmx.de> | 2014-12-10 17:47:53 +0100 |
commit | bdc373bf456de464b44836b11826705c0aef70b1 (patch) | |
tree | 296d24105f02d085761c5a421500957042bc5e55 /lisp/net/ange-ftp.el | |
parent | 94a3f7648cfc9d1d205e69eff0beec416d30a0fe (diff) | |
download | emacs-bdc373bf456de464b44836b11826705c0aef70b1.tar.gz |
(ange-ftp-switches-ok): Disallow flags causing trouble with ls over ftp.
Fixes: debbugs:19192
* net/ange-ftp.el (ange-ftp-switches-ok): Disallow flags causing
trouble with ls over ftp. These flags result in ls returning no
output, causing Tramp-breakage.
Diffstat (limited to 'lisp/net/ange-ftp.el')
-rw-r--r-- | lisp/net/ange-ftp.el | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index d7632ed5e1b..db79c0d6675 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -2831,16 +2831,24 @@ match subdirectories as well.") files ange-ftp-files-hashtable))) (defun ange-ftp-switches-ok (switches) - "Return SWITCHES (a string) if suitable for our use." + "Return SWITCHES (a string) if suitable for use with ls over ftp." (and (stringp switches) - ;; We allow the A switch, which lists all files except "." and - ;; "..". This is OK because we manually insert these entries - ;; in the hash table. + ;; We allow the --almost-all switch, which lists all files + ;; except "." and "..". This is OK because we manually + ;; insert these entries in the hash table. (string-match - "--\\(almost-\\)?all\\>\\|\\(\\`\\| \\)-[[:alpha:]]*[aA]" switches) + "--\\(almost-\\)?all\\>\\|\\(\\`\\| \\)-[[:alpha:]]*[aA]" + switches) + ;; Disallow other long flags except --(almost-)all. + (not (string-match "\\(\\`\\| \\)--\\w+" + (replace-regexp-in-string + "--\\(almost-\\)?all\\>" "" + switches))) + ;; Must include 'l'. (string-match "\\(\\`\\| \\)-[[:alpha:]]*l" switches) + ;; Disallow recursive flag. (not (string-match - "--recursive\\>\\|\\(\\`\\| \\)-[[:alpha:]]*R" switches)) + "\\(\\`\\| \\)-[[:alpha:]]*R" switches)) switches)) (defun ange-ftp-get-files (directory &optional no-error) |