GNU bug report logs -
#71500
28.2; Can't create/open .gpg file name contains non-ascii encoding in windows
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Sat, 29 Jun 2024 15:55:38 +0300
with message-id <86plrzj4c5.fsf <at> gnu.org>
and subject line Re: bug#71500: 28.2; Can't create/open .gpg file name contains non-ascii encoding in windows
has caused the debbugs.gnu.org bug report #71500,
regarding 28.2; Can't create/open .gpg file name contains non-ascii encoding in windows
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
71500: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71500
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
When I save .gpg file contains non-ASCII(eg: e:/あ.gpg).
I got message below
(It happens anytime when user name contains non-ASCII
(it must to change epg-gpg-home-directory to ASCII only path))
----
Error while encrypting with "e:/msys2/usr/bin/gpg.exe":
gpg: can't create 'c:/Users/(my name with CP932 encoded by
UTF-8)/AppData/Local/Temp/epg-output9UGAFQ': No such file or directory
gpg: symmetric encryption of '[stdin]' failed: No such file or directory
----
When I open e:/あ.gpg, I got
----
Error while decrypting with "e:/msys2/usr/bin/gpg.exe":
gpg: can't open 'e:/邵コ繝サgpg': No such file or directory
gpg: decrypt_message failed: No such file or directory
----
It seems UTF-8 encode by CP932 binary sequence.
share\emacs\28.2\lisp\epg.el
673: :coding 'raw-text
to
673: :coding
'(raw-text . cp932)
(CP932 is japanese charactor code of windows)
seemsly worked in my environment.
It might be good from cp932 to system process encoding for multilanguage?
(Sorry, I don't know emacs well)
In GNU Emacs 28.2 (build 2, x86_64-w64-mingw32)
of 2022-09-14 built on AVALON
Windowing system distributor 'Microsoft Corp.', version 10.0.22631
System Description: Microsoft Windows 10 Pro (v10.0.2009.22631.3672)
Configured using:
'configure --with-modules --without-dbus --with-native-compilation
--without-compress-install CFLAGS=-O2'
Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND THREADS TIFF TOOLKIT_SCROLL_BARS
XPM ZLIB
(NATIVE_COMP present but libgccjit not available)
Important settings:
value of $LANG: JPN
locale-coding-system: cp932
Major mode: Fundamental
Minor modes in effect:
tooltip-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
buffer-read-only: t
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
Load-path shadows:
None found.
Features:
(mailalias mailclient browse-url url url-proxy url-privacy url-expand
url-methods url-history url-cookie url-domsuf url-util url-parse
url-vars mailcap qp pp shadow sort mail-extr emacsbug message rmc puny
dired dired-loaddefs rfc822 mml mml-sec epa derived epg cl-extra
help-mode rfc6068 epg-config gnus-util rmail rmail-loaddefs auth-source
cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map
text-property-search time-date subr-x seq byte-opt gv bytecomp
byte-compile cconv mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils japan-util iso-transl
tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table
term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice
button loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads w32notify w32 lcms2 multi-tty
make-network-process native-compile emacs)
Memory information:
((conses 16 94210 14660)
(symbols 48 8115 2)
(strings 32 24243 3223)
(string-bytes 1 785123)
(vectors 16 22517)
(vector-slots 8 1119837 217090)
(floats 8 31 74)
(intervals 56 1138 23)
(buffers 992 15))
[Message part 3 (message/rfc822, inline)]
> Date: Sat, 29 Jun 2024 21:39:38 +0900
> From: Kazuhiro Ito <kzhr <at> d1.dion.ne.jp>
> Cc: 71500 <at> debbugs.gnu.org,
> billy.hotwind <at> gmail.com
>
> > > As Tatsuya wrote, epg--start function calls gpg2 program with setting
> > > :coding property to raw-text, thus each argument should be encoded in
> > > proper coding system by a caller. The problem would occur on any OS
> > > whose file name coding system was not utf-8.
> > >
> > > For example, in case of epg-decrypt-file, following change is required
> > > if we need to set :coding property to raw-text for ENCODING.
> > >
> > > diff --git a/lisp/epg.el b/lisp/epg.el
> > > index 7bec91f616d..59870761565 100644
> > > --- a/lisp/epg.el
> > > +++ b/lisp/epg.el
> > > @@ -1468,7 +1468,10 @@ epg-decrypt-file
> > > (progn
> > > (setf (epg-context-output-file context)
> > > (or plain (make-temp-file "epg-output")))
> > > - (epg-start-decrypt context (epg-make-data-from-file cipher))
> > > + (epg-start-decrypt context
> > > + (epg-make-data-from-file
> > > + (encode-coding-string
> > > + cipher file-name-coding-system)))
> > > (epg-wait-for-completion context)
> > > (epg--check-error-for-decrypt context)
> > > (unless plain
> >
> > Thanks, but this doesn't look right to me. The problem is likely in
> > the fact that epg--start sets the encoding/decoding for the epg
> > process to raw-text in a way that is too broad: it affects not only
> > how we encode and decode text sent to and received from GnuPG, but
> > also how its command-line arguments are encoded. And that's not what
> > we want.
> >
> > So I think the right fix is in epg--start: instead of setting :coding
> > as part of the make-process call, it should call
> > set-process-coding-system _after_ the make-process call, so that
> > raw-text will affect only the text we send and receive from gpg.
> >
> > Can you try such a change and see if it fixes the problem?
>
> I tested attached patch and confirmed the issue was resolved.
Thanks, installed on the emacs-30 release branch, and closing the bug.
> I'm not sure that :coding setting for decoding in make-process can
> be removed. I mean, I don't know whether Emacs can receive output
> from process between make-process and set-process-coding-system.
Emacs is a single-threaded program, so until epg--start returns, no
output can be received and decoded by Emacs from the gpg sub-process.
So this is safe.
This bug report was last modified 325 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.