⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imap4r1.h

📁 Vovida 社区开源的 SIP 协议源码
💻 H
字号:
/* * Program:	Interactive Mail Access Protocol 4rev1 (IMAP4R1) routines * * 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:	14 October 1988 * Last Edited:	13 October 2000 * * 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 2000 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. * *//* Parameters */#define MAXLOGINTRIALS 1	/* maximum number of login trials */#define IMAPLOOKAHEAD 20	/* envelope lookahead */#define IMAPUIDLOOKAHEAD 1000	/* UID lookahead */#define IMAPTCPPORT (long) 143	/* assigned TCP contact port *//* Parsed reply message from imap_reply */typedef struct imap_parsed_reply {  char *line;			/* original reply string pointer */  char *tag;			/* command tag this reply is for */  char *key;			/* reply keyword */  char *text;			/* subsequent text */} IMAPPARSEDREPLY;#define IMAPTMPLEN 16*MAILTMPLEN#define MAXAUTHENTICATORS 8/* IMAP4 I/O stream local data */	typedef struct imap_local {  NETSTREAM *netstream;		/* TCP I/O stream */  IMAPPARSEDREPLY reply;	/* last parsed reply */  MAILSTATUS *stat;		/* status to fill in */  unsigned int imap4rev1 : 1;	/* server is IMAP4rev1 */  unsigned int imap4 : 1;	/* server is IMAP4 */  unsigned int imap2bis : 1;	/* server is IMAP2bis */  unsigned int rfc1176 : 1;	/* server is RFC-1176 IMAP2 */  struct {    unsigned int status : 1;	/* server has STATUS */    unsigned int acl : 1;	/* server has ACL */    unsigned int quota : 1;	/* server has QUOTA */    unsigned int namespace :1;	/* server has NAMESPACE */    unsigned int mbx_ref : 1;	/* server has mailbox referrals */    unsigned int log_ref : 1;	/* server has login referrals */				/* server has multi-APPEND */    unsigned int multiappend : 1;    unsigned int scan : 1;	/* server has SCAN */    unsigned int sort : 1;	/* server has SORT */    unsigned int authanon : 1;	/* server has anonymous authentication */				/* supported authenticators */    unsigned int auth : MAXAUTHENTICATORS;  } use;  unsigned int uidsearch : 1;	/* UID searching */  unsigned int byeseen : 1;	/* saw a BYE response */				/* don't do LOGIN command */  unsigned int logindisabled : 1;  unsigned int gotcapability : 1;				/* got implicit capabilities */  long authflags;		/* required flags for authenticators */  unsigned long sortsize;	/* sort return data size */  unsigned long *sortdata;	/* sort return data */  NAMESPACE **namespace;	/* namespace return data */  THREADNODE *threaddata;	/* thread return data */  THREADER *threader;		/* list of threaders */  char *referral;		/* last referral */  char *prefix;			/* find prefix */  char *user;			/* logged-in user */  char tmp[IMAPTMPLEN];		/* temporary buffer */} IMAPLOCAL;/* Convenient access to local data */#define LOCAL ((IMAPLOCAL *) stream->local)/* Has MULTIAPPEND extension (else done in client) */#define LEVELMULTIAPPEND(stream) ((IMAPLOCAL *) stream->local)->use.multiappend/* Has THREAD extension (else done in client) */#define LEVELTHREAD(stream) (((IMAPLOCAL *) stream->local)->threader ? T : NIL)/* Has SORT extension (else done in client) */#define LEVELSORT(stream) ((IMAPLOCAL *) stream->local)->use.sort/* Has SCAN extension */#define LEVELSCAN(stream) ((IMAPLOCAL *) stream->local)->use.scan/* Has QUOTA extension */#define LEVELQUOTA(stream) ((IMAPLOCAL *) stream->local)->use.quota/* Has ACL extension */#define LEVELACL(stream) ((IMAPLOCAL *) stream->local)->use.acl/* IMAP4rev1 level or better */#define LEVELIMAP4rev1(stream) ((IMAPLOCAL *) stream->local)->imap4rev1/* IMAP4 w/ STATUS level or better */#define LEVELSTATUS(stream) (((IMAPLOCAL *) stream->local)->imap4rev1 || \			     ((IMAPLOCAL *) stream->local)->use.status)/* IMAP4 level or better */#define LEVELIMAP4(stream) (((IMAPLOCAL *) stream->local)->imap4rev1 || \			    ((IMAPLOCAL *) stream->local)->imap4)/* IMAP4 RFC-1730 level */#define LEVEL1730(stream) ((IMAPLOCAL *) stream->local)->imap4/* IMAP2bis level or better */#define LEVELIMAP2bis(stream) ((IMAPLOCAL *) stream->local)->imap2bis/* IMAP2 RFC-1176 level or better */#define LEVEL1176(stream) ((IMAPLOCAL *) stream->local)->rfc1176/* Arguments to imap_send() */typedef struct imap_argument {  int type;			/* argument type */  void *text;			/* argument text */} IMAPARG;/* imap_send() argument types */#define ATOM 0#define NUMBER 1#define FLAGS 2#define ASTRING 3#define LITERAL 4#define LIST 5#define SEARCHPROGRAM 6#define SORTPROGRAM 7#define BODYTEXT 8#define BODYPEEK 9#define BODYCLOSE 10#define SEQUENCE 11#define LISTMAILBOX 12#define MULTIAPPEND 13#define SNLIST 14/* Function prototypes */DRIVER *imap_valid (char *name);void *imap_parameters (long function,void *value);void imap_scan (MAILSTREAM *stream,char *ref,char *pat,char *contents);void imap_list (MAILSTREAM *stream,char *ref,char *pat);void imap_lsub (MAILSTREAM *stream,char *ref,char *pat);void imap_list_work (MAILSTREAM *stream,char *cmd,char *ref,char *pat,		     char *contents);long imap_subscribe (MAILSTREAM *stream,char *mailbox);long imap_unsubscribe (MAILSTREAM *stream,char *mailbox);long imap_create (MAILSTREAM *stream,char *mailbox);long imap_delete (MAILSTREAM *stream,char *mailbox);long imap_rename (MAILSTREAM *stream,char *old,char *newname);long imap_manage (MAILSTREAM *stream,char *mailbox,char *command,char *arg2);long imap_status (MAILSTREAM *stream,char *mbx,long flags);MAILSTREAM *imap_open (MAILSTREAM *stream);IMAPPARSEDREPLY *imap_rimap (MAILSTREAM *stream,char *service,NETMBX *mb,			     char *usr,char *tmp);long imap_anon (MAILSTREAM *stream,char *tmp);long imap_auth (MAILSTREAM *stream,NETMBX *mb,char *tmp,char *usr);long imap_login (MAILSTREAM *stream,NETMBX *mb,char *tmp,char *usr);void *imap_challenge (void *stream,unsigned long *len);long imap_response (void *stream,char *s,unsigned long size);void imap_close (MAILSTREAM *stream,long options);void imap_fast (MAILSTREAM *stream,char *sequence,long flags);void imap_flags (MAILSTREAM *stream,char *sequence,long flags);long imap_overview (MAILSTREAM *stream,char *sequence,overview_t ofn);ENVELOPE *imap_structure (MAILSTREAM *stream,unsigned long msgno,BODY **body,			  long flags);long imap_msgdata (MAILSTREAM *stream,unsigned long msgno,char *section,		   unsigned long first,unsigned long last,STRINGLIST *lines,		   long flags);unsigned long imap_uid (MAILSTREAM *stream,unsigned long msgno);unsigned long imap_msgno (MAILSTREAM *stream,unsigned long uid);void imap_flag (MAILSTREAM *stream,char *sequence,char *flag,long flags);void imap_search (MAILSTREAM *stream,char *charset,SEARCHPGM *pgm,long flags);unsigned long *imap_sort (MAILSTREAM *stream,char *charset,SEARCHPGM *spg,			  SORTPGM *pgm,long flags);THREADNODE *imap_thread (MAILSTREAM *stream,char *type,char *charset,			 SEARCHPGM *spg,long flags);long imap_ping (MAILSTREAM *stream);void imap_check (MAILSTREAM *stream);void imap_expunge (MAILSTREAM *stream);long imap_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options);long imap_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data);long imap_append_single (MAILSTREAM *stream,char *mailbox,char *flags,			 char *date,STRING *message,imapreferral_t ir);void imap_gc (MAILSTREAM *stream,long gcflags);void imap_gc_body (BODY *body);long imap_setacl (MAILSTREAM *stream,char *mailbox,char *id,char *rights);long imap_deleteacl (MAILSTREAM *stream,char *mailbox,char *id);long imap_getacl (MAILSTREAM *stream,char *mailbox);long imap_listrights (MAILSTREAM *stream,char *mailbox,char *id);long imap_myrights (MAILSTREAM *stream,char *mailbox);long imap_acl_work (MAILSTREAM *stream,char *command,IMAPARG *args[]);long imap_setquota (MAILSTREAM *stream,char *qroot,STRINGLIST *limits);long imap_getquota (MAILSTREAM *stream,char *qroot);long imap_getquotaroot (MAILSTREAM *stream,char *mailbox);IMAPPARSEDREPLY *imap_send (MAILSTREAM *stream,char *cmd,IMAPARG *args[]);IMAPPARSEDREPLY *imap_sout (MAILSTREAM *stream,char *tag,char *base,char **s);long imap_soutr (MAILSTREAM *stream,char *string);IMAPPARSEDREPLY *imap_send_astring (MAILSTREAM *stream,char *tag,char **s,				    SIZEDTEXT *as,long wildok);IMAPPARSEDREPLY *imap_send_literal (MAILSTREAM *stream,char *tag,char **s,				    STRING *st);IMAPPARSEDREPLY *imap_send_spgm (MAILSTREAM *stream,char *tag,char **s,				 SEARCHPGM *pgm);void imap_send_sset (char **s,SEARCHSET *set);IMAPPARSEDREPLY *imap_send_slist (MAILSTREAM *stream,char *tag,char **s,				  char *name,STRINGLIST *list);void imap_send_sdate (char **s,char *name,unsigned short date);IMAPPARSEDREPLY *imap_reply (MAILSTREAM *stream,char *tag);IMAPPARSEDREPLY *imap_parse_reply (MAILSTREAM *stream,char *text);IMAPPARSEDREPLY *imap_fake (MAILSTREAM *stream,char *tag,char *text);long imap_OK (MAILSTREAM *stream,IMAPPARSEDREPLY *reply);void imap_parse_unsolicited (MAILSTREAM *stream,IMAPPARSEDREPLY *reply);void imap_parse_response (MAILSTREAM *stream,char *text,long errflg,long ntfy);NAMESPACE *imap_parse_namespace (MAILSTREAM *stream,char **txtptr,				 IMAPPARSEDREPLY *reply);THREADNODE *imap_parse_thread (char **txtptr);void imap_parse_header (MAILSTREAM *stream,ENVELOPE **env,SIZEDTEXT *hdr,			STRINGLIST *stl);void imap_parse_envelope (MAILSTREAM *stream,ENVELOPE **env,char **txtptr,			  IMAPPARSEDREPLY *reply);ADDRESS *imap_parse_adrlist (MAILSTREAM *stream,char **txtptr,			     IMAPPARSEDREPLY *reply);ADDRESS *imap_parse_address (MAILSTREAM *stream,char **txtptr,			     IMAPPARSEDREPLY *reply);void imap_parse_flags (MAILSTREAM *stream,MESSAGECACHE *elt,char **txtptr);unsigned long imap_parse_user_flag (MAILSTREAM *stream,char *flag);char *imap_parse_astring (MAILSTREAM *stream,char **txtptr,			  IMAPPARSEDREPLY *reply,unsigned long *len);char *imap_parse_string (MAILSTREAM *stream,char **txtptr,			 IMAPPARSEDREPLY *reply,GETS_DATA *md,			 unsigned long *len);void imap_parse_body (GETS_DATA *md,char *seg,char **txtptr,		      IMAPPARSEDREPLY *reply);long imap_cache (MAILSTREAM *stream,unsigned long msgno,char *seg,		 STRINGLIST *stl,SIZEDTEXT *text);void imap_parse_body_structure (MAILSTREAM *stream,BODY *body,char **txtptr,				IMAPPARSEDREPLY *reply);PARAMETER *imap_parse_body_parameter (MAILSTREAM *stream,char **txtptr,				      IMAPPARSEDREPLY *reply);void imap_parse_disposition (MAILSTREAM *stream,BODY *body,char **txtptr,			     IMAPPARSEDREPLY *reply);STRINGLIST *imap_parse_language (MAILSTREAM *stream,char **txtptr,				 IMAPPARSEDREPLY *reply);STRINGLIST *imap_parse_stringlist (MAILSTREAM *stream,char **txtptr,				   IMAPPARSEDREPLY *reply);void imap_parse_extension (MAILSTREAM *stream,char **txtptr,			   IMAPPARSEDREPLY *reply);void imap_parse_capabilities (MAILSTREAM *stream,char *t);char *imap_host (MAILSTREAM *stream);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -