亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hcache.c

?? mutt-1.5.12 源代碼。linux 下郵件接受的工具。
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright (C) 2004 Thomas Glanzmann <sithglan@stud.uni-erlangen.de> * Copyright (C) 2004 Tobias Werth <sitowert@stud.uni-erlangen.de> * Copyright (C) 2004 Brian Fundakowski Feldman <green@FreeBSD.org> * *     This program is free software; you can redistribute it and/or modify *     it under the terms of the GNU General Public License as published by *     the Free Software Foundation; either version 2 of the License, or *     (at your option) any later version. * *     This program is distributed in the hope that it will be useful, *     but WITHOUT ANY WARRANTY; without even the implied warranty of *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *     GNU General Public License for more details. * *     You should have received a copy of the GNU General Public License *     along with this program; if not, write to the Free Software *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. *//* this comment bumps Id because of the attachment counting patch. */#if HAVE_CONFIG_H#include "config.h"#endif				/* HAVE_CONFIG_H */#if HAVE_QDBM#include <depot.h>#include <cabin.h>#include <villa.h>#elif HAVE_GDBM#include <gdbm.h>#elif HAVE_DB4#include <db.h>#endif#include <errno.h>#include <fcntl.h>#if HAVE_SYS_TIME_H#include <sys/time.h>#endif#include "mutt.h"#include "hcache.h"#ifdef USE_IMAP#include "message.h"#endif#include "mime.h"#include "mx.h"#include "lib.h"#include "md5.h"#if HAVE_QDBMstatic struct header_cache{  VILLA *db;  char *folder;  unsigned int crc;} HEADER_CACHE;#elif HAVE_GDBMstatic struct header_cache{  GDBM_FILE db;  char *folder;  unsigned int crc;} HEADER_CACHE;#elif HAVE_DB4static struct header_cache{  DB_ENV *env;  DB *db;  unsigned int crc;  int fd;  char lockfile[_POSIX_PATH_MAX];} HEADER_CACHE;static void mutt_hcache_dbt_init(DBT * dbt, void *data, size_t len);static void mutt_hcache_dbt_empty_init(DBT * dbt);#endiftypedef union{  struct timeval timeval;  unsigned long uid_validity;} validate;static void *lazy_malloc(size_t siz){  if (0 < siz && siz < 4096)    siz = 4096;  return safe_malloc(siz);}static voidlazy_realloc(void *ptr, size_t siz){  void **p = (void **) ptr;  if (p != NULL && 0 < siz && siz < 4096)    return;  safe_realloc(ptr, siz);}static unsigned char *dump_int(unsigned int i, unsigned char *d, int *off){  lazy_realloc(&d, *off + sizeof (int));  memcpy(d + *off, &i, sizeof (int));  (*off) += sizeof (int);  return d;}static voidrestore_int(unsigned int *i, const unsigned char *d, int *off){  memcpy(i, d + *off, sizeof (int));  (*off) += sizeof (int);}static unsigned char *dump_char(char *c, unsigned char *d, int *off){  unsigned int size;  if (c == NULL)  {    size = 0;    d = dump_int(size, d, off);    return d;  }  size = mutt_strlen(c) + 1;  d = dump_int(size, d, off);  lazy_realloc(&d, *off + size);  memcpy(d + *off, c, size);  *off += size;  return d;}static unsigned char *dump_char_size(char *c, unsigned char *d, int *off, ssize_t size){  if (c == NULL)  {    size = 0;    d = dump_int(size, d, off);    return d;  }  d = dump_int(size, d, off);  lazy_realloc(&d, *off + size);  memcpy(d + *off, c, size);  *off += size;  return d;}static voidrestore_char(char **c, const unsigned char *d, int *off){  unsigned int size;  restore_int(&size, d, off);  if (size == 0)  {    *c = NULL;    return;  }  *c = safe_malloc(size);  memcpy(*c, d + *off, size);  *off += size;}static unsigned char *dump_address(ADDRESS * a, unsigned char *d, int *off){  unsigned int counter = 0;  unsigned int start_off = *off;  d = dump_int(0xdeadbeef, d, off);  while (a)  {#ifdef EXACT_ADDRESS    d = dump_char(a->val, d, off);#endif    d = dump_char(a->personal, d, off);    d = dump_char(a->mailbox, d, off);    d = dump_int(a->group, d, off);    a = a->next;    counter++;  }  memcpy(d + start_off, &counter, sizeof (int));  return d;}static voidrestore_address(ADDRESS ** a, const unsigned char *d, int *off){  unsigned int counter;  restore_int(&counter, d, off);  while (counter)  {    *a = safe_malloc(sizeof (ADDRESS));#ifdef EXACT_ADDRESS    restore_char(&(*a)->val, d, off);#endif    restore_char(&(*a)->personal, d, off);    restore_char(&(*a)->mailbox, d, off);    restore_int((unsigned int *) &(*a)->group, d, off);    a = &(*a)->next;    counter--;  }  *a = NULL;}static unsigned char *dump_list(LIST * l, unsigned char *d, int *off){  unsigned int counter = 0;  unsigned int start_off = *off;  d = dump_int(0xdeadbeef, d, off);  while (l)  {    d = dump_char(l->data, d, off);    l = l->next;    counter++;  }  memcpy(d + start_off, &counter, sizeof (int));  return d;}static voidrestore_list(LIST ** l, const unsigned char *d, int *off){  unsigned int counter;  restore_int(&counter, d, off);  while (counter)  {    *l = safe_malloc(sizeof (LIST));    restore_char(&(*l)->data, d, off);    l = &(*l)->next;    counter--;  }  *l = NULL;}static unsigned char *dump_buffer(BUFFER * b, unsigned char *d, int *off){  if (!b)  {    d = dump_int(0, d, off);    return d;  }  else    d = dump_int(1, d, off);  d = dump_char_size(b->data, d, off, b->dsize + 1);  d = dump_int(b->dptr - b->data, d, off);  d = dump_int(b->dsize, d, off);  d = dump_int(b->destroy, d, off);  return d;}static voidrestore_buffer(BUFFER ** b, const unsigned char *d, int *off){  unsigned int used;  unsigned int offset;  restore_int(&used, d, off);  if (!used)  {    return;  }  *b = safe_malloc(sizeof (BUFFER));  restore_char(&(*b)->data, d, off);  restore_int(&offset, d, off);  (*b)->dptr = (*b)->data + offset;  restore_int((unsigned int *) &(*b)->dsize, d, off);  restore_int((unsigned int *) &(*b)->destroy, d, off);}static unsigned char *dump_parameter(PARAMETER * p, unsigned char *d, int *off){  unsigned int counter = 0;  unsigned int start_off = *off;  d = dump_int(0xdeadbeef, d, off);  while (p)  {    d = dump_char(p->attribute, d, off);    d = dump_char(p->value, d, off);    p = p->next;    counter++;  }  memcpy(d + start_off, &counter, sizeof (int));  return d;}static voidrestore_parameter(PARAMETER ** p, const unsigned char *d, int *off){  unsigned int counter;  restore_int(&counter, d, off);  while (counter)  {    *p = safe_malloc(sizeof (PARAMETER));    restore_char(&(*p)->attribute, d, off);    restore_char(&(*p)->value, d, off);    p = &(*p)->next;    counter--;  }  *p = NULL;}static unsigned char *dump_body(BODY * c, unsigned char *d, int *off){  lazy_realloc(&d, *off + sizeof (BODY));  memcpy(d + *off, c, sizeof (BODY));  *off += sizeof (BODY);  d = dump_char(c->xtype, d, off);  d = dump_char(c->subtype, d, off);  d = dump_parameter(c->parameter, d, off);  d = dump_char(c->description, d, off);  d = dump_char(c->form_name, d, off);  d = dump_char(c->filename, d, off);  d = dump_char(c->d_filename, d, off);  return d;}static voidrestore_body(BODY * c, const unsigned char *d, int *off){  memcpy(c, d + *off, sizeof (BODY));  *off += sizeof (BODY);  restore_char(&c->xtype, d, off);  restore_char(&c->subtype, d, off);  restore_parameter(&c->parameter, d, off);  restore_char(&c->description, d, off);  restore_char(&c->form_name, d, off);  restore_char(&c->filename, d, off);  restore_char(&c->d_filename, d, off);}static unsigned char *dump_envelope(ENVELOPE * e, unsigned char *d, int *off){  d = dump_address(e->return_path, d, off);  d = dump_address(e->from, d, off);  d = dump_address(e->to, d, off);  d = dump_address(e->cc, d, off);  d = dump_address(e->bcc, d, off);  d = dump_address(e->sender, d, off);  d = dump_address(e->reply_to, d, off);  d = dump_address(e->mail_followup_to, d, off);  d = dump_char(e->list_post, d, off);  d = dump_char(e->subject, d, off);  if (e->real_subj)    d = dump_int(e->real_subj - e->subject, d, off);  else    d = dump_int(-1, d, off);  d = dump_char(e->message_id, d, off);  d = dump_char(e->supersedes, d, off);  d = dump_char(e->date, d, off);  d = dump_char(e->x_label, d, off);  d = dump_buffer(e->spam, d, off);  d = dump_list(e->references, d, off);  d = dump_list(e->in_reply_to, d, off);  d = dump_list(e->userhdrs, d, off);  return d;}static voidrestore_envelope(ENVELOPE * e, const unsigned char *d, int *off){  int real_subj_off;  restore_address(&e->return_path, d, off);  restore_address(&e->from, d, off);  restore_address(&e->to, d, off);  restore_address(&e->cc, d, off);  restore_address(&e->bcc, d, off);  restore_address(&e->sender, d, off);  restore_address(&e->reply_to, d, off);  restore_address(&e->mail_followup_to, d, off);  restore_char(&e->list_post, d, off);  restore_char(&e->subject, d, off);  restore_int((unsigned int *) (&real_subj_off), d, off);  if (0 <= real_subj_off)    e->real_subj = e->subject + real_subj_off;  else    e->real_subj = NULL;  restore_char(&e->message_id, d, off);  restore_char(&e->supersedes, d, off);  restore_char(&e->date, d, off);  restore_char(&e->x_label, d, off);  restore_buffer(&e->spam, d, off);  restore_list(&e->references, d, off);  restore_list(&e->in_reply_to, d, off);  restore_list(&e->userhdrs, d, off);}static unsigned intcrc32(unsigned int crc, unsigned char const *p, size_t len){  int i;  while (len--)  {    crc ^= *p++;    for (i = 0; i < 8; i++)      crc = (crc >> 1) ^ ((crc & 1) ? 0xedb88320 : 0);  }  return crc;}static intgenerate_crc32(){  int crc = 0;  SPAM_LIST *sp = SpamList;  RX_LIST *rx = NoSpamList;  crc = crc32(crc, (unsigned char const *) "$Id: hcache.c,v 3.17 2006/05/18 18:35:10 brendan Exp $", mutt_strlen("$Id: hcache.c,v 3.17 2006/05/18 18:35:10 brendan Exp $"));#if HAVE_LANGINFO_CODESET  crc = crc32(crc, (unsigned char const *) Charset, mutt_strlen(Charset));  crc = crc32(crc, (unsigned char const *) "HAVE_LANGINFO_CODESET",	mutt_strlen("HAVE_LANGINFO_CODESET"));#endif#if EXACT_ADDRESS  crc = crc32(crc, (unsigned char const *) "EXACT_ADDRESS",	mutt_strlen("EXACT_ADDRESS"));#endif#ifdef USE_POP  crc = crc32(crc, (unsigned char const *) "USE_POP", mutt_strlen("USE_POP"));#endif#ifdef MIXMASTER  crc = crc32(crc, (unsigned char const *) "MIXMASTER",        mutt_strlen("MIXMASTER"));#endif#ifdef USE_IMAP  crc = crc32(crc, (unsigned char const *) "USE_IMAP", mutt_strlen("USE_IMAP"));  crc = crc32(crc, (unsigned char const *) ImapHeaders,        mutt_strlen(ImapHeaders));#endif  while (sp)  {    crc = crc32(crc, (unsigned char const *) sp->rx->pattern,	  mutt_strlen(sp->rx->pattern));    sp = sp->next;  }  crc = crc32(crc, (unsigned char const *) "SPAM_SEPERATOR",	mutt_strlen("SPAM_SEPERATOR"));  while (rx)  {    crc = crc32(crc, (unsigned char const *) rx->rx->pattern,	  mutt_strlen(rx->rx->pattern));    rx = rx->next;  }  return crc;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
777午夜精品视频在线播放| 国产精品每日更新在线播放网址| 精品99一区二区三区| 亚洲同性gay激情无套| 黄一区二区三区| 欧美性大战久久久久久久蜜臀| 精品对白一区国产伦| 亚洲成人资源在线| 一本久道久久综合中文字幕| 久久久久久久综合日本| 日本中文一区二区三区| 在线一区二区三区| 国产精品对白交换视频| 久久99国产精品麻豆| 欧美伦理影视网| 亚洲一级二级在线| av一区二区三区黑人| 中文在线资源观看网站视频免费不卡 | 制服丝袜中文字幕一区| 亚洲精品网站在线观看| 不卡的av中国片| 国产日本欧美一区二区| 国产美女精品在线| 欧美成人video| 久久精品国产澳门| 欧美一级理论片| 视频一区在线播放| 欧美精品亚洲一区二区在线播放| 亚洲一区二区三区四区在线观看| 91啪在线观看| 亚洲精品日日夜夜| 欧美三级电影一区| 亚洲成av人片在线观看| 欧美肥妇毛茸茸| 日韩精品三区四区| 日韩精品一区二区三区中文不卡 | 久久99精品国产.久久久久| 日韩一级免费一区| 久久精品国产澳门| 久久午夜电影网| 成人免费的视频| 亚洲嫩草精品久久| 欧美日韩精品一区视频| 男女性色大片免费观看一区二区 | 国产嫩草影院久久久久| 懂色av一区二区三区蜜臀| 国产精品三级在线观看| 一本色道久久综合亚洲精品按摩 | 亚洲国产高清不卡| 99久久国产综合色|国产精品| 亚洲男女一区二区三区| 欧美视频一区在线观看| 免费成人美女在线观看.| 久久久影视传媒| 91视频一区二区三区| 天天色天天操综合| 久久香蕉国产线看观看99| 99久久婷婷国产综合精品电影 | 日韩av不卡在线观看| 久久人人爽爽爽人久久久| 99re这里只有精品首页| 亚洲一区二区3| 久久久久久久久久久久久女国产乱 | 美女精品一区二区| 国产精品入口麻豆原神| 欧美日韩一级黄| 国产麻豆成人传媒免费观看| 久久69国产一区二区蜜臀| 久久视频一区二区| 在线免费观看不卡av| 老司机午夜精品| 亚洲美女偷拍久久| 精品理论电影在线| 欧亚洲嫩模精品一区三区| 国内精品写真在线观看 | 日本一区二区视频在线观看| 欧美日韩精品欧美日韩精品一综合| 国内成+人亚洲+欧美+综合在线| 亚洲精品日日夜夜| 国产色产综合色产在线视频| 欧美巨大另类极品videosbest| 成人免费毛片高清视频| 免费国产亚洲视频| 一区二区三区日本| 国产精品无遮挡| 精品福利一二区| 欧美精品777| 色综合激情久久| 大陆成人av片| 激情欧美一区二区三区在线观看| 亚洲国产日韩精品| 国产精品久久久久久妇女6080 | 国产福利一区二区三区在线视频| 亚洲成av人片一区二区| 亚洲欧美日韩综合aⅴ视频| 国产偷国产偷精品高清尤物| 欧美一级xxx| 欧美精品vⅰdeose4hd| 欧美视频在线一区| 91丨porny丨户外露出| 成人污视频在线观看| 国产在线乱码一区二区三区| 秋霞影院一区二区| 亚洲香肠在线观看| 亚洲一区二区在线免费观看视频 | 国产精品99久久久久久有的能看| 日韩精品乱码免费| 亚洲国产精品自拍| 亚洲福中文字幕伊人影院| 亚洲激情综合网| 一区二区三区在线播| 一区二区三区在线观看动漫| 亚洲欧美偷拍卡通变态| 亚洲乱码国产乱码精品精小说 | 久久精品一区蜜桃臀影院| 日韩精品一区二区三区四区视频| 日韩一区二区三区高清免费看看| 91.xcao| 日韩精品影音先锋| 精品国产伦一区二区三区免费| 日韩精品一区二| 久久久亚洲精品一区二区三区| 久久综合久久鬼色中文字| 久久蜜桃av一区精品变态类天堂| 欧美精品一区二区久久久| 久久久www免费人成精品| 欧美激情一区二区三区不卡| 国产精品你懂的在线欣赏| 一色桃子久久精品亚洲| 伊人色综合久久天天| 亚洲成人免费在线| 偷拍亚洲欧洲综合| 国产中文一区二区三区| 成人性色生活片| 欧美亚洲图片小说| 3d动漫精品啪啪一区二区竹菊| 欧美r级电影在线观看| 国产日韩欧美激情| 亚洲免费看黄网站| 日韩成人精品在线| 国产v综合v亚洲欧| 欧美性感一类影片在线播放| 日韩欧美专区在线| 亚洲欧洲99久久| 首页国产欧美日韩丝袜| 国产成人免费高清| 欧美日韩五月天| 国产三级精品三级| 亚洲影视在线观看| 激情国产一区二区| 色婷婷久久久综合中文字幕| 日韩一区二区在线看片| 国产精品久久久久精k8| 秋霞成人午夜伦在线观看| 国产成人av电影在线播放| 欧美体内she精视频| 国产午夜亚洲精品羞羞网站| 亚洲综合在线第一页| 国产一区二区视频在线| 欧美亚州韩日在线看免费版国语版| 欧美精品一区二区三区在线播放| 亚洲精品中文在线影院| 国产呦萝稀缺另类资源| 欧美无人高清视频在线观看| 久久精品日韩一区二区三区| 婷婷成人激情在线网| 99免费精品视频| 2017欧美狠狠色| 天天综合色天天| 日本道在线观看一区二区| 国产日产精品一区| 免费看欧美女人艹b| 91国产丝袜在线播放| 欧美经典三级视频一区二区三区| 日本va欧美va欧美va精品| 色婷婷av一区二区三区gif | 亚洲国产综合91精品麻豆| 粉嫩蜜臀av国产精品网站| 日韩精品中文字幕一区二区三区| 亚洲在线观看免费| 色天天综合色天天久久| 欧美国产成人精品| 激情成人综合网| 日韩精品一区二区三区四区 | 欧美剧情电影在线观看完整版免费励志电影 | 欧美成人福利视频| 日韩黄色在线观看| 欧美精品在线视频| 伊人一区二区三区| 91丝袜美女网| 亚洲欧洲精品天堂一级| 成人av影院在线| 国产女主播视频一区二区| 国产91精品久久久久久久网曝门| 欧美va亚洲va在线观看蝴蝶网| 热久久国产精品| 亚洲精品在线免费观看视频| 久久成人免费电影| 久久精品日韩一区二区三区| 狠狠色丁香久久婷婷综|