From unknown Wed Jun 18 00:24:36 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#62959 <62959@debbugs.gnu.org> To: bug#62959 <62959@debbugs.gnu.org> Subject: Status: [PATCH] Recognize defstruct slot names in various eieio functions Reply-To: bug#62959 <62959@debbugs.gnu.org> Date: Wed, 18 Jun 2025 07:24:36 +0000 retitle 62959 [PATCH] Recognize defstruct slot names in various eieio funct= ions reassign 62959 emacs submitter 62959 Thuna severity 62959 normal tag 62959 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 19 18:16:25 2023 Received: (at submit) by debbugs.gnu.org; 19 Apr 2023 22:16:25 +0000 Received: from localhost ([127.0.0.1]:36051 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ppG5y-0007Pb-Gi for submit@debbugs.gnu.org; Wed, 19 Apr 2023 18:16:25 -0400 Received: from lists.gnu.org ([209.51.188.17]:36780) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ppG5r-0007PO-E5 for submit@debbugs.gnu.org; Wed, 19 Apr 2023 18:16:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ppG5r-0002Eg-02 for bug-gnu-emacs@gnu.org; Wed, 19 Apr 2023 18:16:03 -0400 Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ppG5p-00067c-6B for bug-gnu-emacs@gnu.org; Wed, 19 Apr 2023 18:16:02 -0400 Received: by mail-ej1-x635.google.com with SMTP id a5so1955270ejb.6 for ; Wed, 19 Apr 2023 15:16:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681942559; x=1684534559; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=ljvDATw9R2xJH0n6mVlpx+PLgeHqOdC2RAIVyqI6y0g=; b=N+U9D4WW5Aa87pp1Hwfmp2QonauwKyq/XP4aVcro44OYOUIz8RGaXSg9fseOxk3hlg qK0NAICwZSJ2AIMk3dcdThgBbbOQtA/k/2V8T4ZKnWxdcMkyrradHDMrZn7mOk89VyV9 S844ZlxqtkneA8Gg48FJbM+WnirqVvrkzTumsoJhRJEFGaD8kmnfrlyVinJAESKTANm7 8rTWKYUcTIkvqec2E4WN8mMeHSEE1c1oUjB1ex3pjqCNAk5w/kwhXCn0MFvxlspMBjHv ZYyQ1335H+uxLAslneZvY4LFE3J/DP/4dH3gvOUXJsHuyx/fKjdbMEj0xrwBnTplLHlG /38A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681942559; x=1684534559; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ljvDATw9R2xJH0n6mVlpx+PLgeHqOdC2RAIVyqI6y0g=; b=GQtgsiU+WpoBDcZrnkAbIbB2FVyk45r+z6yKbnkKfnmUJi52jqMk+6C6FL5e11bBa5 cKKDkZcB8S5jg2kTnVSWlVUdqTvqAEiOZNcRFlQKiT1kRyhFPNRwW6vPJEqG+mXmqAk6 +rqo+bNGCB5/C8kCYQmtqpiOoonlS981W0UNdjNwDXQB5qnxqGruLgOLLnb/Y/TWOgqm DOQ6vrSOVCs73KHCYYfxy2Fb6+D/LVYRK6ztjbnmeIFg6skXQFQGNjHgUYH5fHotkPGF aKx/mUDu09iQsR51RXoG8kZQAvIYrDbC0UH6MFrCha6gcsQ+j7KGbSbi9OgEDuNocTh9 Z/vQ== X-Gm-Message-State: AAQBX9f3yg/G2LWGHvvwvYgyBaubsom57GxwYGzKN69bE93uDQmpl6vQ 17feKNFsmhtdqYjEkzL/YXuIJvsAStg= X-Google-Smtp-Source: AKy350YY4AWwdf875DxolGfSppF7+hTgZFspahhF4TRdR+kF68KxQaXh69WjvnCyFhVPlvz+cQYu/A== X-Received: by 2002:a17:906:4e0b:b0:94e:bd38:49bb with SMTP id z11-20020a1709064e0b00b0094ebd3849bbmr18416938eju.23.1681942558774; Wed, 19 Apr 2023 15:15:58 -0700 (PDT) Received: from thuna ([78.177.102.2]) by smtp.gmail.com with ESMTPSA id z4-20020a170906434400b0094f2dca017fsm6097ejm.50.2023.04.19.15.15.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Apr 2023 15:15:58 -0700 (PDT) From: Thuna To: bug-gnu-emacs@gnu.org Subject: [PATCH] Recognize defstruct slot names in various eieio functions Date: Thu, 20 Apr 2023 00:15:50 +0200 Message-ID: <87o7njv7qh.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Received-SPF: pass client-ip=2a00:1450:4864:20::635; envelope-from=thuna.cing@gmail.com; helo=mail-ej1-x635.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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 (/) --=-=-= Content-Type: text/plain The function `eieio--known-slot-name-p' is used by some eieio functions (specifically eieio-oref, eieio-oref-default, and eieio-oset-default) to check whether a slot name is known or not, and if not signals an "Unknown slot" warning. Structs do not make their slots known to `eieio--known-slot-name-p', so the warning is signaled even for valid slot names. Since eieio aims for compatibility with defstruct, this should probably be considered a bug. The function `eieio--known-slot-name-p' checks the variable `eieio--known-slot-names' but also has a fallback for the name's `slot-name' property. In the patch I opted to use the latter. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Recognize-defstruct-slot-names-in-various-eieio-func.patch Content-Description: The patch >From 86ed1ed7d024a0d40286d5fe4697258dc98a1b9e Mon Sep 17 00:00:00 2001 From: Thuna Date: Wed, 19 Apr 2023 23:43:22 +0200 Subject: [PATCH] Recognize defstruct slot names in various eieio functions * lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Set each slot's name's `slot-name' property so that `eieio--known-slot-name-p' can recognize them. --- lisp/emacs-lisp/cl-preloaded.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el index 9445093f143..5235be52996 100644 --- a/lisp/emacs-lisp/cl-preloaded.el +++ b/lisp/emacs-lisp/cl-preloaded.el @@ -176,6 +176,7 @@ cl-struct-define (i 0) (offset (if type 0 1))) (dolist (slot slots) + (put (car slot) 'slot-name t) (let* ((props (cl--plist-to-alist (cddr slot))) (typep (assq :type props)) (type (if (null typep) t -- 2.39.2 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Apr 20 02:50:42 2023 Received: (at 62959) by debbugs.gnu.org; 20 Apr 2023 06:50:42 +0000 Received: from localhost ([127.0.0.1]:36351 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ppO7u-0007KN-Fp for submit@debbugs.gnu.org; Thu, 20 Apr 2023 02:50:42 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45970) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ppO7s-0007KA-Le for 62959@debbugs.gnu.org; Thu, 20 Apr 2023 02:50:41 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ppO7l-0006kx-SA; Thu, 20 Apr 2023 02:50:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=sb65ja3qV+EUuA3z7Txa7xjFDygpwFbfotGAHYhJKTU=; b=LBs6ZVc6gi4M 2eAJQIJT/5aXYn92cQqsrqJBfJ3F5bYQvX6GYmaNnc4QmnAfnQg6xTKmRr2tcxKweneIXBOjMCc/o di0KtW/wEC6d/8I6eQl3hRPVaQqC1e1c8MHT/4abJ/q2X/k2imJStYAG2jE1SxRv7xVRQC+lSF7vP CxXWKv5nIWx7qyn+8PVZkgK7LI7SF2wxQgrkUORdzjtDNz3RPNCuINe8f7K47ZUZZZjL/TqeUmNU1 c+sJyQSwxWPlj27X4K/+ENP6LPyXkxFdnZEevsRCHHPF5CCYlSFFK1dJrO5cT+Ee1PO3MV/tCJh59 sESBpimaZWVK6MxbjNOe1w==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ppO7k-0007FV-Bf; Thu, 20 Apr 2023 02:50:32 -0400 Date: Thu, 20 Apr 2023 09:50:46 +0300 Message-Id: <83cz3z6o8p.fsf@gnu.org> From: Eli Zaretskii To: Thuna , Stefan Monnier In-Reply-To: <87o7njv7qh.fsf@gmail.com> (message from Thuna on Thu, 20 Apr 2023 00:15:50 +0200) Subject: Re: bug#62959: [PATCH] Recognize defstruct slot names in various eieio functions References: <87o7njv7qh.fsf@gmail.com> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 62959 Cc: 62959@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -3.3 (---) > From: Thuna > Date: Thu, 20 Apr 2023 00:15:50 +0200 > > The function `eieio--known-slot-name-p' is used by some eieio functions > (specifically eieio-oref, eieio-oref-default, and eieio-oset-default) to > check whether a slot name is known or not, and if not signals an > "Unknown slot" warning. > > Structs do not make their slots known to `eieio--known-slot-name-p', so > the warning is signaled even for valid slot names. Since eieio aims for > compatibility with defstruct, this should probably be considered a bug. > > The function `eieio--known-slot-name-p' checks the variable > `eieio--known-slot-names' but also has a fallback for the name's > `slot-name' property. In the patch I opted to use the latter. > > > >From 86ed1ed7d024a0d40286d5fe4697258dc98a1b9e Mon Sep 17 00:00:00 2001 > From: Thuna > Date: Wed, 19 Apr 2023 23:43:22 +0200 > Subject: [PATCH] Recognize defstruct slot names in various eieio functions > > * lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Set each slot's > name's `slot-name' property so that `eieio--known-slot-name-p' can > recognize them. > --- > lisp/emacs-lisp/cl-preloaded.el | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el > index 9445093f143..5235be52996 100644 > --- a/lisp/emacs-lisp/cl-preloaded.el > +++ b/lisp/emacs-lisp/cl-preloaded.el > @@ -176,6 +176,7 @@ cl-struct-define > (i 0) > (offset (if type 0 1))) > (dolist (slot slots) > + (put (car slot) 'slot-name t) > (let* ((props (cl--plist-to-alist (cddr slot))) > (typep (assq :type props)) > (type (if (null typep) t > -- > 2.39.2 > Stefan, any comments? From debbugs-submit-bounces@debbugs.gnu.org Tue May 02 16:48:19 2023 Received: (at 62959) by debbugs.gnu.org; 2 May 2023 20:48:19 +0000 Received: from localhost ([127.0.0.1]:45137 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ptwv1-0002vt-IE for submit@debbugs.gnu.org; Tue, 02 May 2023 16:48:19 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:51145) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ptwuw-0002ug-9T for 62959@debbugs.gnu.org; Tue, 02 May 2023 16:48:14 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id BCA461000BF; Tue, 2 May 2023 16:48:04 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 475A7100048; Tue, 2 May 2023 16:48:03 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1683060483; bh=3JeHNwvbl/t2IW7Awc7FnvqnnAsqEEf6x44S+dM4W8Y=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=kGywSPoenvXX79BuYqSU3QIOSrIWvE3qNIzbjcelIeTPu8BfQuRaT2C3zZSvnGlB0 0uai6rMgk5ck5b+Y6zbRJpG1t6F7Xcao3lNkOPqIyV7PdwPs6lFIGre+tj4pnJW+/T SL4SBYvdoalrJ1PEKDBWDWyv/wj5+vq73LUG46uDY947tjmVmOflomf+ohxGGRe2ls YUYN8UJR7tXQEMW0sFTD9YP/CxmHEWPq5RG1zew9vBRBScnrwEL1OQIwQuDzGmDk/D Qe4H7HL2dnnR92R4C07QlZh1D37FsXfgvIrE0biZTjzu5LVWXpibMJ75QtYjBKhr5a +mYqG3dLaT+bQ== Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1E3761202AF; Tue, 2 May 2023 16:48:03 -0400 (EDT) From: Stefan Monnier To: Eli Zaretskii Subject: Re: bug#62959: [PATCH] Recognize defstruct slot names in various eieio functions In-Reply-To: <83cz3z6o8p.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 20 Apr 2023 09:50:46 +0300") Message-ID: References: <87o7njv7qh.fsf@gmail.com> <83cz3z6o8p.fsf@gnu.org> Date: Tue, 02 May 2023 16:48:02 -0400 User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL 0.048 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain T_SCC_BODY_TEXT_LINE -0.01 - X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 62959 Cc: 62959@debbugs.gnu.org, Thuna X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -3.3 (---) >> diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el >> index 9445093f143..5235be52996 100644 >> --- a/lisp/emacs-lisp/cl-preloaded.el >> +++ b/lisp/emacs-lisp/cl-preloaded.el >> @@ -176,6 +176,7 @@ cl-struct-define >> (i 0) >> (offset (if type 0 1))) >> (dolist (slot slots) >> + (put (car slot) 'slot-name t) >> (let* ((props (cl--plist-to-alist (cddr slot))) >> (typep (assq :type props)) >> (type (if (null typep) t >> -- >> 2.39.2 >> > > Stefan, any comments? LGTM, thanks, Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed May 03 07:46:44 2023 Received: (at 62959-done) by debbugs.gnu.org; 3 May 2023 11:46:44 +0000 Received: from localhost ([127.0.0.1]:45762 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1puAwW-0000bS-78 for submit@debbugs.gnu.org; Wed, 03 May 2023 07:46:44 -0400 Received: from eggs.gnu.org ([209.51.188.92]:42468) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1puAwS-0000bE-MD for 62959-done@debbugs.gnu.org; Wed, 03 May 2023 07:46:43 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1puAwM-0006U6-9s; Wed, 03 May 2023 07:46:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ODUjnVHnvrDf9RrYzJfRhayIO2WeRcgDMU86uPWwFT0=; b=Z+dDOlQQuBrL G/EASJ5EbJLrhws+etlZAcJETHlF1S+qtLj5Hr36KIVkzHt+WL1qq7DQPazcxpRKQnjn4gIJSLu7J b79q5dplXrsN+QQvv3Pa7q0fwA9hosITcqRbJkNpJu8CwtWd5GAXqxk8qd1RfF1SdEkwBhSGoMYLJ GnQjnCWayc2b3swPiK5/SYq/9I47mojY6UFOftSC9zs/UWabzlzKmiZSE6kewm1NFwxqS81/x0Q80 LrAeASP5ZmzOOpLJC6OZh3J/IL2uG2gJoo+SM8qMG3wEvxQ34307Gm97/NueZDsufLw4VBt46vCNX efQOM+P6rL+y+8ZE+75WIA==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1puAwK-00056M-B7; Wed, 03 May 2023 07:46:33 -0400 Date: Wed, 03 May 2023 14:47:10 +0300 Message-Id: <837ctpmybl.fsf@gnu.org> From: Eli Zaretskii To: Stefan Monnier In-Reply-To: (message from Stefan Monnier on Tue, 02 May 2023 16:48:02 -0400) Subject: Re: bug#62959: [PATCH] Recognize defstruct slot names in various eieio functions References: <87o7njv7qh.fsf@gmail.com> <83cz3z6o8p.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 62959-done Cc: 62959-done@debbugs.gnu.org, thuna.cing@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -3.3 (---) > From: Stefan Monnier > Cc: Thuna , 62959@debbugs.gnu.org > Date: Tue, 02 May 2023 16:48:02 -0400 > > >> diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el > >> index 9445093f143..5235be52996 100644 > >> --- a/lisp/emacs-lisp/cl-preloaded.el > >> +++ b/lisp/emacs-lisp/cl-preloaded.el > >> @@ -176,6 +176,7 @@ cl-struct-define > >> (i 0) > >> (offset (if type 0 1))) > >> (dolist (slot slots) > >> + (put (car slot) 'slot-name t) > >> (let* ((props (cl--plist-to-alist (cddr slot))) > >> (typep (assq :type props)) > >> (type (if (null typep) t > >> -- > >> 2.39.2 > >> > > > > Stefan, any comments? > > LGTM, thanks, Thanks, installed on the emacs-29 branch, and closing. From unknown Wed Jun 18 00:24:36 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 01 Jun 2023 11:24:07 +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