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

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

?? rfc822.c

?? SIP 1.5.0源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號(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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人av中文| 国产精品99久久久久久有的能看 | 亚洲欧洲精品一区二区三区不卡| 97精品久久久午夜一区二区三区| 免费观看一级特黄欧美大片| 中文字幕制服丝袜成人av| 日韩欧美你懂的| 日本精品免费观看高清观看| 国产精品77777| 天天综合天天综合色| 亚洲欧洲av在线| 久久久久久久久久电影| 91精品国产91综合久久蜜臀| 色综合久久88色综合天天6| 国产精品一区二区黑丝| 日韩专区在线视频| 亚洲欧美aⅴ...| 国产精品伦理在线| 久久久99精品免费观看不卡| 欧美一区二区免费视频| 欧美日韩电影在线播放| 色婷婷久久久久swag精品| 国产91精品一区二区麻豆网站| 麻豆国产精品官网| 免费高清视频精品| 日韩国产精品久久久久久亚洲| 一区二区三区中文在线观看| 天堂蜜桃91精品| 香蕉久久一区二区不卡无毒影院| 亚洲一区二区三区国产| 尤物av一区二区| 一区二区三区在线免费播放| 综合电影一区二区三区 | 天堂蜜桃91精品| 亚洲高清久久久| 亚洲午夜一区二区| 亚洲高清不卡在线| 亚洲午夜激情网页| 午夜精品久久久久久久99樱桃| 亚洲精品成人在线| 亚洲国产一区二区三区| 亚洲va韩国va欧美va| 婷婷综合久久一区二区三区| 亚洲va中文字幕| 日产国产高清一区二区三区| 日日夜夜精品视频天天综合网| 五月婷婷综合激情| 日韩电影在线免费观看| 老司机精品视频线观看86| 九九热在线视频观看这里只有精品| 奇米在线7777在线精品| 另类欧美日韩国产在线| 国产麻豆视频一区二区| 懂色一区二区三区免费观看| 国产日韩在线不卡| 国产精品久99| 亚洲一区二区三区中文字幕在线| 亚洲成人动漫在线免费观看| 美女脱光内衣内裤视频久久网站 | 日本午夜精品一区二区三区电影| 三级不卡在线观看| 国产一区二区三区国产| 成人性色生活片| 色视频成人在线观看免| 欧美日韩国产高清一区二区| 日韩欧美一级在线播放| 国产午夜亚洲精品羞羞网站| 亚洲人成在线播放网站岛国| 午夜伦理一区二区| 国产一区二区精品久久| 91在线播放网址| 欧美亚洲图片小说| 精品粉嫩aⅴ一区二区三区四区| 国产精品午夜免费| 午夜精品福利一区二区蜜股av | 91在线porny国产在线看| 欧美三级视频在线播放| 日韩精品最新网址| 国产精品不卡一区二区三区| 日韩专区在线视频| 国产91精品欧美| 777a∨成人精品桃花网| 国产三级久久久| 亚洲国产精品一区二区久久 | 欧美亚洲愉拍一区二区| 日韩亚洲电影在线| 国产精品久久久久影院老司| 五月婷婷综合激情| 成人免费三级在线| 欧美丰满一区二区免费视频| 国产精品久久久久久久久免费樱桃 | 欧美韩国日本不卡| 午夜久久电影网| 成人免费黄色大片| 欧美一区二区三区四区高清 | 国产亚洲欧美一区在线观看| 亚洲一区中文日韩| 国产精品18久久久久久久久久久久| 日本黄色一区二区| 国产视频911| 天堂久久一区二区三区| 91色在线porny| 久久午夜老司机| 亚洲超碰97人人做人人爱| 成人高清免费观看| 精品福利一区二区三区| 午夜伦欧美伦电影理论片| 97精品电影院| 国产亚洲精品免费| 日韩1区2区日韩1区2区| 日本黄色一区二区| 国产精品久久久久永久免费观看 | 国产中文字幕精品| 欧美一区二区视频在线观看| 亚洲国产一区二区视频| 99久久久精品| 国产视频911| 国产一区二区三区四| 日韩美一区二区三区| 色综合久久久久综合体桃花网| 欧美www视频| 午夜影院在线观看欧美| 91捆绑美女网站| 国产女同互慰高潮91漫画| 韩国欧美国产1区| 日韩午夜激情免费电影| 日韩极品在线观看| 欧美日韩五月天| 亚洲国产一区在线观看| 欧美做爰猛烈大尺度电影无法无天| 国产精品全国免费观看高清| 国产真实乱子伦精品视频| 日韩精品一区二区三区视频播放 | av电影天堂一区二区在线观看| 久久婷婷久久一区二区三区| 裸体一区二区三区| 日韩一区二区在线观看视频播放| 日韩精品91亚洲二区在线观看| 欧美日韩国产小视频在线观看| 亚洲区小说区图片区qvod| 91亚洲男人天堂| 一区二区视频在线| 日本道色综合久久| 一区二区三区丝袜| 欧美性三三影院| 日韩**一区毛片| 日韩精品中文字幕一区| 韩国av一区二区三区四区| 久久综合网色—综合色88| 激情伊人五月天久久综合| 国产亚洲一区二区在线观看| 波多野洁衣一区| 亚洲乱码中文字幕| 欧美午夜精品免费| 免费成人美女在线观看.| 精品对白一区国产伦| 成人91在线观看| 亚洲一区二区黄色| 日韩欧美国产一二三区| 国产91丝袜在线播放九色| 国产精品传媒入口麻豆| 欧美午夜精品一区二区蜜桃 | 日韩精品久久理论片| 精品国产一区二区三区av性色| 国产盗摄一区二区| 日韩伦理电影网| 欧美二区乱c少妇| 国产在线精品免费| 亚洲免费高清视频在线| 91麻豆精品国产91久久久久久久久| 久久99久久精品| 日韩一区中文字幕| 欧美欧美欧美欧美| 国产99久久久久久免费看农村| 亚洲视频免费看| 欧美成人女星排行榜| proumb性欧美在线观看| 日韩精品一二区| 中文字幕av一区 二区| 欧美日韩日日夜夜| 懂色av一区二区三区蜜臀| 亚洲丶国产丶欧美一区二区三区| 亚洲精品在线观看网站| 99免费精品视频| 麻豆成人av在线| 亚洲精品视频观看| 久久久噜噜噜久久中文字幕色伊伊 | 欧美精品在线视频| 不卡在线视频中文字幕| 琪琪久久久久日韩精品| 亚洲乱码国产乱码精品精小说 | 国产精品蜜臀av| 欧美日韩亚洲综合一区二区三区| 国产制服丝袜一区| 午夜视频在线观看一区| 国产精品每日更新| 欧美一级欧美一级在线播放| 色噜噜夜夜夜综合网| 久久99精品国产麻豆不卡| 一区二区三区波多野结衣在线观看|