summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog3
-rw-r--r--lisp/dired.el9
2 files changed, 11 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 398b058a874..e799ead207b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,5 +1,8 @@
2012-10-18 Glenn Morris <rgm@gnu.org>
+ * dired.el (dired-sort-toggle): Some ls implementations only allow
+ a single option string. (Bug#12666)
+
* minibuffer.el (completion-cycle-threshold): Doc fix.
2012-10-17 Kenichi Handa <handa@gnu.org>
diff --git a/lisp/dired.el b/lisp/dired.el
index a17e1805339..a4bc16caebf 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -3546,8 +3546,15 @@ With a prefix argument, edit the current listing switches instead."
(setq dired-actual-switches
(replace-match "" t t dired-actual-switches 3))))
;; Now, if we weren't sorting by date before, add the -t switch.
+ ;; Some simple-minded ls implementations (eg ftp servers) only
+ ;; allow a single option string, so try not to add " -t" if possible.
(unless sorting-by-date
- (setq dired-actual-switches (concat dired-actual-switches " -t"))))
+ (setq dired-actual-switches
+ (concat dired-actual-switches
+ (if (string-match-p "\\`-[[:alnum:]]+\\'"
+ dired-actual-switches)
+ "t"
+ " -t")))))
(dired-sort-set-mode-line)
(revert-buffer))