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

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

?? rfc822.c

?? SIP 1.5.0源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
      rfc822_skipws (string);	/* skip WS in the normal way */    }    else adr = rfc822_parse_addrspec (s,string,defaulthost);  }  return adr;			/* return the address */}/* Check if address is a phrase only * Accepts: pointer to end of phrase * Returns: T if phrase only, else NIL; */long rfc822_phraseonly (char *end){  while (*end == ' ') ++end;	/* call rfc822_skipws() instead?? */  switch (*end) {  case '\0': case ',': case ';':    return LONGT;		/* is a phrase only */  }  return NIL;			/* something other than phase is here */}/* Parse RFC822 route-address * Accepts: string pointer *	    pointer to string pointer to update * Returns: address * * Updates string pointer */ADDRESS *rfc822_parse_routeaddr (char *string,char **ret,char *defaulthost){  char tmp[MAILTMPLEN];  ADDRESS *adr;  char *adl = NIL;  char *routeend = NIL;  if (!string) return NIL;  rfc822_skipws (&string);	/* flush leading whitespace */				/* must start with open broket */  if (*string != '<') return NIL;  if (string[1] == '@') {	/* have an A-D-L? */    adl = ++string;		/* yes, remember that fact */    while (*string != ':') {	/* search for end of A-D-L */				/* punt if never found */      if (!*string) return NIL;      ++string;			/* try next character */    }    *string = '\0';		/* tie off A-D-L */    routeend = string;		/* remember in case need to put back */  }				/* parse address spec */  if (!(adr = rfc822_parse_addrspec (++string,ret,defaulthost))) {    if (adl) *routeend = ':';	/* put colon back since parse barfed */    return NIL;  }				/* have an A-D-L? */  if (adl) adr->adl = cpystr (adl);  if (*ret) if (**ret == '>') {	/* make sure terminated OK */    ++*ret;			/* skip past the broket */    rfc822_skipws (ret);	/* flush trailing WS */    if (!**ret) *ret = NIL;	/* wipe pointer if at end of string */    return adr;			/* return the address */  }  sprintf (tmp,"Unterminated mailbox: %.80s@%.80s",adr->mailbox,	   *adr->host == '@' ? "<null>" : adr->host);  mm_log (tmp,PARSE);  adr->next = mail_newaddr ();  adr->next->mailbox = cpystr ("MISSING_MAILBOX_TERMINATOR");  adr->next->host = cpystr (errhst);  return adr;			/* return the address */}/* Parse RFC822 address-spec * Accepts: string pointer *	    pointer to string pointer to update *	    default host * Returns: address * * Updates string pointer */ADDRESS *rfc822_parse_addrspec (char *string,char **ret,char *defaulthost){  ADDRESS *adr;  char *end;  char c,*s,*t;  if (!string) return NIL;	/* no string */  rfc822_skipws (&string);	/* flush leading whitespace */  if (!*string) return NIL;	/* empty string */				/* find end of mailbox */  if (!(end = rfc822_parse_word (string,NIL))) return NIL;  adr = mail_newaddr ();	/* create address block */  c = *end;			/* remember delimiter */  *end = '\0';			/* tie off mailbox */				/* copy mailbox */  adr->mailbox = rfc822_cpy (string);  *end = c;			/* restore delimiter */  t = end;			/* remember end of mailbox for no host case */  rfc822_skipws (&end);		/* skip whitespace */  if (*end == '@') {		/* have host name? */    ++end;			/* skip delimiter */    rfc822_skipws (&end);	/* skip whitespace */    if (*end == '[') {		/* domain literal? */      string = end;		/* start of domain literal */      if (end = rfc822_parse_word (string + 1,"]\\")) {	size_t len = ++end - string;	strncpy (adr->host = (char *) fs_get (len + 1),string,len);	adr->host[len] = '\0';	/* tie off literal */      }      else {	mm_log ("Invalid domain literal after @",PARSE);	adr->host = cpystr (errhst);      }    }    				/* search for end of host */    else if (end = rfc822_parse_word ((string = end),wspecials)) {      c = *end;			/* remember delimiter */      *end = '\0';		/* tie off host */				/* copy host */      adr->host = rfc822_cpy (string);      *end = c;			/* restore delimiter */    }    else {      mm_log ("Missing or invalid host name after @",PARSE);      adr->host = cpystr (errhst);    }  }  else end = t;			/* make person name default start after mbx */				/* default host if missing */  if (!adr->host) adr->host = cpystr (defaulthost);  if (end && !adr->personal) {	/* try person name in comments if missing */    while (*end == ' ') ++end;	/* see if we can find a person name here */    if ((*end == '(') && (s = rfc822_skip_comment (&end,LONGT)) && strlen (s))      adr->personal = rfc822_cpy (s);    rfc822_skipws (&end);	/* skip any other WS in the normal way */  }				/* set return to end pointer */  *ret = (end && *end) ? end : NIL;  return adr;			/* return the address we got */}/* Parse RFC822 phrase * Accepts: string pointer * Returns: pointer to end of phrase */char *rfc822_parse_phrase (char *s){  char *curpos;  if (!s) return NIL;		/* no-op if no string */				/* find first word of phrase */  curpos = rfc822_parse_word (s,NIL);  if (!curpos) return NIL;	/* no words means no phrase */  if (!*curpos) return curpos;	/* check if string ends with word */  s = curpos;			/* sniff past the end of this word and WS */  rfc822_skipws (&s);		/* skip whitespace */				/* recurse to see if any more */  return (s = rfc822_parse_phrase (s)) ? s : curpos;}/* Parse RFC822 word * Accepts: string pointer * Returns: pointer to end of word */char *rfc822_parse_word (char *s,const char *delimiters){  char *st,*str;  if (!s) return NIL;		/* no string */  rfc822_skipws (&s);		/* flush leading whitespace */  if (!*s) return NIL;		/* empty string */				/* default delimiters to standard */  if (!delimiters) delimiters = wspecials;  str = s;			/* hunt pointer for strpbrk */  while (T) {			/* look for delimiter */    if (!(st = strpbrk (str,delimiters))) {      while (*s) ++s;		/* no delimiter, hunt for end */      return s;			/* return it */    }    switch (*st) {		/* dispatch based on delimiter */    case '"':			/* quoted string */				/* look for close quote */      while (*++st != '"') switch (*st) {      case '\0':		/* unbalanced quoted string */	return NIL;		/* sick sick sick */      case '\\':		/* quoted character */	if (!*++st) return NIL;	/* skip the next character */      default:			/* ordinary character */	break;			/* no special action */      }      str = ++st;		/* continue parse */      break;    case '\\':			/* quoted character */      /* This is wrong; a quoted-pair can not be part of a word.  However,       * domain-literal is parsed as a word and quoted-pairs can be used       * *there*.  Either way, it's pretty pathological.       */      if (st[1]) {		/* not on NUL though... */	str = st + 2;		/* skip quoted character and go on */	break;      }    default:			/* found a word delimiter */      return (st == s) ? NIL : st;    }  }}/* Copy an RFC822 format string * Accepts: string * Returns: copy of string */char *rfc822_cpy (char *src){				/* copy and unquote */  return rfc822_quote (cpystr (src));}/* Unquote an RFC822 format string * Accepts: string * Returns: string */char *rfc822_quote (char *src){  char *ret = src;  if (strpbrk (src,"\\\"")) {	/* any quoting in string? */    char *dst = ret;    while (*src) {		/* copy string */      if (*src == '\"') src++;	/* skip double quote entirely */      else {	if (*src == '\\') src++;/* skip over single quote, copy next always */	*dst++ = *src++;	/* copy character */      }    }    *dst = '\0';		/* tie off string */  }  return ret;			/* return our string */}/* Copy address list * Accepts: address list * Returns: address list */ADDRESS *rfc822_cpy_adr (ADDRESS *adr){  ADDRESS *dadr;  ADDRESS *ret = NIL;  ADDRESS *prev = NIL;  while (adr) {			/* loop while there's still an MAP adr */    dadr = mail_newaddr ();	/* instantiate a new address */    if (!ret) ret = dadr;	/* note return */    if (prev) prev->next = dadr;/* tie on to the end of any previous */    dadr->personal = cpystr (adr->personal);    dadr->adl = cpystr (adr->adl);    dadr->mailbox = cpystr (adr->mailbox);    dadr->host = cpystr (adr->host);    prev = dadr;		/* this is now the previous */    adr = adr->next;		/* go to next address in list */  }  return (ret);			/* return the MTP address list */}/* Skips RFC822 whitespace * Accepts: pointer to string pointer */void rfc822_skipws (char **s){  while (T) {    if (**s == ' ') ++*s;	/* skip space */    else if ((**s != '(') || !rfc822_skip_comment (s,(long) NIL)) return;  }}/* Skips RFC822 comment * Accepts: pointer to string pointer *	    trim flag * Returns: pointer to first non-blank character of comment */char *rfc822_skip_comment (char **s,long trim){  char *ret,tmp[MAILTMPLEN];  char *s1 = *s;  char *t = NIL;				/* skip past whitespace */  for (ret = ++s1; *ret == ' '; ret++);  do switch (*s1) {		/* get character of comment */  case '(':			/* nested comment? */    if (!rfc822_skip_comment (&s1,(long) NIL)) return NIL;    t = --s1;			/* last significant char at end of comment */    break;  case ')':			/* end of comment? */    *s = ++s1;			/* skip past end of comment */    if (trim) {			/* if level 0, must trim */      if (t) t[1] = '\0';	/* tie off comment string */      else *ret = '\0';		/* empty comment */    }    return ret;  case '\\':			/* quote next character? */    if (*++s1) {		/* next character non-null? */      t = s1;			/* update last significant character pointer */      break;			/* all OK */    }  case '\0':			/* end of string */    sprintf (tmp,"Unterminated comment: %.80s",*s);    mm_log (tmp,PARSE);    **s = '\0';			/* nuke duplicate messages in case reparse */    return NIL;			/* this is wierd if it happens */  case ' ':			/* whitespace isn't significant */    break;  default:			/* random character */    t = s1;			/* update last significant character pointer */    break;  } while (s1++);  return NIL;			/* impossible, but pacify lint et al */}/* Body contents utility and encoding/decoding routines *//* Output RFC 822 message * Accepts: temporary buffer *	    envelope *	    body *	    I/O routine *	    stream for I/O routine *	    non-zero if 8-bit output desired * Returns: T if successful, NIL if failure */long rfc822_output (char *t,ENVELOPE *env,BODY *body,soutr_t f,void *s,		    long ok8bit){  rfc822out_t r822o = (rfc822out_t) mail_parameters (NIL,GET_RFC822OUTPUT,NIL);				/* call external RFC822 output generator */  if (r822o) return (*r822o) (t,env,body,f,s,ok8bit);				/* encode body as necessary */  if (ok8bit) rfc822_encode_body_8bit (env,body);  else rfc822_encode_body_7bit (env,body);  rfc822_header (t,env,body);	/* build RFC822 header */				/* output header and body */  return (*f) (s,t) && (body ? rfc822_output_body (body,f,s) : T);}/* Encode a body for 7BIT transmittal * Accepts: envelope *	    body */void rfc822_encode_body_7bit (ENVELOPE *env,BODY *body){  void *f;  PART *part;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av高清久久久| 国产精品免费视频一区| 国产精品高潮呻吟久久| 婷婷一区二区三区| 成人激情视频网站| 日韩欧美国产不卡| 一区二区三区欧美亚洲| 国产精品中文字幕日韩精品 | 亚洲综合在线五月| 国产精品99久久久| 91精品国产全国免费观看| 成人欧美一区二区三区黑人麻豆| 久久成人久久爱| 欧美日韩一区高清| 亚洲免费在线看| 成人小视频免费在线观看| 欧美成人a视频| 日韩精品一区第一页| 日本乱码高清不卡字幕| 亚洲欧洲精品成人久久奇米网| 国产乱子伦视频一区二区三区 | 在线观看91精品国产入口| 中文字幕乱码亚洲精品一区| 国产一区在线不卡| 精品国产一二三区| 久久精品999| 欧美一区二区网站| 五月天视频一区| 精品视频色一区| 亚洲gay无套男同| 欧美日韩国产一二三| 性做久久久久久免费观看欧美| 欧美色图在线观看| 亚洲综合在线免费观看| 欧美日韩一区二区在线观看视频| 亚洲黄色性网站| 欧美天堂一区二区三区| 亚洲国产精品一区二区www在线| 在线观看亚洲专区| 亚洲一区二区三区四区在线观看| 在线观看av一区二区| 亚洲va国产va欧美va观看| 欧美一区二区三区在| 久久精品久久精品| 久久精品无码一区二区三区| 成人app下载| 亚洲一区二区三区免费视频| 666欧美在线视频| 国产一区二区调教| 国产精品久久久久影视| 色综合天天综合网天天看片| 一区二区三区电影在线播| 欧美老女人在线| 国产在线精品免费| 成人欧美一区二区三区视频网页| 欧美性xxxxxxxx| 久久99精品一区二区三区三区| 久久久久久免费网| 91在线无精精品入口| 久久综合久久久久88| 秋霞午夜鲁丝一区二区老狼| 精品成人在线观看| 91在线观看成人| 日韩中文欧美在线| 国产欧美一区二区三区在线看蜜臀| av一区二区不卡| 天堂一区二区在线| 欧美国产成人精品| 欧美顶级少妇做爰| 成人a区在线观看| 免费看欧美女人艹b| 中文字幕视频一区二区三区久| 欧美日韩高清影院| 国产成人午夜视频| 舔着乳尖日韩一区| 国产精品色婷婷| 6080国产精品一区二区| 国产福利一区在线观看| 亚洲电影一级黄| 国产日韩成人精品| 日韩欧美黄色影院| 色综合久久久久久久久| 激情六月婷婷综合| 亚洲一区二区影院| 国产视频一区不卡| 日韩亚洲欧美中文三级| 一本久久a久久精品亚洲| 国产在线精品一区二区三区不卡 | 国产农村妇女毛片精品久久麻豆 | 9久草视频在线视频精品| 日本欧美一区二区| 亚洲精品综合在线| 国产精品素人一区二区| 日韩欧美亚洲国产另类| 在线观看亚洲专区| 色综合av在线| 不卡av免费在线观看| 国产盗摄精品一区二区三区在线 | 亚洲一区二区四区蜜桃| 国产精品久久久久一区二区三区 | 一区二区三区欧美日| 国产亚洲欧美在线| 日韩欧美一区电影| 91精品国产综合久久久蜜臀粉嫩| 色妹子一区二区| www.亚洲国产| 国产69精品久久777的优势| 久久99国产精品久久| 蜜桃一区二区三区在线| 午夜精品久久一牛影视| 亚洲一区在线观看免费| 亚洲综合在线五月| 一区二区三区国产精华| 亚洲精品日韩一| 一区二区在线观看不卡| 一区二区三区在线影院| 一区二区成人在线视频| 一区二区三区在线高清| 亚洲电影一级片| 日韩中文字幕区一区有砖一区 | 日韩欧美一区二区久久婷婷| 91麻豆精品国产91久久久资源速度 | 日韩高清不卡一区| 日韩精品每日更新| 麻豆久久久久久久| 国产一区二区在线看| 国产成人夜色高潮福利影视| 福利一区在线观看| 91亚洲精品一区二区乱码| 91偷拍与自偷拍精品| 91在线精品秘密一区二区| 色哟哟在线观看一区二区三区| 色视频一区二区| 欧美一区二区黄| 欧美国产日本视频| 亚洲精品视频在线观看免费| 午夜一区二区三区视频| 美女看a上一区| 成人免费黄色在线| 91高清在线观看| 日韩欧美久久久| 国产精品网站导航| 亚洲精品成人天堂一二三| 五月天激情综合| 国产精品一区二区x88av| 99久久久无码国产精品| 欧美日韩激情一区二区| 26uuu欧美| 亚洲综合激情网| 国产一区在线观看视频| 日本高清视频一区二区| 日韩一区二区在线观看视频| 亚洲国产精品二十页| 亚洲国产综合在线| 国产成人精品免费视频网站| 欧美性猛交xxxx黑人交| 久久久国产午夜精品| 亚洲综合偷拍欧美一区色| 精品亚洲免费视频| 91欧美一区二区| 久久夜色精品一区| 一区二区欧美视频| 国产成人精品一区二区三区四区| 色哦色哦哦色天天综合| 久久精品人人做人人爽人人| 亚洲一区自拍偷拍| 成人h版在线观看| 欧美成人精精品一区二区频| 一区二区三区四区乱视频| 国产成人综合视频| 欧美一区二区黄色| 一区二区三区在线不卡| www.在线成人| 久久精品欧美一区二区三区不卡| 亚洲第一狼人社区| 91丝袜国产在线播放| 国产亚洲女人久久久久毛片| 日本美女一区二区| 欧美日韩一二三区| 亚洲精品日产精品乱码不卡| 成人激情小说网站| 久久午夜色播影院免费高清| 婷婷成人激情在线网| 欧美在线高清视频| 亚洲欧美另类久久久精品2019| 大白屁股一区二区视频| 欧美成人福利视频| 美女一区二区在线观看| 欧美日韩成人综合| 亚洲午夜激情网站| 欧美亚洲国产一卡| 亚洲另类在线制服丝袜| 91免费看`日韩一区二区| 亚洲国产精品99久久久久久久久| 久久99精品久久久久久| 日韩欧美资源站| 久久成人免费网| 日韩精品一区二区三区四区 | 天堂资源在线中文精品| 欧美日本不卡视频|