Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!genrad!decvax!harpo!eagle!alice!rabbit!pyuxmm!ggr From: ggr@pyuxmm.UUCP Newsgroups: net.news.b Subject: Expire with DBM bug Message-ID: <480@pyuxmm.UUCP> Date: Thu, 16-Jun-83 17:49:37 EDT Article-I.D.: pyuxmm.480 Posted: Thu Jun 16 17:49:37 1983 Date-Received: Fri, 17-Jun-83 00:49:13 EDT Lines: 78 If you use DBM, you may notice your dbm files growing steadily larger. Articles that are cancelled never get removed from the database. These changes to expire (2.10) fix this by re-creating the dbm files as the history file is being re-built instead of trying to delete entries that are being removed. They also fix another bug -- xerror() was declared with too few parameters, so messages came out without the arguments. === Guy Riddle == BTL Piscataway === 73d72 < datum key; 150c149 < dbminit(ARTFILE); --- > dbminit(NARTFILE); /* your dbminit should create non-existent files */ 228a228,229 > *p1 = 0; > remember(afline); 260a262 > remember(h.ident); 308,312d309 < # ifdef DBM < key.dptr = h.ident; < key.dsize = strlen(key.dptr) +1; < delete(key); < # endif 315a313 > remember(h.ident); 338a337,354 > #ifdef DBM > strcat(ARTFILE, ".pag"); > strcat(OARTFILE, ".pag"); > strcat(NARTFILE, ".pag"); > unlink(OARTFILE); > link(ARTFILE, OARTFILE); > unlink(ARTFILE); > link(NARTFILE, ARTFILE); > unlink(NARTFILE); > strcpy(rindex(ARTFILE, '.'), ".dir"); > strcpy(rindex(OARTFILE, '.'), ".dir"); > strcpy(rindex(NARTFILE, '.'), ".dir"); > unlink(OARTFILE); > link(ARTFILE, OARTFILE); > unlink(ARTFILE); > link(NARTFILE, ARTFILE); > unlink(NARTFILE); > #endif 402c418 < xerror(message) --- > xerror(message, a1, a2, a3) 405c421,423 < printf("expire: %s.\n", message); --- > printf("expire: "); > printf(message, a1, a2, a3); > printf("\n"); 434a453,471 > } > > remember(article) > char *article; > { > static long number; > datum lhs, rhs; > > #ifdef DBM > lhs.dptr = article; > lhs.dsize = strlen(article)+1; > > number++; > > rhs.dptr = (char *) &number; > rhs.dsize = sizeof(number); > > store(lhs, rhs); > #endif