From debbugs-submit-bounces@debbugs.gnu.org Fri May 29 04:47:21 2015 Received: (at submit) by debbugs.gnu.org; 29 May 2015 08:47:21 +0000 Received: from localhost ([127.0.0.1]:60058 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YyFwl-0003jA-Ry for submit@debbugs.gnu.org; Fri, 29 May 2015 04:47:20 -0400 Received: from eggs.gnu.org ([208.118.235.92]:37864) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YyFwk-0003iy-7K for submit@debbugs.gnu.org; Fri, 29 May 2015 04:47:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YyFwd-0004xO-D9 for submit@debbugs.gnu.org; Fri, 29 May 2015 04:47:12 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAYES_40 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:42571) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YyFwd-0004xK-AH for submit@debbugs.gnu.org; Fri, 29 May 2015 04:47:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YyFwa-0004m9-Qh for bug-gnu-emacs@gnu.org; Fri, 29 May 2015 04:47:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YyFwV-0004sS-Hh for bug-gnu-emacs@gnu.org; Fri, 29 May 2015 04:47:08 -0400 Received: from mxin.ulb.ac.be ([164.15.128.112]:40558) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YyFwV-0004ri-4Y for bug-gnu-emacs@gnu.org; Fri, 29 May 2015 04:47:03 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqYEABwnaFWkD4XH/2dsb2JhbABcg2TGUAKCEAEBAQEBAYELhCIBgRcUAwECCjQBBDshiC2gCrQfkDgehCcFhmuLeIxihkAwiB6DIoNZI2GDGTyCeAEBAQ Received: from pno-math-199.ulb.ac.be (HELO Aurora) ([164.15.133.199]) by smtp.ulb.ac.be with ESMTP; 29 May 2015 10:41:42 +0200 From: Nicolas Richard To: bug-gnu-emacs@gnu.org Subject: 25.0.50; query-replace: incorrect history when replacing the NUL character. Date: Fri, 29 May 2015 10:41:42 +0200 Message-ID: <86d21jzsft.fsf@members.fsf.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) --=-=-= Content-Type: text/plain >From emacs -Q: ;; We do a query-replace to remove NUL characters and replace them by ;; an empty string: M-% [query-replace] C-q [quoted-insert] 0 [exit-minibuffer] [exit-minibuffer] ;; now we try to do it again, by relying on the history M-% [query-replace] [previous-line-or-history-element] [exit-minibuffer] ;; At this point, emacs asks what to replace "two NUL chars" with, ;; instead of removing NULs like the previous query-replace did. In GNU Emacs 25.0.50.1 (i686-pc-linux-gnu, X toolkit, Xaw scroll bars) of 2015-05-07 on Aurora Windowing system distributor `The X.Org Foundation', version 11.0.11501000 System Description: Ubuntu 14.04.2 LTS I suggest the following changes : --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Avoid-confusion-in-query-replace-history-when-replac.patch >From 5eecb757d03a9f6986fd82fad1f2413ff3983726 Mon Sep 17 00:00:00 2001 From: Nicolas Richard Date: Fri, 29 May 2015 10:32:05 +0200 Subject: [PATCH 1/2] Avoid confusion in query-replace history when replacing NUL chars. * lisp/replace.el (query-replace--split-string): New function. (query-replace-read-from): Rely on the 'separator' property instead of searching for the NUL character. --- lisp/replace.el | 52 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/lisp/replace.el b/lisp/replace.el index 8e71615..0ab9b83 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -136,6 +136,16 @@ See `replace-regexp' and `query-replace-regexp-eval'.") (defun query-replace-descr (string) (mapconcat 'isearch-text-char-description string "")) +(defun query-replace--split-string (string) + "Split string STRING at a character with property `separator'" + (let* ((length (length string)) + (split-pos (text-property-any 0 length 'separator t string))) + (if (not split-pos) + string + (cl-assert (not (text-property-any (1+ split-pos) length 'separator t string))) + (cons (substring-no-properties string 0 split-pos) + (substring-no-properties string (1+ split-pos) length))))) + (defun query-replace-read-from (prompt regexp-flag) "Query and return the `from' argument of a query-replace operation. The return value can also be a pair (FROM . TO) indicating that the user @@ -174,32 +184,30 @@ wants to replace FROM with TO." (read-regexp prompt nil 'query-replace-from-to-history) (read-from-minibuffer prompt nil nil nil 'query-replace-from-to-history - (car (if regexp-flag regexp-search-ring search-ring)) t))))) + (car (if regexp-flag regexp-search-ring search-ring)) t)))) + (to)) (if (and (zerop (length from)) query-replace-defaults) (cons (caar query-replace-defaults) (query-replace-compile-replacement (cdar query-replace-defaults) regexp-flag)) - (let* ((to (if (and (string-match separator from) - (get-text-property (match-beginning 0) 'separator from)) - (substring-no-properties from (match-end 0)))) - (from (if to (substring-no-properties from 0 (match-beginning 0)) - (substring-no-properties from)))) - (add-to-history query-replace-from-history-variable from nil t) - ;; Warn if user types \n or \t, but don't reject the input. - (and regexp-flag - (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from) - (let ((match (match-string 3 from))) - (cond - ((string= match "\\n") - (message "Note: `\\n' here doesn't match a newline; to do that, type C-q C-j instead")) - ((string= match "\\t") - (message "Note: `\\t' here doesn't match a tab; to do that, just type TAB"))) - (sit-for 2))) - (if (not to) - from - (add-to-history query-replace-to-history-variable to nil t) - (add-to-history 'query-replace-defaults (cons from to) nil t) - (cons from (query-replace-compile-replacement to regexp-flag)))))))) + (setq from (query-replace--split-string from)) + (when (consp from) (setq to (cdr from) from (car from))) + (add-to-history query-replace-from-history-variable from nil t) + ;; Warn if user types \n or \t, but don't reject the input. + (and regexp-flag + (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from) + (let ((match (match-string 3 from))) + (cond + ((string= match "\\n") + (message "Note: `\\n' here doesn't match a newline; to do that, type C-q C-j instead")) + ((string= match "\\t") + (message "Note: `\\t' here doesn't match a tab; to do that, just type TAB"))) + (sit-for 2))) + (if (not to) + from + (add-to-history query-replace-to-history-variable to nil t) + (add-to-history 'query-replace-defaults (cons from to) nil t) + (cons from (query-replace-compile-replacement to regexp-flag))))))) (defun query-replace-compile-replacement (to regexp-flag) "Maybe convert a regexp replacement TO to Lisp. -- 1.9.1 --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0002-Add-test-for-previous-commit.patch >From 2daee12b2f1463a921a780f41ff00df670360b61 Mon Sep 17 00:00:00 2001 From: Nicolas Richard Date: Fri, 29 May 2015 10:33:35 +0200 Subject: [PATCH 2/2] Add test for previous commit * test/automated/replace-tests.el: New file. (query-replace--split-string-tests): Add test for previous commit. --- test/automated/replace-tests.el | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 test/automated/replace-tests.el diff --git a/test/automated/replace-tests.el b/test/automated/replace-tests.el new file mode 100644 index 0000000..f4e474b --- /dev/null +++ b/test/automated/replace-tests.el @@ -0,0 +1,35 @@ +;;; replace-tests.el --- tests for replace.el. + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Code: + +(require 'ert) + +(ert-deftest query-replace--split-string-tests () + (let ((sep (propertize "\0" 'separator t))) + (dolist (before '("" "b")) + (dolist (after '("" "a")) + (should (equal + (query-replace--split-string (concat before sep after)) + (cons before after))) + (should (equal + (query-replace--split-string (concat before "\0" after)) + (concat before "\0" after))))))) + +;;; replace-tests.el ends here -- 1.9.1 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 01 16:41:39 2015 Received: (at 20690) by debbugs.gnu.org; 1 Jun 2015 20:41:39 +0000 Received: from localhost ([127.0.0.1]:36426 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YzWWg-0001Dj-8T for submit@debbugs.gnu.org; Mon, 01 Jun 2015 16:41:38 -0400 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:47437 helo=homiemail-a11.g.dreamhost.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YzWWe-0001Da-6m for 20690@debbugs.gnu.org; Mon, 01 Jun 2015 16:41:37 -0400 Received: from homiemail-a11.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a11.g.dreamhost.com (Postfix) with ESMTP id 494496E07F; Mon, 1 Jun 2015 13:41:34 -0700 (PDT) Received: from localhost.linkov.net (m213-100-241-26.cust.tele2.ee [213.100.241.26]) (Authenticated sender: jurta@jurta.org) by homiemail-a11.g.dreamhost.com (Postfix) with ESMTPA id 4B2006E07E; Mon, 1 Jun 2015 13:41:33 -0700 (PDT) From: Juri Linkov To: Nicolas Richard Subject: Re: bug#20690: 25.0.50; query-replace: incorrect history when replacing the NUL character. Organization: LINKOV.NET References: <86d21jzsft.fsf@members.fsf.org> Date: Mon, 01 Jun 2015 23:39:45 +0300 In-Reply-To: <86d21jzsft.fsf@members.fsf.org> (Nicolas Richard's message of "Fri, 29 May 2015 10:41:42 +0200") Message-ID: <871thvcgdq.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20690 Cc: 20690@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) > ;; We do a query-replace to remove NUL characters and replace them by > ;; an empty string: > M-% [query-replace] > C-q [quoted-insert] > 0 [exit-minibuffer] > [exit-minibuffer] > ;; now we try to do it again, by relying on the history > M-% [query-replace] > [previous-line-or-history-element] > [exit-minibuffer] > ;; At this point, emacs asks what to replace "two NUL chars" with, > ;; instead of removing NULs like the previous query-replace did. > > I suggest the following changes : Thank you for the fix! I noticed that besides fixing the NUL character problem your patch also changes the behaviour when there are no NUL characters, i.e.: > +(defun query-replace--split-string (string) > + "Split string STRING at a character with property `separator'" > + (let* ((length (length string)) > + (split-pos (text-property-any 0 length 'separator t string))) > + (if (not split-pos) > + string ====== This used to be (substring-no-properties string) > - (let* ((to (if (and (string-match separator from) > - (get-text-property (match-beginning 0) 'separator from)) > - (substring-no-properties from (match-end 0)))) > - (from (if to (substring-no-properties from 0 (match-beginning 0)) > - (substring-no-properties from)))) ======================= Like you can see here above that stripes properties from the from string. From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 02 05:35:21 2015 Received: (at 20690-done) by debbugs.gnu.org; 2 Jun 2015 09:35:21 +0000 Received: from localhost ([127.0.0.1]:36822 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YzibQ-0000Qk-Cp for submit@debbugs.gnu.org; Tue, 02 Jun 2015 05:35:20 -0400 Received: from mxin.ulb.ac.be ([164.15.128.112]:19616) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1YzibN-0000QV-PE for 20690-done@debbugs.gnu.org; Tue, 02 Jun 2015 05:35:18 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AowLAB14bVWkD4XH/2dsb2JhbABbhEKsWgEBAQEBAQaZVQKCBAEBAQEBAYELQQODXwEBBHkQCAMhJQ8BBEkTiC3ZIwEBAQcBAQEBHoYZhSqFBgeELQEEphOPSyNhgVqBPzwxgkcBAQE Received: from pno-math-199.ulb.ac.be (HELO Aurora) ([164.15.133.199]) by smtp.ulb.ac.be with ESMTP; 02 Jun 2015 11:30:15 +0200 From: Nicolas Richard To: Juri Linkov Subject: Re: bug#20690: 25.0.50; query-replace: incorrect history when replacing the NUL character. References: <86d21jzsft.fsf@members.fsf.org> <871thvcgdq.fsf@mail.linkov.net> Date: Tue, 02 Jun 2015 11:30:13 +0200 In-Reply-To: <871thvcgdq.fsf@mail.linkov.net> (Juri Linkov's message of "Mon, 01 Jun 2015 23:39:45 +0300") Message-ID: <864mmq8nkq.fsf@members.fsf.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 20690-done Cc: 20690-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Juri Linkov writes: >> +(defun query-replace--split-string (string) >> + "Split string STRING at a character with property `separator'" >> + (let* ((length (length string)) >> + (split-pos (text-property-any 0 length 'separator t string))) >> + (if (not split-pos) >> + string > ====== > This used to be (substring-no-properties string) Indeed, thanks for spotting this. I've corrected it and mentionned this bug report. pushed as bc9d9bc7a8d56303595899cd66db67ef90d3a4cd and c7695d0adb125a3817f3df015137287e801e457a Nico. From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 22 19:02:08 2015 Received: (at 20690) by debbugs.gnu.org; 22 Jun 2015 23:02:08 +0000 Received: from localhost ([127.0.0.1]:54765 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z7Aj9-0001TK-Kr for submit@debbugs.gnu.org; Mon, 22 Jun 2015 19:02:07 -0400 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:53399 helo=homiemail-a11.g.dreamhost.com) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z7Aj7-0001TC-J7 for 20690@debbugs.gnu.org; Mon, 22 Jun 2015 19:02:06 -0400 Received: from homiemail-a11.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a11.g.dreamhost.com (Postfix) with ESMTP id C3C716E071; Mon, 22 Jun 2015 16:02:04 -0700 (PDT) Received: from localhost.linkov.net (m213-102-70-120.cust.tele2.ee [213.102.70.120]) (Authenticated sender: jurta@jurta.org) by homiemail-a11.g.dreamhost.com (Postfix) with ESMTPA id ADF826E072; Mon, 22 Jun 2015 16:02:03 -0700 (PDT) From: Juri Linkov To: Nicolas Richard Subject: Re: bug#20690: 25.0.50; query-replace: incorrect history when replacing the NUL character. Organization: LINKOV.NET References: <86d21jzsft.fsf@members.fsf.org> Date: Tue, 23 Jun 2015 01:59:54 +0300 In-Reply-To: <86d21jzsft.fsf@members.fsf.org> (Nicolas Richard's message of "Fri, 29 May 2015 10:41:42 +0200") Message-ID: <87a8vruz6d.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20690 Cc: 20690@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) > +(defun query-replace--split-string (string) > + "Split string STRING at a character with property `separator'" > + (let* ((length (length string)) > + (split-pos (text-property-any 0 length 'separator t string))) > + (if (not split-pos) > + string > + (cl-assert (not (text-property-any (1+ split-pos) length 'separa= tor t string))) > + (cons (substring-no-properties string 0 split-pos) > + (substring-no-properties string (1+ split-pos) length))))) Thanks to cl-assert it signaled an error with =E2=80=98M-% a RET RET C-g = M-% M-p C-e z RET=E2=80=99 so I fixed it in 1b1b6644c8cb27539ca99e97ef2f352f411c06d8. From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 23 01:12:05 2015 Received: (at 20690) by debbugs.gnu.org; 23 Jun 2015 05:12:05 +0000 Received: from localhost ([127.0.0.1]:54816 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z7GVA-0001jX-TI for submit@debbugs.gnu.org; Tue, 23 Jun 2015 01:12:05 -0400 Received: from mailrelay102.isp.belgacom.be ([195.238.20.129]:52403) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z7GV8-0001j1-29 for 20690@debbugs.gnu.org; Tue, 23 Jun 2015 01:12:03 -0400 X-Belgacom-Dynamic: yes X-Cloudmark-SP-Filtered: true X-Cloudmark-SP-Result: v=1.1 cv=d6O4W030xngO5QkzyDOul/vmjwC4sFqcTOV5kZr+d1k= c=1 sm=2 a=a4K5GIyuExAA:10 a=IkcTkHD0fZMA:10 a=ucMQw-l_AAAA:8 a=9YV7P6aAYoOLNlrpB-gA:9 a=QEXdDO2ut3YA:10 a=JJ91oPV_fFQA:10 a=rsiLZTr6XG0A:10 a=L42WZ21l2ekA:10 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A2A0DwDH6YhV/3mR9lFcgxCBM4MeqAgLBQGBBJh6AQMEAgKBQD0QAQEBAQEBAYEKQQWDXQEBBCMzIxAIAxoCBSECAg8BBCUkE4gzAbRzllUBAQEHAgEfgSGEeoUqhFMzB4JogUMBBJEiglujfyZjgVmBPzwxgkgBAQE Received: from 121.145-246-81.adsl-dyn.isp.belgacom.be (HELO Aurora) ([81.246.145.121]) by relay.skynet.be with ESMTP; 23 Jun 2015 07:11:54 +0200 From: Nicolas Richard To: Juri Linkov Subject: Re: bug#20690: 25.0.50; query-replace: incorrect history when replacing the NUL character. References: <86d21jzsft.fsf@members.fsf.org> <87a8vruz6d.fsf@mail.linkov.net> Date: Tue, 23 Jun 2015 07:11:54 +0200 In-Reply-To: <87a8vruz6d.fsf@mail.linkov.net> (Juri Linkov's message of "Tue, 23 Jun 2015 01:59:54 +0300") Message-ID: <86r3p3ovol.fsf@members.fsf.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20690 Cc: 20690@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) Juri Linkov writes: > Thanks to cl-assert it signaled an error with =E2=80=98M-% a RET RET C-g = M-% M-p C-e z RET=E2=80=99 > so I fixed it in 1b1b6644c8cb27539ca99e97ef2f352f411c06d8. Thank you. Nico. From unknown Sat Jun 21 03:24:32 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Tue, 21 Jul 2015 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator