Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!henry From: henry@utzoo.UUCP (Henry Spencer) Newsgroups: net.news.b Subject: Re: 2.10.1 expire Message-ID: <3244@utzoo.UUCP> Date: Sat, 8-Oct-83 20:10:15 EDT Article-I.D.: utzoo.3244 Posted: Sat Oct 8 20:10:15 1983 Date-Received: Sat, 8-Oct-83 20:10:15 EDT References: <80@ut-sally.UUCP>, <408@cbosgd.UUCP> Organization: U of Toronto Zoology Lines: 26 The expire bug Mark mentioned -- only the first link of an article in multiple newsgroups gets unlinked -- is straightforward and easily fixed. If you examine the code in expire.c/ulall(), you will find a chunk of ten or so lines inside "if (doarchive && ...) {". If you look it over carefully, you will see that it is using the variable "p" as a temporary. This is a botch because "p" has just been set to a specific value, at considerable pain, and that value is being used later in the recursive call. The problem goes away if you set up and use a new temporary char * variable -- say, "temp" -- for the code inside the if. More formally (line numbers approximate): 348c348 < char *p; --- > char *p, *temp; 382,383c382,383 < p = fn + strlen(SPOOL) + 1; < sprintf(newname, "%s/%s", OLDNEWS, p); --- > temp = fn + strlen(SPOOL) + 1; > sprintf(newname, "%s/%s", OLDNEWS, temp); We just tested this mod and it works fine. -- Henry Spencer @ U of Toronto Zoology {allegra,ihnp4,linus,decvax}!utzoo!henry