Re: bug report: Emacs notmuch-mode fails attachments with spaces
authorDavid Edmondson <dme@dme.org>
Tue, 10 Feb 2015 17:38:41 +0000 (17:38 +0000)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:48:02 +0000 (14:48 -0700)
75/061654d782faadd5b56725598d1551470ceb15 [new file with mode: 0644]

diff --git a/75/061654d782faadd5b56725598d1551470ceb15 b/75/061654d782faadd5b56725598d1551470ceb15
new file mode 100644 (file)
index 0000000..9cf87af
--- /dev/null
@@ -0,0 +1,182 @@
+Return-Path: <dme@dme.org>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id D5990431E64\r
+       for <notmuch@notmuchmail.org>; Tue, 10 Feb 2015 09:38:49 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 1.739\r
+X-Spam-Level: *\r
+X-Spam-Status: No, score=1.739 tagged_above=-999 required=5\r
+       tests=[DNS_FROM_AHBL_RHSBL=2.438, RCVD_IN_DNSWL_LOW=-0.7,\r
+       UNPARSEABLE_RELAY=0.001] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id mNoq5yYplWuG for <notmuch@notmuchmail.org>;\r
+       Tue, 10 Feb 2015 09:38:47 -0800 (PST)\r
+Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com\r
+       [209.85.212.173]) (using TLSv1 with cipher RC4-SHA (128/128 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id BD27B431FC7\r
+       for <notmuch@notmuchmail.org>; Tue, 10 Feb 2015 09:38:46 -0800 (PST)\r
+Received: by mail-wi0-f173.google.com with SMTP id bs8so14155671wib.0\r
+       for <notmuch@notmuchmail.org>; Tue, 10 Feb 2015 09:38:45 -0800 (PST)\r
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\r
+       d=1e100.net; s=20130820;\r
+       h=x-gm-message-state:to:subject:in-reply-to:references:user-agent\r
+       :from:date:message-id:mime-version:content-type\r
+       :content-transfer-encoding;\r
+       bh=x7uUJZQCje48JIXm+SDpdTYdJwEwLxcwNcJ5YIvUBcU=;\r
+       b=Kd43emnZ9evyDGF8jmJvgJxWbNj9+pKVs+SkP2VA/BvQ/he38Awuf/PyO+Qulj5wrk\r
+       z2MzO87DeahEc9v9VSnIbPvgcA1VwtHdb5zPiftGndoMzMmzdgxNjKHVZP8RISBXVFOn\r
+       TYm/y9pGume8oqYjEo0S2o43G2y/nBSkCM3+k9NeSvd01O2Dya6QaVY/xFr8+noERePC\r
+       T3jGxTg3h7yDZlfxh7eJ1iy8wzEHCPFwtaryKEeaX50F03nAPXs3o/I2LJdGddRZcbmr\r
+       Y2R5XFTMiddb/4vHfPox69ql7JzMao6X4TrBfyFwIjJ6F5J2W3NT43Ag74d4tayQXHIL\r
+       j7uA==\r
+X-Gm-Message-State:\r
+ ALoCoQmhcpGHBS1IcZkiAteABSPgfqLdyyP1VnS1+OwzkNPw3Q4eOo6M4wg4EsbrqF+jg5NuE2uW\r
+X-Received: by 10.195.13.168 with SMTP id ez8mr54050000wjd.30.1423589924495;\r
+       Tue, 10 Feb 2015 09:38:44 -0800 (PST)\r
+Received: from disaster-area.hh.sledj.net\r
+       ([2a01:348:1a2:1:ea39:35ff:fe2c:a227])\r
+       by mx.google.com with ESMTPSA id q5sm19789277wix.0.2015.02.10.09.38.42\r
+       (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\r
+       Tue, 10 Feb 2015 09:38:42 -0800 (PST)\r
+Received: from localhost (30000@localhost [local]);\r
+       by localhost (OpenSMTPD) with ESMTPA id 48873dfc;\r
+       Tue, 10 Feb 2015 17:38:41 +0000 (UTC)\r
+To: Nils Dagsson Moskopp <nils@dieweltistgarnichtso.net>,\r
+       Tomi Ollila <tomi.ollila@iki.fi>, notmuch@notmuchmail.org\r
+Subject: Re: bug report: Emacs notmuch-mode fails attachments with spaces\r
+In-Reply-To: <8761b9pu11.fsf@dieweltistgarnichtso.net>\r
+References: <87twyurc78.fsf@dieweltistgarnichtso.net>\r
+       <m24mqu455x.fsf@guru.guru-group.fi>\r
+       <8761b9pu11.fsf@dieweltistgarnichtso.net>\r
+User-Agent: none\r
+From: David Edmondson <dme@dme.org>\r
+Date: Tue, 10 Feb 2015 17:38:41 +0000\r
+Message-ID: <cunh9ut650e.fsf@gargravarr.hh.sledj.net>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=utf-8\r
+Content-Transfer-Encoding: quoted-printable\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Tue, 10 Feb 2015 17:38:50 -0000\r
+\r
+On Tue, Feb 10 2015, Nils Dagsson Moskopp wrote:\r
+> Tomi Ollila <tomi.ollila@iki.fi> writes:\r
+>\r
+>> On Mon, Feb 09 2015, Nils Dagsson Moskopp <nils@dieweltistgarnichtso.net=\r
+> wrote:\r
+>>\r
+>>> Dear notmuch developers,\r
+>>>\r
+>>>\r
+>>> I use notmuch-mode for GNU Emacs for managing my email.\r
+>>>\r
+>>> I think I have found a bug in notmuch-mode: If I do =E2=80=9C.-v=E2=80=\r
+=9D on the line =E2=80=9C[\r
+>>> 2015 _ Richtlinien.pdf: application/pdf ]=E2=80=9D, then notmuch will o=\r
+pen three\r
+>>> windows of zathura (the PDF viewer I use).\r
+>>>\r
+>>> It seems to me that someone here either forgot quoting or decided to\r
+>>> split filenames on spaces. I suggest that =E2=80=9C2015 _ Richtlinien.p=\r
+df:\r
+>>> application/pdf=E2=80=9D should be quoted in notmuch-show-view-part.\r
+>>>\r
+>>> Note that saving attachment (=E2=80=9C.-s=E2=80=9D, notmuch-show-save-p=\r
+art) generally\r
+>>> works even if the attachment file names have spaces. In case it matters,\r
+>>> I normally use the rc(1) shell in Debian <http://tobold.org/article/rc>.\r
+>>\r
+>> This code handles the saving and displaying in question (quick look hop i\r
+>> am right :)\r
+>>\r
+>>    2282 (defun notmuch-show-save-part ()\r
+>>    2283   "Save the MIME part containing point to a file."\r
+>>    2284   (interactive)\r
+>>    2285   (notmuch-show-apply-to-current-part-handle #'mm-save-part))\r
+>>    2286=20\r
+>>    2287 (defun notmuch-show-view-part ()\r
+>>    2288   "View the MIME part containing point in an external viewer."\r
+>>    2289   (interactive)\r
+>>    2290   ;; Set mm-inlined-types to nil to force an external viewer\r
+>>    2291   (let ((mm-inlined-types nil))\r
+>>    2292     (notmuch-show-apply-to-current-part-handle #'mm-display-part=\r
+)))\r
+>>\r
+>> SO, there is 2 options:\r
+>>\r
+>> 1) mm executes save part correctly but not display part\r
+>\r
+> It seems I cannot investigate this with my knowledge, as =E2=80=9CM-x\r
+> find-function RET mm-display-part=E2=80=9D gives =E2=80=9CCan't find libr=\r
+ary\r
+> /usr/share/emacs/23.4/lisp/gnus/mm-decode.el=E2=80=9D. Any ideas?\r
+>\r
+>> 2) there is (shell) wrapper program executing zathura which cannot handle\r
+>>    arguments with spaces (there is plenty of examples of this!)\r
+>>\r
+>>\r
+>> You could try to check how th external processes are executed by executi=\r
+ng:\r
+>>\r
+>> strace -f -e trace=3Dprocess emacs -f notmuch\r
+>>\r
+>> (emacs on X is preferable in this case ;)\r
+>\r
+> Thank you for that suggestion. It seems that there does happen both some\r
+> (wrong) escaping and splitting at spaces. I can see the following trace:\r
+>\r
+> --- snib ---\r
+> execve("/usr/bin/zathura", ["/usr/bin/zathura", "/tmp/emm.23178ut2/2015\\=\r
+", "_\\", "Richtlinien.pdf"] [/* 51 vars */]) =3D 0\r
+> --- snab ---\r
+>\r
+> Somewhat unusually, it is preceeded by an invocation of the shell:\r
+>\r
+> --- sneb ---\r
+> execve("/usr/bin/rc", ["/usr/bin/rc", "-c", "/usr/bin/zathura /tmp/emm.23=\r
+178u"...], [/* 51 vars */] <unfinished ...>\r
+\r
+It would be useful to see the rest of this string ^^. Can you persuade\r
+strace to show more please?\r
+\r
+> --- snob ---\r
+>\r
+> It seems to me that all of the following are true in this case:\r
+>\r
+> 1. Emacs executes the user's default shell to start zathura.\r
+>\r
+> 2. For this, Emacs escapes the filename.\r
+>\r
+> 3. Emacs applies the wrong escaping to the filename. Note that single\r
+>    quotes are interoperable between shells, while backslashes are not.\r
+>\r
+> 4. The rc(1) shell splits on spaces, as it knows no backslash escaping.\r
+>\r
+> 5. The shell executes zathura with three arguments, all bogus filenames.\r
+>\r
+> I cannot pinpoint where all this is happening, but I would suggest to\r
+> just execve() zathura with a single unescaped filename as its argument.\r
+>\r
+> Greetings,\r
+> --=20\r
+> Nils Dagsson Moskopp // erlehmann\r
+> <http://dieweltistgarnichtso.net>\r
+> _______________________________________________\r
+> notmuch mailing list\r
+> notmuch@notmuchmail.org\r
+> http://notmuchmail.org/mailman/listinfo/notmuch\r