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

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

?? rfc822.c

?? SIP 1.5.0源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
  PARAMETER **param;  if (body) switch (body->type) {  case TYPEMULTIPART:		/* multi-part */    for (param = &body->parameter;	 *param && strcmp ((*param)->attribute,"BOUNDARY");	 param = &(*param)->next);    if (!*param) {		/* cookie not set up yet? */      char tmp[MAILTMPLEN];	/* make cookie not in BASE64 or QUOTEPRINT*/      sprintf (tmp,"%ld-%ld-%ld=:%ld",(long) gethostid (),random (),time (0),	       (long) getpid ());      (*param) = mail_newbody_parameter ();      (*param)->attribute = cpystr ("BOUNDARY");      (*param)->value = cpystr (tmp);    }    part = body->nested.part;	/* encode body parts */    do rfc822_encode_body_7bit (env,&part->body);    while (part = part->next);	/* until done */    break;  case TYPEMESSAGE:		/* encapsulated message */    switch (body->encoding) {    case ENC7BIT:      break;    case ENC8BIT:      mm_log ("8-bit included message in 7-bit message body",WARN);      break;    case ENCBINARY:      mm_log ("Binary included message in 7-bit message body",WARN);      break;    default:      fatal ("Invalid rfc822_encode_body_7bit message encoding");    }    break;			/* can't change encoding */  default:			/* all else has some encoding */    switch (body->encoding) {    case ENC8BIT:		/* encode 8BIT into QUOTED-PRINTABLE */				/* remember old 8-bit contents */      f = (void *) body->contents.text.data;      body->contents.text.data =	rfc822_8bit (body->contents.text.data,		     body->contents.text.size,&body->contents.text.size);      body->encoding = ENCQUOTEDPRINTABLE;      fs_give (&f);		/* flush old binary contents */      break;    case ENCBINARY:		/* encode binary into BASE64 */				/* remember old binary contents */      f = (void *) body->contents.text.data;      body->contents.text.data =	rfc822_binary ((void *) body->contents.text.data,		       body->contents.text.size,&body->contents.text.size);      body->encoding = ENCBASE64;      fs_give (&f);		/* flush old binary contents */    default:			/* otherwise OK */      break;    }    break;  }}/* Encode a body for 8BIT transmittal * Accepts: envelope *	    body */void rfc822_encode_body_8bit (ENVELOPE *env,BODY *body){  void *f;  PART *part;  PARAMETER **param;  if (body) switch (body->type) {  case TYPEMULTIPART:		/* multi-part */    for (param = &body->parameter;	 *param && strcmp ((*param)->attribute,"BOUNDARY");	 param = &(*param)->next);    if (!*param) {		/* cookie not set up yet? */      char tmp[MAILTMPLEN];	/* make cookie not in BASE64 or QUOTEPRINT*/      sprintf (tmp,"%ld-%ld-%ld=:%ld",(long) gethostid (),random (),time (0),	       (long) getpid ());      (*param) = mail_newbody_parameter ();      (*param)->attribute = cpystr ("BOUNDARY");      (*param)->value = cpystr (tmp);    }    part = body->nested.part;	/* encode body parts */    do rfc822_encode_body_8bit (env,&part->body);    while (part = part->next);	/* until done */    break;  case TYPEMESSAGE:		/* encapsulated message */    switch (body->encoding) {    case ENC7BIT:    case ENC8BIT:      break;    case ENCBINARY:      mm_log ("Binary included message in 8-bit message body",WARN);      break;    default:      fatal ("Invalid rfc822_encode_body_7bit message encoding");    }    break;			/* can't change encoding */  default:			/* other type, encode binary into BASE64 */    if (body->encoding == ENCBINARY) {				/* remember old binary contents */      f = (void *) body->contents.text.data;      body->contents.text.data =	rfc822_binary ((void *) body->contents.text.data,		       body->contents.text.size,&body->contents.text.size);      body->encoding = ENCBASE64;      fs_give (&f);		/* flush old binary contents */    }    break;  }}/* Output RFC 822 body * Accepts: body *	    I/O routine *	    stream for I/O routine * Returns: T if successful, NIL if failure */long rfc822_output_body (BODY *body,soutr_t f,void *s){  PART *part;  PARAMETER *param;  char *cookie = NIL;  char tmp[MAILTMPLEN];  char *t;  switch (body->type) {  case TYPEMULTIPART:		/* multipart gets special handling */    part = body->nested.part;	/* first body part */				/* find cookie */    for (param = body->parameter; param && !cookie; param = param->next)      if (!strcmp (param->attribute,"BOUNDARY")) cookie = param->value;    if (!cookie) cookie = "-";	/* yucky default */    do {			/* for each part */				/* build cookie */      sprintf (t = tmp,"--%s\015\012",cookie);				/* append mini-header */      rfc822_write_body_header (&t,&part->body);      strcat (t,"\015\012");	/* write terminating blank line */				/* output cookie, mini-header, and contents */      if (!((*f) (s,tmp) && rfc822_output_body (&part->body,f,s))) return NIL;    } while (part = part->next);/* until done */				/* output trailing cookie */    sprintf (t = tmp,"--%s--",cookie);    break;  default:			/* all else is text now */    t = (char *) body->contents.text.data;    break;  }				/* output final stuff */  if (t && *t && !((*f) (s,t) && (*f) (s,"\015\012"))) return NIL;  return LONGT;}/* Convert BASE64 contents to binary * Accepts: source *	    length of source *	    pointer to return destination length * Returns: destination as binary or NIL if error */void *rfc822_base64 (unsigned char *src,unsigned long srcl,unsigned long *len){  char c;  void *ret = fs_get ((size_t) (*len = 4 + ((srcl * 3) / 4)));  char *d = (char *) ret;  int e = 0;  memset (ret,0,(size_t) *len);	/* initialize block */  *len = 0;			/* in case we return an error */  while (srcl--) {		/* until run out of characters */    c = *src++;			/* simple-minded decode */    if (isupper (c)) c -= 'A';    else if (islower (c)) c -= 'a' - 26;    else if (isdigit (c)) c -= '0' - 52;    else if (c == '+') c = 62;    else if (c == '/') c = 63;    else if (c == '=') {	/* padding */      switch (e++) {		/* check quantum position */      case 3:	e = 0;			/* restart quantum */	break;      case 2:	if (*src == '=') break;      default:			/* impossible quantum position */	fs_give (&ret);	return NIL;      }      continue;    }    else continue;		/* junk character */    switch (e++) {		/* install based on quantum position */    case 0:      *d = c << 2;		/* byte 1: high 6 bits */      break;    case 1:      *d++ |= c >> 4;		/* byte 1: low 2 bits */      *d = c << 4;		/* byte 2: high 4 bits */      break;    case 2:      *d++ |= c >> 2;		/* byte 2: low 4 bits */      *d = c << 6;		/* byte 3: high 2 bits */      break;    case 3:      *d++ |= c;		/* byte 3: low 6 bits */      e = 0;			/* reinitialize mechanism */      break;    }  }  *len = d - (char *) ret;	/* calculate data length */  return ret;			/* return the string */}/* Convert binary contents to BASE64 * Accepts: source *	    length of source *	    pointer to return destination length * Returns: destination as BASE64 */unsigned char *rfc822_binary (void *src,unsigned long srcl,unsigned long *len){  unsigned char *ret,*d;  unsigned char *s = (unsigned char *) src;  char *v = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";  unsigned long i = ((srcl + 2) / 3) * 4;  *len = i += 2 * ((i / 60) + 1);  d = ret = (unsigned char *) fs_get ((size_t) ++i);  for (i = 0; srcl; s += 3) {	/* process tuplets */    *d++ = v[s[0] >> 2];	/* byte 1: high 6 bits (1) */				/* byte 2: low 2 bits (1), high 4 bits (2) */    *d++ = v[((s[0] << 4) + (--srcl ? (s[1] >> 4) : 0)) & 0x3f];				/* byte 3: low 4 bits (2), high 2 bits (3) */    *d++ = srcl ? v[((s[1] << 2) + (--srcl ? (s[2] >> 6) : 0)) & 0x3f] : '=';				/* byte 4: low 6 bits (3) */    *d++ = srcl ? v[s[2] & 0x3f] : '=';    if (srcl) srcl--;		/* count third character if processed */    if ((++i) == 15) {		/* output 60 characters? */      i = 0;			/* restart line break count, insert CRLF */      *d++ = '\015'; *d++ = '\012';    }  }  *d++ = '\015'; *d++ = '\012';	/* insert final CRLF */  *d = '\0';			/* tie off string */  if (((unsigned long) (d - ret)) != *len) fatal ("rfc822_binary logic flaw");  return ret;			/* return the resulting string */}/* Convert QUOTED-PRINTABLE contents to 8BIT * Accepts: source *	    length of source * 	    pointer to return destination length * Returns: destination as 8-bit text or NIL if error */unsigned char *rfc822_qprint (unsigned char *src,unsigned long srcl,			      unsigned long *len){  unsigned char *ret = (unsigned char *) fs_get ((size_t) srcl + 1);  unsigned char *d = ret;  unsigned char *t = d;  unsigned char *s = src;  unsigned char c,e;  *len = 0;			/* in case we return an error */				/* until run out of characters */  while (((unsigned long) (s - src)) < srcl) {    switch (c = *s++) {		/* what type of character is it? */    case '=':			/* quoting character */      if (((unsigned long) (s - src)) < srcl) switch (c = *s++) {      case '\0':		/* end of data */	s--;			/* back up pointer */	break;      case '\015':		/* non-significant line break */	t = d;			/* accept any leading spaces */	if ((((unsigned long) (s - src)) < srcl) && (*s == '\012')) s++;	break;      default:			/* two hex digits then */	if (!(isxdigit (c) && (((unsigned long) (s - src)) < srcl) &&	      (e = *s++) && isxdigit (e))) {	  fs_give ((void **) &ret);	  return NIL;	}	if (isdigit (c)) c -= '0';	else c -= (isupper (c) ? 'A' - 10 : 'a' - 10);	if (isdigit (e)) e -= '0';	else e -= (isupper (e) ? 'A' - 10 : 'a' - 10);	*d++ = e + (c << 4);	/* merge the two hex digits */	t = d;			/* note point of non-space */	break;      }      break;    case ' ':			/* space, possibly bogus */      *d++ = c;			/* stash the space but don't update s */      break;    case '\015':		/* end of line */      d = t;			/* slide back to last non-space, drop in */    default:      *d++ = c;			/* stash the character */      t = d;			/* note point of non-space */    }        }  *d = '\0';			/* tie off results */  *len = d - ret;		/* calculate length */  return ret;			/* return the string */}/* Convert 8BIT contents to QUOTED-PRINTABLE * Accepts: source *	    length of source * 	    pointer to return destination length * Returns: destination as quoted-printable text */#define MAXL (size_t) 75	/* 76th position only used by continuation = */unsigned char *rfc822_8bit (unsigned char *src,unsigned long srcl,			    unsigned long *len){  unsigned long lp = 0;  unsigned char *ret = (unsigned char *)    fs_get ((size_t) (3*srcl + (6*srcl)/MAXL + 3));  unsigned char *d = ret;  char *hex = "0123456789ABCDEF";  unsigned char c;  while (srcl--) {		/* for each character */				/* true line break? */    if (((c = *src++) == '\015') && (*src == '\012') && srcl) {      *d++ = '\015'; *d++ = *src++; srcl--;      lp = 0;			/* reset line count */    }    else {			/* not a line break */				/* quoting required? */      if (iscntrl (c) || (c == 0x7f) || (c & 0x80) || (c == '=') ||	  ((c == ' ') && (*src == '\015'))) {	if ((lp += 3) > MAXL) {	/* yes, would line overflow? */	  *d++ = '='; *d++ = '\015'; *d++ = '\012';	  lp = 3;		/* set line count */	}	*d++ = '=';		/* quote character */	*d++ = hex[c >> 4];	/* high order 4 bits */	*d++ = hex[c & 0xf];	/* low order 4 bits */      }      else {			/* ordinary character */	if ((++lp) > MAXL) {	/* would line overflow? */	  *d++ = '='; *d++ = '\015'; *d++ = '\012';	  lp = 1;		/* set line count */	}	*d++ = c;		/* ordinary character */      }    }  }  *d = '\0';			/* tie off destination */  *len = d - ret;		/* calculate true size */				/* try to give some space back */  fs_resize ((void **) &ret,(size_t) *len + 1);  return ret;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
9久草视频在线视频精品| 欧美精品一区二区三区久久久 | 欧美一级专区免费大片| 久久精品视频免费| 亚洲国产一区二区三区青草影视| 蜜桃91丨九色丨蝌蚪91桃色| 色综合久久久久综合体桃花网| 日韩一区二区在线播放| 亚洲一区二区3| av电影天堂一区二区在线观看| 精品日韩在线观看| 强制捆绑调教一区二区| 欧美午夜一区二区三区免费大片| 国产精品久久久久久妇女6080| 一本久久a久久免费精品不卡| 日韩欧美中文字幕公布| 亚洲成人在线网站| 91国产丝袜在线播放| 中文字幕亚洲在| 国产 日韩 欧美大片| 久久综合九色综合97_久久久| 三级欧美在线一区| 欧美性大战久久久久久久| 综合婷婷亚洲小说| www.欧美.com| 国产精品国产自产拍高清av王其| 国产成人综合亚洲网站| 精品国精品国产| 蜜臀精品一区二区三区在线观看 | 久久久久久久久久久久久久久99 | 国产一区二三区| 精品国产伦一区二区三区免费| 青青草91视频| 精品毛片乱码1区2区3区| 日本sm残虐另类| 欧美一区二区三区白人| 蜜臀精品久久久久久蜜臀| 日韩欧美一级在线播放| 国产中文字幕精品| 国产香蕉久久精品综合网| 国产不卡视频在线观看| 国产精品久久久久久福利一牛影视 | 亚洲成人1区2区| 91精品一区二区三区久久久久久 | 成人深夜在线观看| 国产午夜精品一区二区三区视频| 成人免费电影视频| 中文字幕亚洲一区二区va在线| 99久久婷婷国产| 18成人在线观看| 色天天综合久久久久综合片| 香蕉久久一区二区不卡无毒影院 | 久久电影国产免费久久电影| 欧美一级一区二区| 国产一区二区不卡| 亚洲最色的网站| 欧美一区二区三区免费视频 | 久久99热国产| 国产亚洲午夜高清国产拍精品| 成人v精品蜜桃久久一区| 亚洲综合激情网| 久久久国产精华| 91福利精品视频| 国产精品一区二区果冻传媒| 亚洲人成网站影音先锋播放| 91麻豆精品91久久久久同性| 国产suv一区二区三区88区| 亚洲免费资源在线播放| 精品粉嫩aⅴ一区二区三区四区 | 亚洲成人资源网| 日韩一区二区三区精品视频| 国产精品一区二区你懂的| 亚洲精品视频自拍| 2017欧美狠狠色| 欧美系列亚洲系列| 国产成人在线影院| 性感美女久久精品| 国产精品国产三级国产三级人妇| 欧美日韩aaaaa| 99re热这里只有精品视频| 男人操女人的视频在线观看欧美| 亚洲欧洲av另类| 久久亚洲一区二区三区明星换脸| 91视频你懂的| 国产成人亚洲精品狼色在线| 三级久久三级久久久| 又紧又大又爽精品一区二区| 精品国产91洋老外米糕| 欧美久久久久久久久久| 91在线视频18| 成人在线视频一区二区| 免费观看日韩电影| 午夜在线成人av| 一区二区欧美视频| 1024精品合集| 国产精品麻豆99久久久久久| 欧美mv日韩mv国产网站| 欧美人与z0zoxxxx视频| 色噜噜狠狠成人网p站| 成人av片在线观看| 国产91精品精华液一区二区三区 | 色香蕉久久蜜桃| 国产91丝袜在线播放九色| 久久精品国产亚洲高清剧情介绍 | 国产精品嫩草影院com| 337p日本欧洲亚洲大胆色噜噜| 欧美精品色综合| 欧美日韩久久久| 欧洲亚洲精品在线| 欧美视频日韩视频在线观看| 欧美天天综合网| 精品视频1区2区3区| 欧美私模裸体表演在线观看| 欧洲一区二区三区在线| 在线看一区二区| 欧美精选在线播放| 日韩久久久久久| 久久中文娱乐网| 国产欧美精品一区二区色综合 | 婷婷丁香激情综合| 日韩av电影一区| 日本中文一区二区三区| 日韩av中文字幕一区二区| 日本欧美一区二区| 国产综合成人久久大片91| 国产成人鲁色资源国产91色综 | 欧美视频第二页| 欧美日韩第一区日日骚| 日韩免费高清视频| 久久久久国产成人精品亚洲午夜| 久久久亚洲国产美女国产盗摄 | 午夜电影一区二区三区| 日韩经典一区二区| 国内成人精品2018免费看| 国产高清精品在线| 97久久超碰国产精品| 欧美日韩国产影片| 精品久久国产老人久久综合| 国产欧美一区二区三区网站| 亚洲三级免费电影| 免费看欧美女人艹b| 国产a视频精品免费观看| 91麻豆免费视频| 精品剧情v国产在线观看在线| 国产人久久人人人人爽| 一区二区在线观看视频在线观看| 日韩经典一区二区| 白白色 亚洲乱淫| 777午夜精品视频在线播放| 精品福利视频一区二区三区| 亚洲精品你懂的| 精品一区免费av| 色综合久久综合中文综合网| 555夜色666亚洲国产免| 国产日韩精品一区| 日本少妇一区二区| www..com久久爱| 日韩欧美一区电影| 一区二区三区在线播放| 国产毛片一区二区| 8x8x8国产精品| 中文字幕一区二区三区蜜月| 欧美a级理论片| 在线欧美日韩国产| 国产精品美女久久福利网站| 蜜臀精品久久久久久蜜臀| 色综合久久综合网97色综合 | 欧美r级电影在线观看| 洋洋成人永久网站入口| 成人网页在线观看| 精品少妇一区二区三区日产乱码 | 欧美一区二区三区免费| 亚洲精品一二三| 岛国一区二区在线观看| 91精品国产综合久久久久| 亚洲激情校园春色| 成人av网址在线观看| 精品国产在天天线2019| 人禽交欧美网站| 欧美福利视频一区| 亚洲午夜激情av| 在线观看不卡一区| 亚洲视频香蕉人妖| 成人av网站在线观看免费| 国产午夜亚洲精品午夜鲁丝片| 日本不卡123| 欧美人xxxx| 亚洲mv在线观看| 欧美日韩视频在线观看一区二区三区 | 亚洲精品免费在线观看| 99re热视频精品| 亚洲免费观看高清在线观看| 高潮精品一区videoshd| 国产欧美综合在线观看第十页 | 中文字幕一区二区三区四区| 国产91精品久久久久久久网曝门| 国产欧美精品国产国产专区| 国产成人精品亚洲日本在线桃色| 久久九九久精品国产免费直播| 久草在线在线精品观看|