unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Jordan Wilson <jordan.t.wilson@gmx.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 32989@debbugs.gnu.org
Subject: bug#32989: 26.1; Opening PDF attachments in Gnus with doc-view-mode causes error on Windows
Date: Wed, 10 Oct 2018 11:45:57 +0100	[thread overview]
Message-ID: <877eiqhyfu.fsf@gmx.com> (raw)
In-Reply-To: <83pnwkyzon.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Oct 2018 23:02:32 +0300")

[-- Attachment #1: Type: text/plain, Size: 1069 bytes --]

On 2018-10-08 (Mon) at 23:02 (ZZZ), Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Jordan Wilson <jordan.t.wilson@gmx.com>
>> Date: Mon, 08 Oct 2018 15:44:55 +0100
>> 
>>   File error: "Opening output file", "Invalid argument", "c:/Users/Jordan/Emacs/.cache/docview-cache/ *mm*-012345" 
>> 
>> this leaves a buffer showing the file literally. If I rename that buffer
>> to something not containing an asterisk, it displays fine when running
>> "doc-view-mode". Windows apparently can't handle asterisks in
>> directory/file names.
>
> Windows doesn't allow '*' (and a few other characters) in any file
> name, not just in directory name.  Gnus should run the file name
> through convert-standard-filename to get something that is guaranteed
> to work on any filesystem.
Looking, it seems to be on doc-view's side -- if a buffer isn't
associated with a file, it uses the buffer name for the file's cache
directory. Here's a patch to the 26 and trunk branches of doc-view.el to
run the file names through `convert-standard-filename'. It fixes the
problem for me, at least.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: doc-view-26.diff --]
[-- Type: text/x-patch, Size: 2692 bytes --]

--- doc-view-26.el	2018-10-09 16:27:18.890549900 +0100
+++ doc-view-26-2.el	2018-10-09 16:29:04.122599100 +0100
@@ -1772,27 +1772,28 @@
     (doc-view-make-safe-dir doc-view-cache-directory)
     ;; Handle compressed files, remote files, files inside archives
     (setq-local doc-view--buffer-file-name
-                (cond
-                 (jka-compr-really-do-compress
-                  ;; FIXME: there's a risk of name conflicts here.
-                  (expand-file-name
-                   (file-name-nondirectory
-                    (file-name-sans-extension buffer-file-name))
-                   doc-view-cache-directory))
-                 ;; Is the file readable by local processes?
-                 ;; We used to use `file-remote-p' but it's unclear what it's
-                 ;; supposed to return nil for things like local files accessed
-                 ;; via `su' or via file://...
-                 ((let ((file-name-handler-alist nil))
-                    (not (and buffer-file-name
-                              (file-readable-p buffer-file-name))))
-                  ;; FIXME: there's a risk of name conflicts here.
-                  (expand-file-name
-                   (if buffer-file-name
-                       (file-name-nondirectory buffer-file-name)
-                     (buffer-name))
-                   doc-view-cache-directory))
-                 (t buffer-file-name)))
+		(convert-standard-filename
+                 (cond
+                  (jka-compr-really-do-compress
+                   ;; FIXME: there's a risk of name conflicts here.
+                   (expand-file-name
+                    (file-name-nondirectory
+                     (file-name-sans-extension buffer-file-name))
+                    doc-view-cache-directory))
+                  ;; Is the file readable by local processes?
+                  ;; We used to use `file-remote-p' but it's unclear what it's
+                  ;; supposed to return nil for things like local files accessed
+                  ;; via `su' or via file://...
+                  ((let ((file-name-handler-alist nil))
+                     (not (and buffer-file-name
+                               (file-readable-p buffer-file-name))))
+                   ;; FIXME: there's a risk of name conflicts here.
+                   (expand-file-name
+                    (if buffer-file-name
+			(file-name-nondirectory buffer-file-name)
+                      (buffer-name))
+                    doc-view-cache-directory))
+                  (t buffer-file-name))))
     (when (not (string= doc-view--buffer-file-name buffer-file-name))
       (write-region nil nil doc-view--buffer-file-name))
 

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: doc-view-trunk.diff --]
[-- Type: text/x-patch, Size: 2733 bytes --]

--- doc-view-trunk.el	2018-10-09 16:31:48.000000000 +0100
+++ doc-view-trunk-2.el	2018-10-09 16:31:31.502299800 +0100
@@ -1764,27 +1764,28 @@
     (doc-view-make-safe-dir doc-view-cache-directory)
     ;; Handle compressed files, remote files, files inside archives
     (setq-local doc-view--buffer-file-name
-                (cond
-                 (jka-compr-really-do-compress
-                  ;; FIXME: there's a risk of name conflicts here.
-                  (expand-file-name
-                   (file-name-nondirectory
-                    (file-name-sans-extension buffer-file-name))
-                   doc-view-cache-directory))
-                 ;; Is the file readable by local processes?
-                 ;; We used to use `file-remote-p' but it's unclear what it's
-                 ;; supposed to return nil for things like local files accessed
-                 ;; via `su' or via file://...
-                 ((let ((file-name-handler-alist nil))
-                    (not (and buffer-file-name
-                              (file-readable-p buffer-file-name))))
-                  ;; FIXME: there's a risk of name conflicts here.
-                  (expand-file-name
-                   (if buffer-file-name
-                       (file-name-nondirectory buffer-file-name)
-                     (buffer-name))
-                   doc-view-cache-directory))
-                 (t buffer-file-name)))
+                (convert-standard-filename
+                 (cond
+                  (jka-compr-really-do-compress
+                   ;; FIXME: there's a risk of name conflicts here.
+                   (expand-file-name
+                    (file-name-nondirectory
+                     (file-name-sans-extension buffer-file-name))
+                    doc-view-cache-directory))
+                  ;; Is the file readable by local processes?
+                  ;; We used to use `file-remote-p' but it's unclear what it's
+                  ;; supposed to return nil for things like local files accessed
+                  ;; via `su' or via file://...
+                  ((let ((file-name-handler-alist nil))
+                     (not (and buffer-file-name
+                               (file-readable-p buffer-file-name))))
+                   ;; FIXME: there's a risk of name conflicts here.
+                   (expand-file-name
+                    (if buffer-file-name
+                        (file-name-nondirectory buffer-file-name)
+                      (buffer-name))
+                    doc-view-cache-directory))
+                  (t buffer-file-name))))
     (when (not (string= doc-view--buffer-file-name buffer-file-name))
       (write-region nil nil doc-view--buffer-file-name))
 

[-- Attachment #4: Type: text/plain, Size: 59 bytes --]

-- 
Jordan Wilson
    Sent from Gnus v5.13, GNU Emacs 26.1

  reply	other threads:[~2018-10-10 10:45 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-08 14:44 bug#32989: 26.1; Opening PDF attachments in Gnus with doc-view-mode causes error on Windows Jordan Wilson
2018-10-08 20:02 ` Eli Zaretskii
2018-10-10 10:45   ` Jordan Wilson [this message]
2018-10-28 22:57     ` Jordan Wilson
2018-11-03  8:32     ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877eiqhyfu.fsf@gmx.com \
    --to=jordan.t.wilson@gmx.com \
    --cc=32989@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).