INN commit: trunk/storage (expire.c ov.c ovinterface.h)
INN Commit
rra at isc.org
Fri Jan 22 23:20:31 UTC 2010
Date: Friday, January 22, 2010 @ 15:20:31
Author: iulius
Revision: 8917
Optimize how ovgrouppat is handled. Thanks to D. Stussy
for the suggestion.
Modified:
trunk/storage/expire.c
trunk/storage/ov.c
trunk/storage/ovinterface.h
---------------+
expire.c | 44 ++------------------------------------------
ov.c | 18 ++++--------------
ovinterface.h | 3 ---
3 files changed, 6 insertions(+), 59 deletions(-)
Modified: expire.c
===================================================================
--- expire.c 2010-01-22 22:55:37 UTC (rev 8916)
+++ expire.c 2010-01-22 23:20:31 UTC (rev 8917)
@@ -4,8 +4,8 @@
**
** In order to expire on a per-newsgroup (instead of per-storage-class)
** basis, one has to use overview-driven expiration. This contains all of
-** the code to do that. It provides OVgroupbasedexpire, OVhisthasmsgid, and
-** OVgroupmatch for the use of various overview methods.
+** the code to do that. It provides OVgroupbasedexpire and OVhisthasmsgid
+** for the use of various overview methods.
*/
#include "config.h"
@@ -101,8 +101,6 @@
bool OVkeep;
bool OVearliest;
bool OVquiet;
-int OVnumpatterns;
-char ** OVpatterns;
/*
@@ -813,39 +811,6 @@
return HISlookup(h, p, NULL, NULL, NULL, NULL);
}
-/*
-** Return the matching status of the group (UWILDMAT_MATCH,
-** UWILDMAT_FAIL, or UWILDMAT_POISON).
-*/
-enum uwildmat
-OVgroupmatch(const char *group)
-{
- int i;
- enum uwildmat result = UWILDMAT_FAIL;
-
- if (OVnumpatterns == 0 || group == NULL)
- return true;
- for (i = 0; i < OVnumpatterns; i++) {
- switch (OVpatterns[i][0]) {
- case '!':
- if (uwildmat(group, &OVpatterns[i][1])) {
- result = UWILDMAT_FAIL;
- }
- break;
- case '@':
- if (uwildmat(group, &OVpatterns[i][1])) {
- result = UWILDMAT_POISON;
- }
- break;
- default:
- if (uwildmat(group, OVpatterns[i])) {
- result = UWILDMAT_MATCH;
- }
- }
- }
- return result;
-}
-
void
OVEXPcleanup(void)
{
@@ -862,11 +827,6 @@
}
EXPprocessed = EXPunlinked = EXPoverindexdrop = 0;
}
- if (innconf->ovgrouppat != NULL) {
- for (i = 0 ; i < OVnumpatterns ; i++)
- free(OVpatterns[i]);
- free(OVpatterns);
- }
for (bg = EXPbadgroups; bg; bg = bgnext) {
bgnext = bg->Next;
free(bg->Name);
Modified: ov.c
===================================================================
--- ov.c 2010-01-22 22:55:37 UTC (rev 8916)
+++ ov.c 2010-01-22 23:20:31 UTC (rev 8917)
@@ -36,7 +36,6 @@
{
int i;
bool val;
- char *p;
if (ov.open)
/* already opened */
@@ -68,17 +67,6 @@
OVclose();
return false;
}
- if (innconf->ovgrouppat != NULL) {
- for (i = 1, p = innconf->ovgrouppat; *p && (p = strchr(p+1, ',')); i++);
- OVnumpatterns = i;
- OVpatterns = xmalloc(OVnumpatterns * sizeof(char *));
- for (i = 0, p = strtok(innconf->ovgrouppat, ","); p != NULL && i <= OVnumpatterns ; i++, p = strtok(NULL, ","))
- OVpatterns[i] = xstrdup(p);
- if (i != OVnumpatterns) {
- warn("extra ',' in pattern");
- return false;
- }
- }
return val;
}
@@ -202,7 +190,7 @@
return OVADDFAILED;
*nextcheck++ = '\0';
- groupmatch = OVgroupmatch(group);
+ groupmatch = uwildmat_poison(group, innconf->ovgrouppat);
if (groupmatch == UWILDMAT_POISON) {
return OVADDGROUPNOMATCH;
} else if (groupmatch == UWILDMAT_FAIL) {
@@ -229,8 +217,10 @@
continue;
/* Skip overview generation according to ovgrouppat. */
- if (innconf->ovgrouppat != NULL && OVgroupmatch(group) != UWILDMAT_MATCH)
+ if (innconf->ovgrouppat != NULL
+ && uwildmat_poison(group, innconf->ovgrouppat) != UWILDMAT_MATCH) {
continue;
+ }
sprintf(overdata, "%ld\t", artnum);
i = strlen(overdata);
Modified: ovinterface.h
===================================================================
--- ovinterface.h 2010-01-22 22:55:37 UTC (rev 8916)
+++ ovinterface.h 2010-01-22 23:20:31 UTC (rev 8917)
@@ -37,7 +37,6 @@
bool OVgroupbasedexpire(TOKEN token, const char *group, const char *data,
int len, time_t arrived, time_t expires);
-enum uwildmat OVgroupmatch(const char *group);
bool OVhisthasmsgid(struct history *, const char *data);
void OVEXPremove(TOKEN token, bool deletedgroups, char **xref, int ngroups);
void OVEXPcleanup(void);
@@ -52,8 +51,6 @@
extern bool OVkeep;
extern bool OVearliest;
extern bool OVquiet;
-extern int OVnumpatterns;
-extern char **OVpatterns;
extern time_t OVrealnow;
extern long EXPprocessed;
extern long EXPunlinked;
More information about the inn-committers
mailing list