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

📄 dummymac.c

📁 这是用C编写IMAP源代码
💻 C
字号:
/* * Program:	Dummy routines for Mac * * 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:	24 May 1993 * Last Edited:	5 March 2003 *  * The IMAP toolkit provided in this Distribution is * Copyright 1988-2003 University of Washington. * The full text of our legal notices is contained in the file called * CPYRIGHT, included with this Distribution. */#include <ctype.h>#include <stdio.h>#include "mail.h"#include "osdep.h"#include "dummy.h"#include "misc.h"/* Function prototypes */DRIVER *dummy_valid (char *name);void *dummy_parameters (long function,void *value);MAILSTREAM *dummy_open (MAILSTREAM *stream);void dummy_close (MAILSTREAM *stream,long options);long dummy_ping (MAILSTREAM *stream);void dummy_check (MAILSTREAM *stream);void dummy_expunge (MAILSTREAM *stream);long dummy_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options);long dummy_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data);/* Dummy routines *//* Driver dispatch used by MAIL */DRIVER dummydriver = {  "dummy",			/* driver name */  DR_LOCAL|DR_MAIL,		/* driver flags */  (DRIVER *) NIL,		/* next driver */  dummy_valid,			/* mailbox is valid for us */  dummy_parameters,		/* manipulate parameters */  dummy_scan,			/* scan mailboxes */  dummy_list,			/* list mailboxes */  dummy_lsub,			/* list subscribed mailboxes */  NIL,				/* subscribe to mailbox */  NIL,				/* unsubscribe from mailbox */  dummy_create,			/* create mailbox */  dummy_delete,			/* delete mailbox */  dummy_rename,			/* rename mailbox */  mail_status_default,		/* status of mailbox */  dummy_open,			/* open mailbox */  dummy_close,			/* close mailbox */  NIL,				/* fetch message "fast" attributes */  NIL,				/* fetch message flags */  NIL,				/* fetch overview */  NIL,				/* fetch message structure */  NIL,				/* fetch header */  NIL,				/* fetch text */  NIL,				/* fetch message data */  NIL,				/* unique identifier */  NIL,				/* message number from UID */  NIL,				/* modify flags */  NIL,				/* per-message modify flags */  NIL,				/* search for message based on criteria */  NIL,				/* sort messages */  NIL,				/* thread messages */  dummy_ping,			/* ping mailbox to see if still alive */  dummy_check,			/* check for new messages */  dummy_expunge,		/* expunge deleted messages */  dummy_copy,			/* copy messages to another mailbox */  dummy_append,			/* append string message to mailbox */  NIL				/* garbage collect stream */};				/* prototype stream */MAILSTREAM dummyproto = {&dummydriver};/* Dummy validate mailbox * Accepts: mailbox name * Returns: our driver if name is valid, NIL otherwise */DRIVER *dummy_valid (char *name){  char tmp[MAILTMPLEN];				/* must be valid local mailbox */  return (name && *name && (*name != '{') && !compare_cstring (name,"INBOX")) ?    &dummydriver : NIL;}/* Dummy manipulate driver parameters * Accepts: function code *	    function-dependent value * Returns: function-dependent return value */void *dummy_parameters (long function,void *value){  return NIL;}/* Dummy scan mailboxes * Accepts: mail stream *	    reference *	    pattern to search *	    string to scan */void dummy_scan (MAILSTREAM *stream,char *ref,char *pat,char *contents){				/* return silently */}/* Dummy list mailboxes * Accepts: mail stream *	    reference *	    pattern to search */void dummy_list (MAILSTREAM *stream,char *ref,char *pat){				/* return silently */}/* Dummy list subscribed mailboxes * Accepts: mail stream *	    reference *	    pattern to search */void dummy_lsub (MAILSTREAM *stream,char *ref,char *pat){				/* return silently */}/* Dummy create mailbox * Accepts: mail stream *	    mailbox name to create *	    driver type to use * Returns: T on success, NIL on failure */long dummy_create (MAILSTREAM *stream,char *mailbox){  return NIL;			/* always fails */}/* Dummy delete mailbox * Accepts: mail stream *	    mailbox name to delete * Returns: T on success, NIL on failure */long dummy_delete (MAILSTREAM *stream,char *mailbox){  return NIL;			/* always fails */}/* Mail rename mailbox * Accepts: mail stream *	    old mailbox name *	    new mailbox name * Returns: T on success, NIL on failure */long dummy_rename (MAILSTREAM *stream,char *old,char *newname){  return NIL;			/* always fails */}/* Dummy open * Accepts: stream to open * Returns: stream on success, NIL on failure */MAILSTREAM *dummy_open (MAILSTREAM *stream){  char tmp[MAILTMPLEN];				/* OP_PROTOTYPE call or silence */  if (!stream || stream->silent) return NIL;  if (compare_cstring (stream->mailbox,"INBOX")) {    sprintf (tmp,"Not a mailbox: %s",stream->mailbox);    mm_log (tmp,ERROR);    return NIL;			/* always fails */  }  if (!stream->silent) {	/* only if silence not requested */    mail_exists (stream,0);	/* say there are 0 messages */    mail_recent (stream,0);    stream->uid_validity = time (0);  }  stream->inbox = T;		/* note that it's an INBOX */  return stream;		/* return success */}/* Dummy close * Accepts: MAIL stream *	    options */void dummy_close (MAILSTREAM *stream,long options){				/* return silently */}/* Dummy ping mailbox * Accepts: MAIL stream * Returns: T if stream alive, else NIL * No-op for readonly files, since read/writer can expunge it from under us! */long dummy_ping (MAILSTREAM *stream){  return T;}/* Dummy check mailbox * Accepts: MAIL stream * No-op for readonly files, since read/writer can expunge it from under us! */void dummy_check (MAILSTREAM *stream){  dummy_ping (stream);		/* invoke ping */}/* Dummy expunge mailbox * Accepts: MAIL stream */void dummy_expunge (MAILSTREAM *stream){				/* return silently */}/* Dummy copy message(s) * Accepts: MAIL stream *	    sequence *	    destination mailbox *	    options * Returns: T if copy successful, else NIL */long dummy_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options){  if ((options & CP_UID) ? mail_uid_sequence (stream,sequence) :      mail_sequence (stream,sequence)) fatal ("Impossible dummy_copy");  return NIL;}/* Dummy append message string * Accepts: mail stream *	    destination mailbox *	    append callback function *	    data for callback * Returns: T on success, NIL on failure */long dummy_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data){  char tmp[MAILTMPLEN];  sprintf (tmp,"Can't append to %s",mailbox);  mm_log (tmp,ERROR);		/* pass up error */  return NIL;			/* always fails */}/* Dummy canonicalize name * Accepts: buffer to write name *	    reference *	    pattern * Returns: T if success, NIL if failure */long dummy_canonicalize (char *tmp,char *ref,char *pat){  if (*pat == '{' || (ref && (*ref == '{'))) return NIL;				/* write name with reference */  if (ref && *ref) sprintf (tmp,"%s%s",ref,pat);  else strcpy (tmp,pat);	/* ignore reference, only need mailbox name */  return T;}

⌨️ 快捷键说明

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