From unknown Tue Jun 24 20:51:04 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#14293 <14293@debbugs.gnu.org> To: bug#14293 <14293@debbugs.gnu.org> Subject: Status: 23.4; Unclarity in documentation: flet replaced by cl-flet of cl-letf in 24.3 and up. Reply-To: bug#14293 <14293@debbugs.gnu.org> Date: Wed, 25 Jun 2025 03:51:04 +0000 retitle 14293 23.4; Unclarity in documentation: flet replaced by cl-flet of= cl-letf in 24.3 and up. reassign 14293 emacs submitter 14293 Nikolaus Demmel severity 14293 minor thanks From debbugs-submit-bounces@debbugs.gnu.org Sat Apr 27 13:59:34 2013 Received: (at submit) by debbugs.gnu.org; 27 Apr 2013 17:59:34 +0000 Received: from localhost ([127.0.0.1]:47249 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UW9PJ-0000uw-Jg for submit@debbugs.gnu.org; Sat, 27 Apr 2013 13:59:34 -0400 Received: from eggs.gnu.org ([208.118.235.92]:48128) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UW3SD-0001zX-4h for submit@debbugs.gnu.org; Sat, 27 Apr 2013 07:38:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UW3S3-0002bs-8T for submit@debbugs.gnu.org; Sat, 27 Apr 2013 07:38:02 -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.8 required=5.0 tests=BAYES_50,RCVD_IN_DNSWL_NONE autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:54521) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UW3S3-0002bo-4u for submit@debbugs.gnu.org; Sat, 27 Apr 2013 07:37:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59453) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UW3Rz-0003yw-Ef for bug-gnu-emacs@gnu.org; Sat, 27 Apr 2013 07:37:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UW3Rv-0002ZS-Ut for bug-gnu-emacs@gnu.org; Sat, 27 Apr 2013 07:37:55 -0400 Received: from moutng.kundenserver.de ([212.227.17.9]:64052) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UW3Rv-0002YU-IK for bug-gnu-emacs@gnu.org; Sat, 27 Apr 2013 07:37:51 -0400 Received: from mbpdemmel.fritz.box (dslb-188-099-118-004.pools.arcor-ip.net [188.99.118.4]) by mrelayeu.kundenserver.de (node=mrbap2) with ESMTP (Nemesis) id 0Lg6Fn-1UopkH3Qh1-00pO8q; Sat, 27 Apr 2013 13:37:47 +0200 From: Nikolaus Demmel Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Date: Sat, 27 Apr 2013 13:37:46 +0200 Subject: 23.4; Unclarity in documentation: flet replaced by cl-flet of cl-letf in 24.3 and up. To: bug-gnu-emacs@gnu.org Message-Id: <0174328B-6C51-4143-8FD7-DE02EB82E86D@nikolaus-demmel.de> Mime-Version: 1.0 (Apple Message framework v1085) X-Mailer: Apple Mail (2.1085) X-Provags-ID: V02:K0:m+ISpopg+5Kk64/yAuQb0FUZT/oHBRt2nAR3P+aEhl9 4cXwL3ezxPEP5M/TtFJ4MPSed67JjQUnFjrsg1kZs3GlGFInjG /akRyFB5kR8pYfUlFDMBUC28WtGvCzsLozHoThP8lhVHkapt4K GDHRoocf47kN7+AHYqynXxdYta0aAXRwSi8BASEGi3g3Rn4t1w 0w6k+d0iBwpO1lj9ol/jphViS4r8xlU6VRNOKlUZNP0RwSQrXX +uBrOWZfSg98WjUQPgkLyvOOBfPz6aeIEXOqH9ixU4mLocduE7 PdYMtP9noqEWQpUqhkbj9YBkq9gOZ05OpdWeuz2gL9ARWV2tMw R9ovcNu0C0ZY834LuyDXse/r/yEd/wkXxS7x27Bh/ltaETyI3g XTJb6BhoBYZgZGvwwfTqS3B80nUKEeA39M= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sat, 27 Apr 2013 13:59:31 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) This is a documentation bug that is not about my emacs version, but about the documentation for a change in 24.3. flet has been made obsolete. This is a follow up to my question on [7], where Drew Adams suggested I file a bug. =46rom that discussion: ----- I'm referring to the documentation [1,2,3,4]. Together with the notification `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'. as reported here [5], this documentation does not really tell me what to do if I want to keep relying on the dynamic scoping of flet. A brief google search [6] leads me to believe that (cl-letf (((symbol-function 'foo) #'(lambda (...) ...))) ...) is the suggested solution, however I wanted to make sure that is the case. ----- Stefan Monnier has confirmed the suggested solution, but also hinted that using defadvice might be more appropriate. Maybe the information about how to precisely replace flet (i.e. same call if using cl-flet, different syntax if dynamic binding is desired using cl-letf, with an hint that defadvice might be better) could be included somewhere in the docs, maybe in [2]? Thanks, Niko [1] = http://www.gnu.org/software/emacs/manual/html_node/cl/Function-Bindings.ht= ml#index-cl_002dflet-24 [2] = http://www.gnu.org/software/emacs/manual/html_node/cl/Obsolete-Macros.html= #index-flet-173 [3] = http://www.gnu.org/software/emacs/manual/html_node/cl/Obsolete-Macros.html= #index-letf-175 [4] = http://www.gnu.org/software/emacs/manual/html_node/cl/Modify-Macros.html#i= ndex-cl_002dletf-19 [5] https://github.com/moesenle/rosemacs-debs/issues/2 [6] = https://groups.google.com/forum/#!msg/gnu.emacs.help/eaopyFH5hmY/emHfn-DYZ= ZIJ=20 [7] = https://groups.google.com/forum/?fromgroups=3D#!topic/gnu.emacs.help/eXjBL= qncchs This bug report will be sent to the Free Software Foundation, not to your local site managers! Please write in English if possible, because the Emacs maintainers usually do not have translators to read other languages for them. Your report will be posted to the bug-gnu-emacs@gnu.org mailing list and the gnu.emacs.bug news group, and at http://debbugs.gnu.org. Please describe exactly what actions triggered the bug and the precise symptoms of the bug. If you can, give a recipe starting from `emacs -Q': If Emacs crashed, and you have the Emacs process in the gdb debugger, please include the output from the following gdb commands: `bt full' and `xbacktrace'. For information about debugging Emacs, please read the file /Applications/Emacs.app/Contents/Resources/etc/DEBUG. In GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0, NS apple-appkit-1038.36) of 2012-05-21 on MBPdemmel.local Windowing system distributor `Apple', version 10.3.1038 configured using `configure '--with-ns' 'LDFLAGS=3D-L/opt/local/lib' = 'CPPFLAGS=3D-I/opt/local/include'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: nil value of $XMODIFIERS: nil locale-coding-system: nil default enable-multibyte-characters: t Major mode: Text Minor modes in effect: nxhtml-menu-mode: t show-paren-mode: t tooltip-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Recent input: M-x e m a c s =DF r e =20 - r e =20 b =20 =20 =20 =20 r e p o r Recent messages: majmodpri-apply-priorities running ... (done) Loading = /Users/demmeln/.emacs.d/site/nxhtml/nxhtml/nxhtml-autoload...done ... nXhtml loading 0.6 seconds elapsed ... =3D=3D=3D Loaded at nxhtml/autostart.el end: (feature 'nxhtml-menu)=3Dt Nxml/Nxhtml Autostart.el loaded in 0.7 seconds trace: loading flymake-files Loading /Users/demmeln/.emacs.d/site/nxhtml/autostart.el (source)...done For information about GNU Emacs and the GNU system, type C-h C-a. Making completion list... Load-path shadows: /Users/demmeln/.emacs.d/site/nxhtml/util/org-panel hides = ~/.emacs.d/site/org-mode/contrib/lisp/org-panel /Users/demmeln/.emacs.d/site/nxhtml/util/org-odt hides = ~/.emacs.d/site/org-mode/lisp/org-odt ~/.emacs.d/site/python/python hides = /Applications/Emacs.app/Contents/Resources/lisp/progmodes/python ~/.emacs.d/site/prolog hides = /Applications/Emacs.app/Contents/Resources/lisp/progmodes/prolog ~/.emacs.d/site/org-mode/lisp/org hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org ~/.emacs.d/site/org-mode/lisp/org-xoxo hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-xoxo ~/.emacs.d/site/org-mode/lisp/org-wl hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-wl ~/.emacs.d/site/org-mode/lisp/org-w3m hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m ~/.emacs.d/site/org-mode/lisp/org-vm hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-vm ~/.emacs.d/site/org-mode/lisp/org-timer hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-timer ~/.emacs.d/site/org-mode/lisp/org-table hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-table ~/.emacs.d/site/org-mode/lisp/org-src hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-src ~/.emacs.d/site/org-mode/lisp/org-rmail hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail ~/.emacs.d/site/org-mode/lisp/org-remember hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-remember ~/.emacs.d/site/org-mode/lisp/org-publish hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-publish ~/.emacs.d/site/org-mode/lisp/org-protocol hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol ~/.emacs.d/site/org-mode/lisp/org-plot hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-plot ~/.emacs.d/site/org-mode/lisp/org-mouse hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse ~/.emacs.d/site/org-mode/lisp/org-mobile hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile ~/.emacs.d/site/org-mode/lisp/org-mhe hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe ~/.emacs.d/site/org-mode/lisp/org-mew hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-mew ~/.emacs.d/site/org-mode/lisp/org-macs hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-macs ~/.emacs.d/site/org-mode/lisp/org-mac-message hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-mac-message ~/.emacs.d/site/org-mode/lisp/org-list hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-list ~/.emacs.d/site/org-mode/lisp/org-latex hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-latex ~/.emacs.d/site/org-mode/lisp/org-jsinfo hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-jsinfo ~/.emacs.d/site/org-mode/lisp/org-irc hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-irc ~/.emacs.d/site/org-mode/lisp/org-install hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-install ~/.emacs.d/site/org-mode/lisp/org-inlinetask hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask ~/.emacs.d/site/org-mode/lisp/org-info hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-info ~/.emacs.d/site/org-mode/lisp/org-indent hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-indent ~/.emacs.d/site/org-mode/lisp/org-id hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-id ~/.emacs.d/site/org-mode/lisp/org-icalendar hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-icalendar ~/.emacs.d/site/org-mode/lisp/org-html hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-html ~/.emacs.d/site/org-mode/lisp/org-habit hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-habit ~/.emacs.d/site/org-mode/lisp/org-gnus hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus ~/.emacs.d/site/org-mode/lisp/org-freemind hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-freemind ~/.emacs.d/site/org-mode/lisp/org-footnote hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote ~/.emacs.d/site/org-mode/lisp/org-feed hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-feed ~/.emacs.d/site/org-mode/lisp/org-faces hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-faces ~/.emacs.d/site/org-mode/lisp/org-exp hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp ~/.emacs.d/site/org-mode/lisp/org-exp-blocks hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp-blocks ~/.emacs.d/site/org-mode/lisp/org-docbook hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-docbook ~/.emacs.d/site/org-mode/lisp/org-datetree hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree ~/.emacs.d/site/org-mode/lisp/org-crypt hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt ~/.emacs.d/site/org-mode/lisp/org-compat hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-compat ~/.emacs.d/site/org-mode/lisp/org-colview hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-colview ~/.emacs.d/site/org-mode/lisp/org-clock hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-clock ~/.emacs.d/site/org-mode/lisp/org-bibtex hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex ~/.emacs.d/site/org-mode/lisp/org-bbdb hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb ~/.emacs.d/site/org-mode/lisp/org-attach hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-attach ~/.emacs.d/site/org-mode/lisp/org-ascii hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-ascii ~/.emacs.d/site/org-mode/lisp/org-archive hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-archive ~/.emacs.d/site/org-mode/lisp/org-agenda hides = /Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda ~/.emacs.d/site/python/sym-comp hides = /Applications/Emacs.app/Contents/Resources/lisp/obsolete/sym-comp Features: (shadow sort mail-extr message ecomplete rfc822 mml mml-sec password-cache mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader gnus-util netrc mm-util mail-prsvr gmm-utils wid-edit mailheader canlock hashcash mail-utils emacsbug help-mode view flymake-files flymakemsg nxhtml-autostart nxhtml-autoload majmodpri vc-bzr sha1 hex-util nxhtml-menu web-autoload nxhtml-base paredit-zoink paredit slime-autoloads cc-mode cc-fonts cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs hs-lint tex-site auto-loads ido ielm pp edmacro kmacro ob-dot ob-ditaa ob-R org-latex org-export-latex org-beamer org-exp ob-exp org-exp-blocks org-agenda org byte-opt warnings bytecomp byte-compile advice help-fns advice-preload ob-emacs-lisp ob-tangle ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys ob ob-eval org-pcomplete pcomplete org-list org-faces org-compat org-entities org-macs time-date noutline outline cal-menu calendar cal-loaddefs footnote org-install flymake python-21 python skeleton info derived regexp-opt rx sym-comp hippie-exp fill-column-indicator easy-mmode grep compile comint ring paren tooltip ediff-hook vc-hooks lisp-float-type mwheel ns-win easymenu tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button minibuffer faces cus-face files text-properties overlay md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind ns multi-tty emacs) From debbugs-submit-bounces@debbugs.gnu.org Sat May 04 15:51:15 2013 Received: (at 14293-done) by debbugs.gnu.org; 4 May 2013 19:51:15 +0000 Received: from localhost ([127.0.0.1]:58198 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UYiUF-0000f4-7s for submit@debbugs.gnu.org; Sat, 04 May 2013 15:51:15 -0400 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:49005) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UYiUD-0000ev-9j for 14293-done@debbugs.gnu.org; Sat, 04 May 2013 15:51:14 -0400 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id r44JoOp0022551; Sat, 4 May 2013 15:50:25 -0400 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 1DD6DAE1B2; Sat, 4 May 2013 15:50:24 -0400 (EDT) From: Stefan Monnier To: Nikolaus Demmel Subject: Re: bug#14293: 23.4; Unclarity in documentation: flet replaced by cl-flet of cl-letf in 24.3 and up. Message-ID: References: <0174328B-6C51-4143-8FD7-DE02EB82E86D@nikolaus-demmel.de> Date: Sat, 04 May 2013 15:50:24 -0400 In-Reply-To: <0174328B-6C51-4143-8FD7-DE02EB82E86D@nikolaus-demmel.de> (Nikolaus Demmel's message of "Sat, 27 Apr 2013 13:37:46 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV4569=0 X-NAI-Spam-Version: 2.3.0.9362 : core <4569> : streams <954035> : uri <1411555> X-Spam-Score: -6.0 (------) X-Debbugs-Envelope-To: 14293-done Cc: 14293-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.0 (------) > that using defadvice might be more appropriate. Maybe the information > about how to precisely replace flet (i.e. same call if using cl-flet, > different syntax if dynamic binding is desired using cl-letf, with an > hint that defadvice might be better) could be included somewhere in the > docs, maybe in [2]? Thanks. I installed the patch below. Stefan === modified file 'doc/misc/cl.texi' --- doc/misc/cl.texi 2013-02-20 02:07:07 +0000 +++ doc/misc/cl.texi 2013-05-04 19:46:20 +0000 @@ -4850,10 +4850,27 @@ direct C-language calls to the message routines rather than going through the Lisp @code{message} function. +For those cases where the dynamic scoping of @code{flet} is desired, +@code{cl-flet} is clearly not a substitute. The most direct replacement would +be instead to use @code{cl-letf} to temporarily rebind @code{(symbol-function +'@var{fun})}. But in most cases, a better substitute is to use an advice, such +as: + +@example +(defvar my-fun-advice-enable nil) +(add-advice '@var{fun} :around + (lambda (orig &rest args) + (if my-fun-advice-enable (do-something) + (apply orig args)))) +@end example + +so that you can then replace the @code{flet} with a simple dynamically scoped +binding of @code{my-fun-advice-enable}. + @c Bug#411. Note that many primitives (e.g., @code{+}) have special byte-compile -handling. Attempts to redefine such functions using @code{flet} will -fail if byte-compiled. +handling. Attempts to redefine such functions using @code{flet}, @code{letf}, +or an advice will fail when byte-compiled. @c Or cl-flet. @c In such cases, use @code{labels} instead. @end defmac From unknown Tue Jun 24 20:51:04 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 02 Jun 2013 11:24:03 +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