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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rfc822.c

?? SIP 1.5.0源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * Program:	RFC-822 routines (originally from SMTP) * * Author:	Mark Crispin *		Networks and Distributed Computing *		Computing & Communications *		University of Washington *		Administration Building, AG-44 *		Seattle, WA  98195 *		Internet: MRC@CAC.Washington.EDU * * Date:	27 July 1988 * Last Edited:	13 July 1999 * * Sponsorship:	The original version of this work was developed in the *		Symbolic Systems Resources Group of the Knowledge Systems *		Laboratory at Stanford University in 1987-88, and was funded *		by the Biomedical Research Technology Program of the National *		Institutes of Health under grant number RR-00785. * * Original version Copyright 1988 by The Leland Stanford Junior University * Copyright 1999 by the University of Washington * *  Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notices appear in all copies and that both the * above copyright notices and this permission notice appear in supporting * documentation, and that the name of the University of Washington or The * Leland Stanford Junior University not be used in advertising or publicity * pertaining to distribution of the software without specific, written prior * permission.  This software is made available "as is", and * THE UNIVERSITY OF WASHINGTON AND THE LELAND STANFORD JUNIOR UNIVERSITY * DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE, * INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE, AND IN NO EVENT SHALL THE UNIVERSITY OF * WASHINGTON OR THE LELAND STANFORD JUNIOR UNIVERSITY BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF * CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */#include <ctype.h>#include <stdio.h>#include <time.h>#include "mail.h"#include "osdep.h"#include "rfc822.h"#include "misc.h"/* RFC-822 static data */char *errhst = ERRHOST;		/* syntax error host string *//* Body formats constant strings, must match definitions in mail.h */char *body_types[TYPEMAX+1] = {  "TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO",  "MODEL", "X-UNKNOWN"};char *body_encodings[ENCMAX+1] = {  "7BIT", "8BIT", "BINARY", "BASE64", "QUOTED-PRINTABLE", "X-UNKNOWN"};/* Token delimiting special characters */				/* full RFC-822 specials */const char *rspecials =  "()<>@,;:\\\"[].";				/* body token specials */const char *tspecials = " ()<>@,;:\\\"[]./?=";/* Once upon a time, CSnet had a mailer which assigned special semantics to * dot in e-mail addresses.  For the sake of that mailer, dot was added to * the RFC-822 definition of `specials', even though it had numerous bad side * effects: *   1)	It broke mailbox names on systems which had dots in user names, such as *	Multics and TOPS-20.  RFC-822's syntax rules require that `Admin . MRC' *	be considered equivalent to `Admin.MRC'.  Fortunately, few people ever *	tried this in practice. *   2) It required that all personal names with an initial be quoted, a widely *	detested user interface misfeature. *   3)	It made the parsing of host names be non-atomic for no good reason. * To work around these problems, the following alternate specials lists are * defined.  hspecials and wspecials are used in lieu of rspecials, and * ptspecials are used in lieu of tspecials.  These alternate specials lists * make the parser work a lot better in the real world.  It ain't politically * correct, but it lets the users get their job done! */				/* parse-word specials */const char *wspecials = " ()<>@,;:\\\"[]";				/* parse-token specials for parsing */const char *ptspecials = " ()<>@,;:\\\"[]/?=";/* RFC822 writing routines *//* Write RFC822 header from message structure * Accepts: scratch buffer to write into *	    message envelope *	    message body */void rfc822_header (char *header,ENVELOPE *env,BODY *body){  if (env->remail) {		/* if remailing */    long i = strlen (env->remail);    strcpy (header,env->remail);/* start with remail header */				/* flush extra blank line */    if (i > 4 && header[i-4] == '\015') header[i-2] = '\0';  }  else *header = '\0';		/* else initialize header to null */  rfc822_header_line (&header,"Newsgroups",env,env->newsgroups);  rfc822_header_line (&header,"Date",env,env->date);  rfc822_address_line (&header,"From",env,env->from);  rfc822_address_line (&header,"Sender",env,env->sender);  rfc822_address_line (&header,"Reply-To",env,env->reply_to);  rfc822_header_line (&header,"Subject",env,env->subject);  if (env->bcc && !(env->to || env->cc))    strcat (header,"To: undisclosed recipients: ;\015\012");  rfc822_address_line (&header,"To",env,env->to);  rfc822_address_line (&header,"cc",env,env->cc);/* bcc's are never written... * rfc822_address_line (&header,"bcc",env,env->bcc); */  rfc822_header_line (&header,"In-Reply-To",env,env->in_reply_to);  rfc822_header_line (&header,"Message-ID",env,env->message_id);  rfc822_header_line (&header,"Followup-to",env,env->followup_to);  rfc822_header_line (&header,"References",env,env->references);  if (body && !env->remail) {	/* not if remail or no body structure */    strcat (header,"MIME-Version: 1.0\015\012");    rfc822_write_body_header (&header,body);  }  strcat (header,"\015\012");	/* write terminating blank line */}/* Write RFC822 address from header line * Accepts: pointer to destination string pointer *	    pointer to header type *	    message to interpret *	    address to interpret */void rfc822_address_line (char **header,char *type,ENVELOPE *env,ADDRESS *adr){  char *s = (*header += strlen (*header));  if (adr) {			/* do nothing if no addresses */    if (env && env->remail) strcat (s,"ReSent-");    strcat (s,type);		/* write header name */    strcat (s,": ");    s = rfc822_write_address_full (s + strlen (s),adr,*header);				/* tie off header line */    *s++ = '\015'; *s++ = '\012'; *s = '\0';    *header = s;		/* set return value */  }}/* Write RFC822 text from header line * Accepts: pointer to destination string pointer *	    pointer to header type *	    message to interpret *	    pointer to text */void rfc822_header_line (char **header,char *type,ENVELOPE *env,char *text){  if (text) sprintf ((*header += strlen (*header)),"%s%s: %s\015\012",		     env->remail ? "ReSent-" : "",type,text);}/* Write RFC822 address list * Accepts: pointer to destination string *	    address to interpret *	    header base if pretty-printing * Returns: end of destination string */				/* RFC822 continuation, must start with CRLF */#define RFC822CONT "\015\012    "char *rfc822_write_address_full (char *dest,ADDRESS *adr,char *base){  long i,n;  for (n = 0; adr; adr = adr->next) {    if (adr->host) {		/* ordinary address? */      if (!(base && n)) {	/* only write if exact form or not in group */				/* simple case? */	if (!(adr->personal || adr->adl)) rfc822_address (dest,adr);	else {			/* no, must use phrase <route-addr> form */	  if (adr->personal) rfc822_cat (dest,adr->personal,rspecials);	  strcat (dest," <");	/* write address delimiter */	  rfc822_address (dest,adr);	  strcat (dest,">");	/* closing delimiter */	}	if (adr->next && adr->next->mailbox) strcat (dest,", ");      }    }    else if (adr->mailbox) {	/* start of group? */				/* yes, write group name */      rfc822_cat (dest,adr->mailbox,rspecials);      strcat (dest,": ");	/* write group identifier */      n++;			/* in a group */    }    else if (n) {		/* must be end of group (but be paranoid) */      strcat (dest,";");				/* no longer in that group */      if (!--n && adr->next && adr->next->mailbox) strcat (dest,", ");    }    i = strlen (dest);		/* length of what we just wrote */				/* write continuation if doesn't fit */    if (base && (dest > (base + 4)) && ((dest + i) > (base + 78))) {      memmove (dest + sizeof (RFC822CONT) - 1,dest,i + 1);      memcpy (dest,RFC822CONT,sizeof (RFC822CONT) - 1);      base = dest + 2;		/* new base */      dest += i + sizeof (RFC822CONT) - 1;    }    else dest += i;		/* new end of string */  }  return dest;			/* return end of string */}/* Write RFC822 route-address to string * Accepts: pointer to destination string *	    address to interpret */void rfc822_address (char *dest,ADDRESS *adr){  if (adr && adr->host) {	/* no-op if no address */    if (adr->adl) {		/* have an A-D-L? */      strcat (dest,adr->adl);      strcat (dest,":");    }				/* write mailbox name */    rfc822_cat (dest,adr->mailbox,wspecials);    if (*adr->host != '@') {	/* unless null host (HIGHLY discouraged!) */      strcat (dest,"@");	/* host delimiter */      strcat (dest,adr->host);	/* write host name */    }  }}/* Concatenate RFC822 string * Accepts: pointer to destination string *	    pointer to string to concatenate *	    list of special characters */void rfc822_cat (char *dest,char *src,const char *specials){  char *s;  if (strpbrk (src,specials)) {	/* any specials present? */    strcat (dest,"\"");		/* opening quote */				/* truly bizarre characters in there? */    while (s = strpbrk (src,"\\\"")) {      strncat (dest,src,s-src);	/* yes, output leader */      strcat (dest,"\\");	/* quoting */      strncat (dest,s,1);	/* output the bizarre character */      src = ++s;		/* continue after the bizarre character */    }    if (*src) strcat (dest,src);/* output non-bizarre string */    strcat (dest,"\"");		/* closing quote */  }  else strcat (dest,src);	/* otherwise it's the easy case */}/* Write body content header * Accepts: pointer to destination string pointer *	    pointer to body to interpret */void rfc822_write_body_header (char **dst,BODY *body){  char *s;  STRINGLIST *stl;  PARAMETER *param = body->parameter;  sprintf (*dst += strlen (*dst),"Content-Type: %s",body_types[body->type]);  s = body->subtype ? body->subtype : rfc822_default_subtype (body->type);  sprintf (*dst += strlen (*dst),"/%s",s);  if (param) do {    sprintf (*dst += strlen (*dst),"; %s=",param->attribute);    rfc822_cat (*dst,param->value,tspecials);  } while (param = param->next);  else if (body->type == TYPETEXT) strcat (*dst,"; CHARSET=US-ASCII");  strcpy (*dst += strlen (*dst),"\015\012");  if (body->encoding)		/* note: encoding 7BIT never output! */    sprintf (*dst += strlen (*dst),"Content-Transfer-Encoding: %s\015\012",	     body_encodings[body->encoding]);  if (body->id) sprintf (*dst += strlen (*dst),"Content-ID: %s\015\012",			 body->id);  if (body->description)    sprintf (*dst += strlen (*dst),"Content-Description: %s\015\012",	     body->description);  if (body->md5)    sprintf (*dst += strlen (*dst),"Content-MD5: %s\015\012",body->md5);  if (stl = body->language) {    strcpy (*dst += strlen (*dst),"Content-Language: ");    do {      rfc822_cat (*dst,(char *) stl->text.data,tspecials);      if (stl = stl->next) strcat (*dst += strlen (*dst),", ");    }    while (stl);    strcpy (*dst += strlen (*dst),"\015\012");  }  if (body->disposition.type) {    sprintf (*dst += strlen (*dst),"Content-Disposition: %s",	     body->disposition.type);    if (param = body->disposition.parameter) do {      sprintf (*dst += strlen (*dst),"; %s=",param->attribute);      rfc822_cat (*dst,param->value,tspecials);    } while (param = param->next);    strcpy (*dst += strlen (*dst),"\015\012");  }}/* Subtype defaulting (a no-no, but regretably necessary...) * Accepts: type code * Returns: default subtype name */char *rfc822_default_subtype (unsigned short type){  switch (type) {  case TYPETEXT:		/* default is TEXT/PLAIN */    return "PLAIN";  case TYPEMULTIPART:		/* default is MULTIPART/MIXED */    return "MIXED";  case TYPEMESSAGE:		/* default is MESSAGE/RFC822 */    return "RFC822";  case TYPEAPPLICATION:		/* default is APPLICATION/OCTET-STREAM */    return "OCTET-STREAM";  case TYPEAUDIO:		/* default is AUDIO/BASIC */    return "BASIC";  default:			/* others have no default subtype */    return "UNKNOWN";  }}/* RFC822 parsing routines *//* Parse an RFC822 message * Accepts: pointer to return envelope *	    pointer to return body *	    pointer to header *	    header byte count *	    pointer to body stringstruct *	    pointer to local host name *	    recursion depth

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡在线视频| 免费成人你懂的| 国产欧美一区二区精品性色超碰| 8v天堂国产在线一区二区| 精品视频在线免费观看| 欧美日韩另类一区| 日韩一区二区视频| 久久久久久久久久久久久女国产乱| 欧美成人三级电影在线| www亚洲一区| 国产精品久久久久久户外露出 | 亚洲国产另类av| 亚洲一区免费在线观看| 日韩国产在线一| 久久精品免费观看| 国产大片一区二区| 大陆成人av片| 在线观看欧美精品| 日韩视频永久免费| 欧美韩国日本不卡| 亚洲女厕所小便bbb| 性久久久久久久| 久久国产精品无码网站| 成人亚洲一区二区一| 色综合一区二区| 日韩丝袜美女视频| 国产精品国产三级国产普通话99| 亚洲最大成人综合| 精品在线一区二区三区| 成人av电影在线| 欧美精品少妇一区二区三区| 欧美成人精品1314www| 国产精品久久久久9999吃药| 亚洲电影你懂得| 国产另类ts人妖一区二区| 色综合久久九月婷婷色综合| 91久久久免费一区二区| 日韩欧美一级片| 日韩不卡一二三区| 国产精品一区专区| 91福利国产成人精品照片| 日韩欧美亚洲另类制服综合在线| 国产欧美日韩激情| 日韩高清在线不卡| 9i在线看片成人免费| 日韩精品最新网址| 亚洲国产一区视频| 成人免费视频视频在线观看免费 | 欧美视频在线一区| 国产精品视频一二| 极品少妇一区二区三区精品视频| 日本高清不卡视频| 国产欧美日韩在线| 加勒比av一区二区| 3d动漫精品啪啪一区二区竹菊| 国产精品欧美久久久久无广告 | 国产91在线|亚洲| 欧美精品一二三| 亚洲国产日韩a在线播放| 99久久久久久| 国产精品乱码一区二区三区软件 | 激情都市一区二区| 欧美妇女性影城| 亚洲永久精品国产| 99这里只有久久精品视频| 精品国产伦一区二区三区观看体验 | 国产精品亚洲第一| 日韩精品在线网站| 美女一区二区视频| 91精品国产黑色紧身裤美女| 一区二区三区欧美日韩| 色哟哟在线观看一区二区三区| 国产精品久久综合| av亚洲精华国产精华| 欧美国产日韩在线观看| a级高清视频欧美日韩| 欧美激情资源网| 成人不卡免费av| 亚洲人123区| 在线免费观看日本一区| 夜夜揉揉日日人人青青一国产精品| 一本到不卡精品视频在线观看| 亚洲国产精品黑人久久久| 成人免费视频caoporn| 国产精品嫩草影院com| av午夜一区麻豆| 亚洲欧美一区二区三区极速播放| 91在线视频网址| 一级特黄大欧美久久久| 欧美精品1区2区3区| 久久99国产精品久久| 国产偷国产偷精品高清尤物| 91在线丨porny丨国产| 亚洲国产日日夜夜| 日韩视频永久免费| 成人av资源站| 亚洲一二三四在线观看| 欧美系列日韩一区| 色老综合老女人久久久| 日韩欧美的一区| 麻豆精品视频在线观看视频| 国产精品一区二区在线观看网站| 久久精品在线免费观看| 色哦色哦哦色天天综合| 香蕉加勒比综合久久| 精品少妇一区二区三区视频免付费 | 狠狠色狠狠色合久久伊人| 欧美激情综合五月色丁香小说| 色吧成人激情小说| 久久99最新地址| 日韩毛片高清在线播放| 91精品国产乱| www.av亚洲| 美女在线观看视频一区二区| 亚洲日本免费电影| 欧美成人福利视频| 91国在线观看| 国产福利精品导航| 日本不卡视频在线| 一区二区国产视频| 久久久久久久av麻豆果冻| 欧美日韩综合在线免费观看| 国产不卡在线视频| 日本在线不卡视频| 亚洲精品视频在线观看免费| 国产午夜亚洲精品羞羞网站| 91精品中文字幕一区二区三区| 91原创在线视频| 国产91丝袜在线播放| 日本女优在线视频一区二区| 亚洲与欧洲av电影| 亚洲人快播电影网| 国产精品麻豆欧美日韩ww| 久久综合999| 日韩欧美自拍偷拍| 91精品一区二区三区久久久久久| 99精品欧美一区| 成人av在线播放网址| 国产69精品久久久久777| 久久国产生活片100| 日韩中文字幕不卡| 天天色综合成人网| 五月激情综合网| 日韩av高清在线观看| 亚洲成a人片在线不卡一二三区| 亚洲欧美国产毛片在线| 亚洲欧洲性图库| 中文字幕一区二区5566日韩| 亚洲国产高清在线| 国产精品色一区二区三区| 国产日韩v精品一区二区| 久久久久久电影| 国产精品久久久久久久久久久免费看| 久久―日本道色综合久久| 久久精品一区四区| 国产日韩欧美精品在线| 国产精品―色哟哟| 亚洲欧美日韩一区二区三区在线观看| 中文字幕在线观看不卡| 亚洲天堂免费看| 亚洲精品亚洲人成人网| 亚洲国产欧美在线人成| 日韩国产在线一| 激情综合色综合久久综合| 国产成人aaa| 91看片淫黄大片一级在线观看| 在线观看日韩国产| 91精品国产全国免费观看 | 国产精品美女一区二区| 中文字幕一区二区三区在线播放| 亚洲欧美一区二区久久| 亚洲午夜免费福利视频| 日本不卡123| 成人性生交大片免费| 欧美视频你懂的| 精品久久久久久久人人人人传媒| 久久久久国产精品麻豆| 亚洲婷婷综合久久一本伊一区| 亚洲成人动漫在线免费观看| 精品一区精品二区高清| 成人久久18免费网站麻豆| 色噜噜夜夜夜综合网| 日韩一区二区三区电影| 亚洲欧洲日韩av| 日韩综合一区二区| 成人激情午夜影院| 日韩一区二区麻豆国产| 国产精品久久久久久久久免费樱桃| 亚洲精品国产一区二区精华液| 美国十次综合导航| 色婷婷狠狠综合| 久久精品一区二区三区av| 一区二区久久久| 丰满少妇在线播放bd日韩电影| 在线一区二区三区四区五区| 国产亚洲精品超碰| 日韩成人免费看| 色就色 综合激情| 国产精品美女一区二区| 经典三级一区二区|