diff options
author | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-01-08 15:54:00 +0800 |
---|---|---|
committer | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-01-08 15:54:00 +0800 |
commit | 271bcfc4e7d98aafb59b6e67399244f635ee74e8 (patch) | |
tree | 6c8c84e636581109db1de66d4036441c36b607c8 /innbbsd/his.c | |
parent | 9b4d34a17c6061171456ae8e4b63dcd270f53091 (diff) | |
download | pttbbs-271bcfc4e7d98aafb59b6e67399244f635ee74e8.tar pttbbs-271bcfc4e7d98aafb59b6e67399244f635ee74e8.tar.gz pttbbs-271bcfc4e7d98aafb59b6e67399244f635ee74e8.tar.bz2 pttbbs-271bcfc4e7d98aafb59b6e67399244f635ee74e8.tar.lz pttbbs-271bcfc4e7d98aafb59b6e67399244f635ee74e8.tar.xz pttbbs-271bcfc4e7d98aafb59b6e67399244f635ee74e8.tar.zst pttbbs-271bcfc4e7d98aafb59b6e67399244f635ee74e8.zip |
indent -i4
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1473 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'innbbsd/his.c')
-rw-r--r-- | innbbsd/his.c | 407 |
1 files changed, 203 insertions, 204 deletions
diff --git a/innbbsd/his.c b/innbbsd/his.c index 7fe48dc3..ac9a3285 100644 --- a/innbbsd/his.c +++ b/innbbsd/his.c @@ -1,81 +1,86 @@ -/* $Revision: 1.1 $ -** -** History file routines. -*/ +/* + * $Revision: 1.1 $ * + * + * History file routines. + */ #include "innbbsconf.h" #include "bbslib.h" #include "his.h" #define STATIC static -/*STATIC char HIShistpath[] = _PATH_HISTORY;*/ -STATIC FILE *HISwritefp; -STATIC int HISreadfd; -STATIC int HISdirty; -STATIC int HISincore = XINDEX_DBZINCORE; -STATIC char *LogName = "xindexchan"; +/* STATIC char HIShistpath[] = _PATH_HISTORY; */ +STATIC FILE *HISwritefp; +STATIC int HISreadfd; +STATIC int HISdirty; +STATIC int HISincore = XINDEX_DBZINCORE; +STATIC char *LogName = "xindexchan"; #ifndef EXPIREDAYS -# define EXPIREDAYS 4 +#define EXPIREDAYS 4 #endif #ifndef DEFAULT_HIST_SIZE -# define DEFAULT_HIST_SIZE 100000 +#define DEFAULT_HIST_SIZE 100000 #endif hisincore(flag) -int flag; + int flag; { - HISincore = flag; + HISincore = flag; } makedbz(histpath, entry) -char *histpath; -long entry; + char *histpath; + long entry; { - long size; + long size; size = dbzsize(entry); - dbzfresh(histpath,size,'\t',0, 1); + dbzfresh(histpath, size, '\t', 0, 1); dbmclose(); } -void HISsetup(); -void HISclose(); +void HISsetup(); +void HISclose(); void mkhistory(srchist) -char *srchist; + char *srchist; { - FILE *hismaint ; - time_t lasthist, now; - char maintbuff[256]; - char *ptr; - hismaint= fopen(srchist, "r"); + FILE *hismaint; + time_t lasthist, now; + char maintbuff[256]; + char *ptr; + hismaint = fopen(srchist, "r"); if (hismaint == NULL) { - return; - } - { - char newhistpath[1024]; - char newhistdirpath[1024]; - char newhistpagpath[1024]; - sprintf(newhistpath,"%s.n",srchist); - sprintf(newhistdirpath,"%s.n.dir",srchist); - sprintf(newhistpagpath,"%s.n.pag",srchist); - if (!isfile(newhistdirpath) || !isfile(newhistpagpath)) { - makedbz(newhistpath, DEFAULT_HIST_SIZE); - } - myHISsetup(newhistpath); - while ( fgets(maintbuff, sizeof(maintbuff), hismaint) != NULL) { - datum key; - ptr = (char*) strchr(maintbuff,'\t'); - if (ptr != NULL) { *ptr = '\0'; ptr++;} + return; + } { + char newhistpath[1024]; + char newhistdirpath[1024]; + char newhistpagpath[1024]; + sprintf(newhistpath, "%s.n", srchist); + sprintf(newhistdirpath, "%s.n.dir", srchist); + sprintf(newhistpagpath, "%s.n.pag", srchist); + if (!isfile(newhistdirpath) || !isfile(newhistpagpath)) { + makedbz(newhistpath, DEFAULT_HIST_SIZE); + } + myHISsetup(newhistpath); + while (fgets(maintbuff, sizeof(maintbuff), hismaint) != NULL) { + datum key; + ptr = (char *)strchr(maintbuff, '\t'); + if (ptr != NULL) { + *ptr = '\0'; + ptr++; + } key.dptr = maintbuff; key.dsize = strlen(maintbuff); - myHISwrite(&key, ptr); - } - (void) HISclose(); - /*rename(newhistpath, srchist); - rename(newhistdirpath, fileglue("%s.dir", srchist)); - rename(newhistpagpath, fileglue("%s.pag", srchist));*/ + myHISwrite(&key, ptr); + } + (void)HISclose(); + /* + * rename(newhistpath, srchist); rename(newhistdirpath, + * fileglue("%s.dir", srchist)); rename(newhistpagpath, + * fileglue("%s.pag", srchist)); + */ } fclose(hismaint); } @@ -83,21 +88,21 @@ char *srchist; time_t gethisinfo() { - FILE *hismaint ; - time_t lasthist, now; - char maintbuff[4096]; - char *ptr; - hismaint= fopen(HISTORY, "r"); + FILE *hismaint; + time_t lasthist, now; + char maintbuff[4096]; + char *ptr; + hismaint = fopen(HISTORY, "r"); if (hismaint == NULL) { - return 0; + return 0; } - fgets(maintbuff,sizeof(maintbuff), hismaint); + fgets(maintbuff, sizeof(maintbuff), hismaint); fclose(hismaint); - ptr = (char*)strchr(maintbuff,'\t'); - if (ptr != NULL) { - ptr++; - lasthist = atol(ptr); - return lasthist; + ptr = (char *)strchr(maintbuff, '\t'); + if (ptr != NULL) { + ptr++; + lasthist = atol(ptr); + return lasthist; } return 0; } @@ -105,74 +110,76 @@ gethisinfo() void HISmaint() { - FILE *hismaint ; - time_t lasthist, now; - char maintbuff[4096]; - char *ptr; + FILE *hismaint; + time_t lasthist, now; + char maintbuff[4096]; + char *ptr; if (!isfile(HISTORY)) { - makedbz(HISTORY, DEFAULT_HIST_SIZE); + makedbz(HISTORY, DEFAULT_HIST_SIZE); } - hismaint= fopen(HISTORY, "r"); + hismaint = fopen(HISTORY, "r"); if (hismaint == NULL) { - return; + return; } - fgets(maintbuff,sizeof(maintbuff), hismaint); - ptr = (char*)strchr(maintbuff,'\t'); - if (ptr != NULL) { - ptr++; - lasthist = atol(ptr); - time(&now); - if ( lasthist + 86400 * Expiredays * 2 < now ) { - char newhistpath[1024]; - char newhistdirpath[1024]; - char newhistpagpath[1024]; - (void) HISclose(); - sprintf(newhistpath,"%s.n",HISTORY); - sprintf(newhistdirpath,"%s.n.dir",HISTORY); - sprintf(newhistpagpath,"%s.n.pag",HISTORY); - if (!isfile(newhistdirpath)) { - makedbz(newhistpath, DEFAULT_HIST_SIZE); - } - myHISsetup(newhistpath); - while ( fgets(maintbuff, sizeof(maintbuff), hismaint) != NULL) { - datum key; - ptr = (char*) strchr(maintbuff,'\t'); - if (ptr != NULL) { - *ptr = '\0'; ptr++; - lasthist = atol(ptr); - } else { - continue ; + fgets(maintbuff, sizeof(maintbuff), hismaint); + ptr = (char *)strchr(maintbuff, '\t'); + if (ptr != NULL) { + ptr++; + lasthist = atol(ptr); + time(&now); + if (lasthist + 86400 * Expiredays * 2 < now) { + char newhistpath[1024]; + char newhistdirpath[1024]; + char newhistpagpath[1024]; + (void)HISclose(); + sprintf(newhistpath, "%s.n", HISTORY); + sprintf(newhistdirpath, "%s.n.dir", HISTORY); + sprintf(newhistpagpath, "%s.n.pag", HISTORY); + if (!isfile(newhistdirpath)) { + makedbz(newhistpath, DEFAULT_HIST_SIZE); } - if ( lasthist + 99600 * Expiredays < now ) continue; - key.dptr = maintbuff; - key.dsize = strlen(maintbuff); - myHISwrite(&key, ptr); - } - (void) HISclose(); - rename(HISTORY, (char*)fileglue("%s.o",HISTORY)); - rename(newhistpath, HISTORY); - rename(newhistdirpath, (char*)fileglue("%s.dir", HISTORY)); - rename(newhistpagpath, (char*)fileglue("%s.pag", HISTORY)); - (void) HISsetup(); - } + myHISsetup(newhistpath); + while (fgets(maintbuff, sizeof(maintbuff), hismaint) != NULL) { + datum key; + ptr = (char *)strchr(maintbuff, '\t'); + if (ptr != NULL) { + *ptr = '\0'; + ptr++; + lasthist = atol(ptr); + } else { + continue; + } + if (lasthist + 99600 * Expiredays < now) + continue; + key.dptr = maintbuff; + key.dsize = strlen(maintbuff); + myHISwrite(&key, ptr); + } + (void)HISclose(); + rename(HISTORY, (char *)fileglue("%s.o", HISTORY)); + rename(newhistpath, HISTORY); + rename(newhistdirpath, (char *)fileglue("%s.dir", HISTORY)); + rename(newhistpagpath, (char *)fileglue("%s.pag", HISTORY)); + (void)HISsetup(); + } } fclose(hismaint); } /* -** Set up the history files. -*/ -void + * * Set up the history files. + */ +void HISsetup() { - myHISsetup(HISTORY); + myHISsetup(HISTORY); } int myHISsetup(histpath) -char *histpath; + char *histpath; { if (HISwritefp == NULL) { /* Open the history file for appending formatted I/O. */ @@ -190,7 +197,7 @@ char *histpath; CloseOnExec(HISreadfd, TRUE); /* Open the DBZ file. */ - /*(void)dbzincore(HISincore);*/ + /* (void)dbzincore(HISincore); */ (void)dbzincore(HISincore); (void)dbzwritethrough(1); if (dbminit(histpath) < 0) { @@ -202,8 +209,8 @@ char *histpath; /* -** Synchronize the in-core history file (flush it). -*/ + * * Synchronize the in-core history file (flush it). + */ void HISsync() { @@ -218,14 +225,16 @@ HISsync() /* -** Close the history files. -*/ + * * Close the history files. + */ void HISclose() { if (HISwritefp != NULL) { - /* Since dbmclose calls dbzsync we could replace this line with - * "HISdirty = 0;". Oh well, it keeps the abstraction clean. */ + /* + * Since dbmclose calls dbzsync we could replace this line with + * "HISdirty = 0;". Oh well, it keeps the abstraction clean. + */ HISsync(); if (dbmclose() < 0) syslog(LOG_ERR, "%s cant dbmclose %m", LogName); @@ -241,29 +250,27 @@ HISclose() #ifdef HISset /* -** File in the DBZ datum for a Message-ID, making sure not to copy any -** illegal characters. -*/ + * * File in the DBZ datum for a Message-ID, making sure not to copy any * + * illegal characters. + */ STATIC void HISsetkey(p, keyp) - register char *p; - datum *keyp; + register char *p; + datum *keyp; { - static BUFFER MessageID; - register char *dest; - register int i; + static BUFFER MessageID; + register char *dest; + register int i; /* Get space to hold the ID. */ i = strlen(p); if (MessageID.Data == NULL) { MessageID.Data = NEW(char, i + 1); MessageID.Size = i; - } - else if (MessageID.Size < i) { + } else if (MessageID.Size < i) { RENEW(MessageID.Data, char, i + 1); MessageID.Size = i; } - for (keyp->dptr = dest = MessageID.Data; *p; p++) if (*p == HIS_FIELDSEP || *p == '\n') *dest++ = HIS_BADCHAR; @@ -276,79 +283,77 @@ HISsetkey(p, keyp) #endif /* -** Get the list of files under which a Message-ID is stored. -*/ -char * -HISfilesfor(key,output) - datum *key; - datum *output; + * * Get the list of files under which a Message-ID is stored. + */ +char * +HISfilesfor(key, output) + datum *key; + datum *output; { - char *dest; - datum val; - long offset; - register char *p; - register int i; - int Used; + char *dest; + datum val; + long offset; + register char *p; + register int i; + int Used; /* Get the seek value into the history file. */ val = dbzfetch(*key); - if (val.dptr == NULL || val.dsize != sizeof offset){ - /*printf("fail here val.dptr %d\n",val.dptr);*/ + if (val.dptr == NULL || val.dsize != sizeof offset) { + /* printf("fail here val.dptr %d\n",val.dptr); */ return NULL; } - /* Get space. */ if (output->dptr == NULL) { - printf("fail here output->dptr null\n"); - return NULL; + printf("fail here output->dptr null\n"); + return NULL; } - /* Copy the value to an aligned spot. */ - for (p = val.dptr, dest = (char *)&offset, i = sizeof offset; --i >= 0; ) + for (p = val.dptr, dest = (char *)&offset, i = sizeof offset; --i >= 0;) *dest++ = *p++; if (lseek(HISreadfd, offset, SEEK_SET) == -1) { - printf("fail here lseek %d\n",offset); + printf("fail here lseek %d\n", offset); return NULL; } - /* Read the text until \n or EOF. */ - for (output->dsize = 0,Used=0; ; ) { - i = read(HISreadfd, - &output->dptr[output->dsize], LEN - 1); + for (output->dsize = 0, Used = 0;;) { + i = read(HISreadfd, + &output->dptr[output->dsize], LEN - 1); if (i <= 0) { - printf("fail here i %d\n",i); + printf("fail here i %d\n", i); return NULL; - } + } Used += i; output->dptr[Used] = '\0'; - if ((p = (char*)strchr(output->dptr, '\n')) != NULL) { + if ((p = (char *)strchr(output->dptr, '\n')) != NULL) { *p = '\0'; break; } } /* Move past the first two fields -- Message-ID and date info. */ - if ((p = (char*)strchr(output->dptr, HIS_FIELDSEP)) == NULL) { + if ((p = (char *)strchr(output->dptr, HIS_FIELDSEP)) == NULL) { printf("fail here no HIS_FILE\n"); return NULL; } - return p+1; - /*if ((p = (char*)strchr(p + 1, HIS_FIELDSEP)) == NULL) - return NULL;*/ + return p + 1; + /* + * if ((p = (char*)strchr(p + 1, HIS_FIELDSEP)) == NULL) return NULL; + */ /* Translate newsgroup separators to slashes, return the fieldstart. */ } /* -** Have we already seen an article? -*/ + * * Have we already seen an article? + */ #ifdef HISh BOOL HIShavearticle(MessageID) - char *MessageID; + char *MessageID; { - datum key; - datum val; + datum key; + datum val; HISsetkey(MessageID, &key); val = dbzfetch(key); @@ -358,21 +363,20 @@ HIShavearticle(MessageID) /* -** Turn a history filename entry from slashes to dots. It's a pity -** we have to do this. -*/ + * * Turn a history filename entry from slashes to dots. It's a pity * we + * have to do this. + */ STATIC void HISslashify(p) - register char *p; + register char *p; { - register char *last; + register char *last; for (last = NULL; *p; p++) { if (*p == '/') { *p = '.'; last = p; - } - else if (*p == ' ' && last != NULL) + } else if (*p == ' ' && last != NULL) *last = '/'; } if (last) @@ -381,27 +385,26 @@ HISslashify(p) IOError(error) -char *error; + char *error; { - fprintf(stderr,"%s\n",error); + fprintf(stderr, "%s\n", error); } -/*BOOL*/ +/* BOOL */ myHISwrite(key, remain) - datum *key; - char *remain; + datum *key; + char *remain; { - static char NOPATHS[] = ""; - long offset; - datum val; - int i; + static char NOPATHS[] = ""; + long offset; + datum val; + int i; val = dbzfetch(*key); - if (val.dptr != NULL){ + if (val.dptr != NULL) { return FALSE; } - - flock(fileno(HISwritefp),LOCK_EX); + flock(fileno(HISwritefp), LOCK_EX); offset = ftell(HISwritefp); i = fprintf(HISwritefp, "%s%c%s", key->dptr, HIS_FIELDSEP, remain); @@ -409,42 +412,40 @@ myHISwrite(key, remain) /* The history line is now an orphan... */ IOError("history"); syslog(LOG_ERR, "%s cant write history %m", LogName); - flock(fileno(HISwritefp),LOCK_UN); + flock(fileno(HISwritefp), LOCK_UN); return FALSE; } - /* Set up the database values and write them. */ val.dptr = (char *)&offset; val.dsize = sizeof offset; if (dbzstore(*key, val) < 0) { IOError("my history database"); syslog(LOG_ERR, "%s cant dbzstore %m", LogName); - flock(fileno(HISwritefp),LOCK_UN); + flock(fileno(HISwritefp), LOCK_UN); return FALSE; } - if (++HISdirty >= ICD_SYNC_COUNT) HISsync(); - flock(fileno(HISwritefp),LOCK_UN); + flock(fileno(HISwritefp), LOCK_UN); return TRUE; } /* -** Write a history entry. -*/ + * * Write a history entry. + */ BOOL HISwrite(key, date, paths) - datum *key; - char *paths; - long date; + datum *key; + char *paths; + long date; { - static char NOPATHS[] = ""; - long offset; - datum val; - int i; + static char NOPATHS[] = ""; + long offset; + datum val; + int i; - flock(fileno(HISwritefp),LOCK_EX); + flock(fileno(HISwritefp), LOCK_EX); offset = ftell(HISwritefp); i = fprintf(HISwritefp, "%s%c%ld%c%s\n", key->dptr, HIS_FIELDSEP, (long)date, HIS_FIELDSEP, @@ -453,22 +454,20 @@ HISwrite(key, date, paths) /* The history line is now an orphan... */ IOError("history"); syslog(LOG_ERR, "%s cant write history %m", LogName); - flock(fileno(HISwritefp),LOCK_UN); + flock(fileno(HISwritefp), LOCK_UN); return FALSE; } - /* Set up the database values and write them. */ val.dptr = (char *)&offset; val.dsize = sizeof offset; if (dbzstore(*key, val) < 0) { IOError("history database"); syslog(LOG_ERR, "%s cant dbzstore %m", LogName); - flock(fileno(HISwritefp),LOCK_UN); + flock(fileno(HISwritefp), LOCK_UN); return FALSE; } - if (++HISdirty >= ICD_SYNC_COUNT) HISsync(); - flock(fileno(HISwritefp),LOCK_UN); + flock(fileno(HISwritefp), LOCK_UN); return TRUE; } |