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

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

?? rfc822.c

?? mgcp協(xié)議源代碼。支持多種編碼:g711
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/* * 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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线观看不卡视频| 懂色av一区二区三区免费观看| 国产精品自在欧美一区| 在线不卡的av| 日韩精品亚洲一区| 91精品一区二区三区在线观看| 无码av免费一区二区三区试看 | 亚洲一区二区三区中文字幕| 91一区二区三区在线观看| 国产三级精品三级| 国产精品一区二区久久精品爱涩| 亚洲码国产岛国毛片在线| 91免费视频网| 国产精品一区二区不卡| 午夜精品福利一区二区三区蜜桃| 中文字幕一区日韩精品欧美| 欧洲精品中文字幕| 天天做天天摸天天爽国产一区| 国产精品美女www爽爽爽| 国产精品久久久久影院老司| 成人黄色小视频| 亚洲同性gay激情无套| 欧美色综合网站| 奇米色777欧美一区二区| 久久综合资源网| 成人精品国产福利| 紧缚奴在线一区二区三区| 亚洲国产成人自拍| 日本国产一区二区| 久久精品国产99国产精品| 国产精品久久久99| 久久精品日产第一区二区三区高清版| 色噜噜久久综合| 99久久综合色| 免费国产亚洲视频| 五月激情丁香一区二区三区| 亚洲午夜在线视频| 日本一区二区免费在线| 久久免费的精品国产v∧| 欧美性大战久久久久久久蜜臀 | 国产精品一品二品| 久久99久久久久| 另类小说视频一区二区| 久久成人麻豆午夜电影| 国产自产视频一区二区三区| 亚洲综合激情另类小说区| 亚洲免费观看高清| 亚洲主播在线观看| 亚洲高清视频中文字幕| 无吗不卡中文字幕| 蜜桃视频在线一区| 亚洲免费观看视频| 亚洲影院免费观看| 日韩精品五月天| 免费人成精品欧美精品| 精品亚洲国产成人av制服丝袜| 久久se这里有精品| 国产成人免费网站| 久久精品国产99国产精品| 精品影院一区二区久久久| 国产原创一区二区| 秋霞电影一区二区| 久国产精品韩国三级视频| 国产精品123区| 97精品电影院| 成人毛片视频在线观看| 久久精品国产久精国产| 丁香激情综合五月| 99精品在线免费| 欧美高清一级片在线| 欧美精品一区二区三区久久久| 欧美人狂配大交3d怪物一区| 色吊一区二区三区| 亚洲精品一二三区| 精品99久久久久久| 亚洲手机成人高清视频| 亚洲午夜电影在线| 国产综合久久久久久鬼色| 99久久精品免费看国产免费软件| 欧美日韩一区精品| 欧美少妇bbb| 26uuu欧美| 亚洲激情六月丁香| 老司机精品视频在线| aaa国产一区| 欧美一级夜夜爽| 欧美一区二区三区婷婷月色| 国产色一区二区| 亚洲一区二区视频在线| 国产一区二区三区精品视频| 色婷婷精品久久二区二区蜜臀av| eeuss鲁片一区二区三区| 91麻豆精品91久久久久久清纯| 亚洲国产精品av| 免费av网站大全久久| 99精品视频免费在线观看| 日韩一区二区精品| 精品久久国产老人久久综合| 精品国产91亚洲一区二区三区婷婷| 亚洲视频一区在线观看| 激情文学综合网| 欧美日韩国产片| 国产精品的网站| 精品一区二区三区日韩| 欧美亚洲国产bt| 国产精品美女一区二区在线观看| 日韩成人精品在线| 欧美在线免费观看视频| 国产精品你懂的在线欣赏| 久久国产福利国产秒拍| 欧美裸体bbwbbwbbw| 综合激情成人伊人| 国产成a人亚洲精| 亚洲精品一区二区三区香蕉 | 国产激情一区二区三区| 69久久夜色精品国产69蝌蚪网| 综合久久综合久久| 国产精品羞羞答答xxdd| 日韩你懂的在线观看| 国产免费观看久久| 精品系列免费在线观看| 7777精品伊人久久久大香线蕉超级流畅| 亚洲视频 欧洲视频| 成人性色生活片免费看爆迷你毛片| 日韩欧美在线影院| 日韩精品成人一区二区三区| 精品1区2区3区| 亚洲国产综合视频在线观看| 色老汉av一区二区三区| 亚洲私人黄色宅男| 国产精品色一区二区三区| 一区二区三区自拍| 国v精品久久久网| 欧美va亚洲va香蕉在线| 天天综合网 天天综合色| 欧美亚洲免费在线一区| 伊人性伊人情综合网| 成人黄色网址在线观看| 国产精品久久久久三级| av激情综合网| 国产精品久久久爽爽爽麻豆色哟哟 | 91色九色蝌蚪| 日韩一区中文字幕| 色综合色综合色综合| 亚洲精品高清视频在线观看| 91国产免费观看| 一区二区三区高清不卡| 欧美丝袜自拍制服另类| 亚洲国产综合人成综合网站| 欧美精品亚洲二区| 人人爽香蕉精品| 精品国产电影一区二区| 国产精品中文欧美| 国产丝袜欧美中文另类| 成人激情免费网站| 亚洲色图视频网| 欧美色爱综合网| 久久综合综合久久综合| 久久久久9999亚洲精品| 波多野结衣视频一区| 亚洲免费观看高清完整版在线| 欧美日韩国产美| 久久国产人妖系列| 日本一区二区在线不卡| 91丨porny丨首页| 午夜视频在线观看一区二区| 日韩欧美在线1卡| 成人三级伦理片| 亚洲精品中文在线观看| 91精品欧美综合在线观看最新| 精品一区二区成人精品| 中文字幕一区二区三区色视频 | 久久蜜桃av一区二区天堂| 成人av电影在线播放| 亚洲国产精品久久久男人的天堂| 日韩午夜av电影| 成人深夜在线观看| 五月天丁香久久| 国产日韩欧美电影| 91久久精品一区二区三| 精品一区二区三区免费观看| 国产精品久久久久久久久免费相片 | 日韩不卡手机在线v区| 久久久久国产免费免费| 在线观看一区二区视频| 久久99久久久久| 亚洲猫色日本管| 久久天天做天天爱综合色| 色综合天天综合网天天看片| 国产精品久久看| 日韩一区二区在线观看视频| 国产91富婆露脸刺激对白| 午夜精品123| 中文字幕日本不卡| 日韩免费视频一区二区| 91精品福利视频| 国产精品一区二区视频| 视频一区欧美精品| 自拍偷自拍亚洲精品播放| 久久亚洲春色中文字幕久久久|