GNU bug report logs -
#75877
30.0.91; dired-omit-expunge embeds unquoted filename in format string
Previous Next
Reported by: Derek Upham <derek_upham <at> mailfence.com>
Date: Sun, 26 Jan 2025 18:27:02 UTC
Severity: normal
Found in version 30.0.91
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> Date: Sun, 26 Jan 2025 10:26:27 -0800
> From: Derek Upham via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>
>
> Looking at “dired-omit-expunge” in dired-x.el, in this block:
>
> (setq count (+ count
> (dired-do-kill-lines
> nil
> (if dired-omit-verbose
> (format "Omitted %%d line%%s in %s"
> (abbreviate-file-name
> dired-directory))
> "")
> init-count)))
>
> Here that “format” call generates a format template, such that
> “dired-do-kill-lines” can invoke “message” with that text plus
> count
> information.
>
> If the directory name contains embedded percentage characters,
> then the
> template ends up with extra parameter slots. The call to
> “message”
> fails with an error and Dired does not present the directory.
>
> (error "Not enough arguments for format string")
>
> (In case someone is curious “Why put percentages in the names at
> all?”,
> I use it to map those directories 1:1 with URLs/websites.)
Thanks. Is the below the right fix?
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 4a05f60..89390a4 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -498,8 +498,10 @@ dired-omit-expunge
nil
(if dired-omit-verbose
(format "Omitted %%d line%%s in %s"
- (abbreviate-file-name
- dired-directory))
+ (replace-regexp-in-string
+ "%" "%%"
+ (abbreviate-file-name
+ dired-directory)))
"")
init-count)))
(force-mode-line-update))))
This bug report was last modified 110 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.