Subject: bug#75877: closed (Re: bug#75877: 30.0.91; dired-omit-expunge embeds unquoted filename in format string)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 05 Feb 2025 13:50:02 +0000

Your bug report

#75877: 30.0.91; dired-omit-expunge embeds unquoted filename in format string

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
75877: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75877
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#75877: 30.0.91; dired-omit-expunge embeds unquoted filename in format string
From: Eli Zaretskii <[email-masked]>
To: Derek Upham <[email-masked]>
Cc: [email-masked]
Date: Wed, 05 Feb 2025 15:49:46 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Derek Upham <[email-masked]>
> Date: Tue, 04 Feb 2025 15:40:12 -0800
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > 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))))
> 
> Yeah, that patch will handle that use case.  Thanks.

Thanks, installed on the master branch, and closing the bug.

Subject: 30.0.91; dired-omit-expunge embeds unquoted filename in format string
From: Derek Upham <[email-masked]>
To: [email-masked]
Date: Sun, 26 Jan 2025 10:26:27 -0800
List-Id: <debbugs-submit.debbugs.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.)

In GNU Emacs 30.0.91 (build 2, x86_64-pc-linux-gnu, GTK+ Version
 2.24.33, cairo version 1.18.2) of 2024-10-19 built on
 priss.frightenedpiglet.com
Windowing system distributor 'The X.Org Foundation', version 
11.0.12101014
System Description: Debian GNU/Linux trixie/sid

-- 
Derek Upham
[email-masked]