⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 his.c

📁 linux下的BBS
💻 C
字号:
/* *  his.c write by rexchen@ug.ee.tku.edu.tw */#include "nntp.h"#include "../dbz/dbz.h"intquery_his (fp, msgid, path)FILE *fp;char *msgid;char *path;{  HASH key;  long where;  char buf[NEWS_BSIZE] = { 0 };  MD5 (msgid, strlen (msgid), key.hash);  where = dbzfetch (key);  if (where == NOTFOUND) {    return (0);  }  fseek (fp, where, SEEK_SET);  fgets (buf, sizeof (buf), fp);  strncpy (path, buf, NEWS_BSIZE);  return (1);}intadd_his (fp, msgid, now, path)FILE *fp;char *msgid;time_t now;char *path;{  HASH key;  long where;  if (query_his (fp, msgid, path) == 0) {    MD5 (msgid, strlen (msgid), key.hash);    if (now == 0)      now = time (NULL);    fseek (fp, where, SEEK_END);    fprintf (fp, "%s\t%d\t%s\n", msgid, now, path);    if (dbzstore (key, where) < 0) {      return (0);    }    return (1);  } else {    return (0);  }}intmakedbz (hispath, entry)char *hispath;long entry;{  long size;  size = dbzsize (entry);  dbzfresh (hispath, size, 0);  dbmclose ();}intmkhistory (hispath)char *hispath;{  FILE *fp, *fr;  time_t date, now;  char buf[NEWS_BSIZE];  char msgid[MSGIDLEN];  char path[PATHLEN];  char fpath[PATHLEN];  char src[PATHLEN];  char dst[PATHLEN];  now = time (NULL);  fr = fopen (hispath, "r");  if (fr == NULL)    return (-1);  sprintf (fpath, "%s%s", hispath, ".n");  if (!dashf (fpath)) {    makedbz (fpath, HISTORY_SIZE);  }  fp = fopen (fpath, "a");  if (fp != NULL) {    dbminit (fpath);    while (fgets (buf, sizeof (buf), fr) != NULL) {      strtok (buf, "\r\n");      sscanf (buf, "%s %d %s", msgid, &date, path);      if (date + HISTOEY_EXPIRE_TIME > now) {	add_his (fp, msgid, now, path);      }    }    dbmclose ();    fclose (fp);  }  fclose (fr);  rename (fpath, hispath);  sprintf (src, "%s.dir", fpath);  sprintf (dst, "%s.dir", hispath);  rename (src, dst);  sprintf (src, "%s.hash", fpath);  sprintf (dst, "%s.hash", hispath);  rename (src, dst);  sprintf (src, "%s.index", fpath);  sprintf (dst, "%s.index", hispath);  rename (src, dst);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -