From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/8911 Path: main.gmane.org!not-for-mail From: David Moore Newsgroups: gmane.emacs.gnus.general Subject: Re: Humor value: user error Date: 22 Nov 1996 12:36:52 -0800 Sender: dmoore@sdnp5.ucsd.edu Message-ID: References: NNTP-Posting-Host: coloc-standby.netfonds.no X-Trace: main.gmane.org 1035149017 15292 80.91.224.250 (20 Oct 2002 21:23:37 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Sun, 20 Oct 2002 21:23:37 +0000 (UTC) Return-Path: Original-Received: (qmail 26505 invoked from smtpd); 22 Nov 1996 20:57:25 -0000 Original-Received: from ifi.uio.no (0@129.240.64.2) by deanna.miranova.com with SMTP; 22 Nov 1996 20:57:24 -0000 Original-Received: from UCSD.EDU (mailbox2.ucsd.edu [132.239.1.54]) by ifi.uio.no with ESMTP (8.6.11/ifi2.4) id for ; Fri, 22 Nov 1996 21:38:30 +0100 Original-Received: from sdnp5.ucsd.edu (sdnp5.ucsd.edu [132.239.79.10]) by UCSD.EDU (8.8.3/8.6.9) with SMTP id MAA24694 for ; Fri, 22 Nov 1996 12:38:08 -0800 (PST) Original-Received: by sdnp5.ucsd.edu (SMI-8.6/SMI-SVR4) id MAA08914; Fri, 22 Nov 1996 12:36:53 -0800 Original-To: "(ding) Gnus Mailing List" In-Reply-To: Steven L Baur's message of 22 Nov 1996 10:50:27 -0800 Original-Lines: 133 X-Mailer: Red Gnus v0.68/XEmacs 19.14 Xref: main.gmane.org gmane.emacs.gnus.general:8911 X-Report-Spam: http://spam.gmane.org/gmane.emacs.gnus.general:8911 Steven L Baur writes: > 1. A current workaround is to use long filenames for scorefiles. > > 2. This is a Gnus bug, and not an XEmacs bug (or an Emacs bug) since > the problem occurs in the function `gnus-score-score-files-1' and > it chokes and dies just as readily in Emacs 19.34 when there's a > circular directory structure. > > A fix would be to keep a cache of expanded directory names, and > not search the same directory twice after expansion of symbolic links. Patch below for a couple of these situations in rgnus-0.68. Then again you might just want to avoid making cycles in your Gnus directory trees with symlinks. ;-) *** ChangeLog.orig Thu Nov 21 18:10:48 1996 --- ChangeLog Fri Nov 22 12:30:51 1996 *************** *** 1,3 **** --- 1,25 ---- + Fri Nov 22 12:17:14 1996 David Moore + + * nnml.el (nnml-generate-nov-databases-1): Don't infloop. + + * gnus-score.el (gnus-score-score-files-1): Don't infloop, be + slightly faster. + Thu Nov 21 05:33:24 1996 Lars Magne Ingebrigtsen * nnoo.el (nnoo-change-server): Protect against void vars. *** gnus-score.el.orig Fri Nov 22 11:57:49 1996 --- gnus-score.el Fri Nov 22 12:16:44 1996 *************** *** 2361,2378 **** (defun gnus-score-score-files-1 (dir) "Return all possible score files under DIR." ! (let ((files (directory-files (expand-file-name dir) t nil t)) (regexp (gnus-score-file-regexp)) (case-fold-search nil) ! out file) (while (setq file (pop files)) (cond ;; Ignore "." and "..". ((member (file-name-nondirectory file) '("." "..")) nil) ! ;; Recurse down directories. ! ((file-directory-p file) ! (setq out (nconc (gnus-score-score-files-1 file) out))) ;; Add files to the list of score files. ((string-match regexp file) (push file out)))) --- 2361,2380 ---- (defun gnus-score-score-files-1 (dir) "Return all possible score files under DIR." ! (let ((files (list (expand-file-name dir))) (regexp (gnus-score-file-regexp)) (case-fold-search nil) ! seen out file) (while (setq file (pop files)) (cond ;; Ignore "." and "..". ((member (file-name-nondirectory file) '("." "..")) nil) ! ;; Add subtrees of directory to also be searched. ! ((and (file-directory-p file) ! (not (member file seen))) ! (push file seen) ! (setq files (nconc (directory-files file t nil t) files))) ;; Add files to the list of score files. ((string-match regexp file) (push file out)))) *** nnml.el.orig Fri Nov 22 12:24:55 1996 --- nnml.el Fri Nov 22 12:29:12 1996 *************** *** 706,731 **** ;; Save the active file. (nnmail-save-active nnml-group-alist nnml-active-file)) ! (defun nnml-generate-nov-databases-1 (dir) (setq dir (file-name-as-directory dir)) ! ;; We descend recursively ! (let ((dirs (directory-files dir t nil t)) ! dir) ! (while dirs ! (setq dir (pop dirs)) ! (when (and (not (member (file-name-nondirectory dir) '("." ".."))) ! (file-directory-p dir)) ! (nnml-generate-nov-databases-1 dir)))) ! ;; Do this directory. ! (let ((files (sort ! (mapcar ! (lambda (name) (string-to-int name)) ! (directory-files dir nil "^[0-9]+$" t)) ! '<))) ! (when files ! (funcall nnml-generate-active-function dir) ! ;; Generate the nov file. ! (nnml-generate-nov-file dir files)))) (defvar files) (defun nnml-generate-active-info (dir) --- 706,733 ---- ;; Save the active file. (nnmail-save-active nnml-group-alist nnml-active-file)) ! (defun nnml-generate-nov-databases-1 (dir &optional seen) (setq dir (file-name-as-directory dir)) ! ;; Only scan this sub-tree if we haven't been here yet. ! (unless (member dir seen) ! (push dir seen) ! ;; We descend recursively ! (let ((dirs (directory-files dir t nil t)) ! dir) ! (while (setq dir (pop dirs)) ! (when (and (not (member (file-name-nondirectory dir) '("." ".."))) ! (file-directory-p dir)) ! (nnml-generate-nov-databases-1 dir seen)))) ! ;; Do this directory. ! (let ((files (sort ! (mapcar ! (lambda (name) (string-to-int name)) ! (directory-files dir nil "^[0-9]+$" t)) ! '<))) ! (when files ! (funcall nnml-generate-active-function dir) ! ;; Generate the nov file. ! (nnml-generate-nov-file dir files))))) (defvar files) (defun nnml-generate-active-info (dir)