Subject: bug#13679: closed (Re: bug#13679: 24.2.93; doc-view-mode cannot handle PDFs whose filename contains a percentage sign)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 11 Feb 2013 19:32:01 +0000

Your bug report

#13679: 24.2.93; doc-view-mode cannot handle PDFs whose filename contains a percentage sign

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].

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

Subject: Re: bug#13679: 24.2.93; doc-view-mode cannot handle PDFs whose filename contains a percentage sign
From: Stefan Monnier <[email-masked]>
To: Elias Pipping <[email-masked]>
Cc: [email-masked]
Date: Mon, 11 Feb 2013 14:30:40 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

> I've attached the simplest fix I could think of.

Looks good, thank you, installed in a slightly simpler form (using
subst-char-in-string and without defining a separate function for it).

        Stefan

Subject: 24.2.93; doc-view-mode cannot handle PDFs whose filename contains a percentage sign
From: Elias Pipping <[email-masked]>
To: [email-masked]
Date: Sun, 10 Feb 2013 18:59:05 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

doc-view-mode currently calls either ghostscript or mupdf's mudraw to
render PDFs to PNG images. Both tools interpret a percentage sign in
the name of the target file as a format instruction. Since doc-view's
cache directory is named after the input PDF, whose name can contain
percentage signs, it, too, can contain percentage signs.

As a result, doc-view mode cannot currently handle PDF files whose name
contains a percentage sign. I've attached the simplest fix I could think
of.

Best regards,

Elias Pipping

>From 2c35f04fc1191878b01b4ab07821e20fdc461511 Mon Sep 17 00:00:00 2001
From: Elias Pipping <[email-masked]>
Date: Sun, 10 Feb 2013 18:51:10 +0100
Subject: [PATCH] Escape percentage signs

---
 lisp/doc-view.el | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index e7d1ebc..18e17bd 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -675,6 +675,9 @@ at the top edge of the page moves to the previous page."
 	 (format "Unable to use temporary directory %s: %s"
 		 dir (mapconcat 'identity (cdr error) " "))))))))
 
+(defun doc-view-escape-percentage-sign (str)
+  (replace-regexp-in-string "%" "_" str))
+
 (defun doc-view-current-cache-dir ()
   "Return the directory where the png files of the current doc should be saved.
 It's a subdirectory of `doc-view-cache-directory'."
@@ -686,7 +689,8 @@ It's a subdirectory of `doc-view-cache-directory'."
     (setq doc-view-current-cache-dir
 	  (file-name-as-directory
 	   (expand-file-name
-	    (concat (file-name-nondirectory doc-view-buffer-file-name)
+	    (concat (doc-view-escape-percentage-sign
+                     (file-name-nondirectory doc-view-buffer-file-name))
 		    "-"
 		    (let ((file doc-view-buffer-file-name))
 		      (with-temp-buffer
-- 
1.8.1.2