imapext-2007

diff src/osdep/tops-20/dummyt20.c @ 0:ada5e610ab86

imap-2007e
author yuuji@gentei.org
date Mon, 14 Sep 2009 15:17:45 +0900
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/osdep/tops-20/dummyt20.c	Mon Sep 14 15:17:45 2009 +0900
     1.3 @@ -0,0 +1,294 @@
     1.4 +/* ========================================================================
     1.5 + * Copyright 1988-2006 University of Washington
     1.6 + *
     1.7 + * Licensed under the Apache License, Version 2.0 (the "License");
     1.8 + * you may not use this file except in compliance with the License.
     1.9 + * You may obtain a copy of the License at
    1.10 + *
    1.11 + *     http://www.apache.org/licenses/LICENSE-2.0
    1.12 + *
    1.13 + * 
    1.14 + * ========================================================================
    1.15 + */
    1.16 +
    1.17 +/*
    1.18 + * Program:	Dummy routines for TOPS-20
    1.19 + *
    1.20 + * Author:	Mark Crispin
    1.21 + *		Networks and Distributed Computing
    1.22 + *		Computing & Communications
    1.23 + *		University of Washington
    1.24 + *		Administration Building, AG-44
    1.25 + *		Seattle, WA  98195
    1.26 + *		Internet: MRC@CAC.Washington.EDU
    1.27 + *
    1.28 + * Date:	13 June 1995
    1.29 + * Last Edited:	30 August 2006
    1.30 + */
    1.31 +
    1.32 +
    1.33 +#include <ctype.h>
    1.34 +#include <stdio.h>
    1.35 +#include "mail.h"
    1.36 +#include "osdep.h"
    1.37 +#include "dummy.h"
    1.38 +#include "misc.h"
    1.39 +
    1.40 +/* Function prototypes */
    1.41 +
    1.42 +DRIVER *dummy_valid (char *name);
    1.43 +void *dummy_parameters (long function,void *value);
    1.44 +MAILSTREAM *dummy_open (MAILSTREAM *stream);
    1.45 +void dummy_close (MAILSTREAM *stream,long options);
    1.46 +long dummy_ping (MAILSTREAM *stream);
    1.47 +void dummy_check (MAILSTREAM *stream);
    1.48 +long dummy_expunge (MAILSTREAM *stream,char *sequence,long options);
    1.49 +long dummy_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options);
    1.50 +long dummy_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data);
    1.51 +
    1.52 +/* Dummy routines */
    1.53 +
    1.54 +
    1.55 +/* Driver dispatch used by MAIL */
    1.56 +
    1.57 +DRIVER dummydriver = {
    1.58 +  "dummy",			/* driver name */
    1.59 +  DR_LOCAL|DR_MAIL,		/* driver flags */
    1.60 +  (DRIVER *) NIL,		/* next driver */
    1.61 +  dummy_valid,			/* mailbox is valid for us */
    1.62 +  dummy_parameters,		/* manipulate parameters */
    1.63 +  dummy_scan,			/* scan mailboxes */
    1.64 +  dummy_list,			/* list mailboxes */
    1.65 +  dummy_lsub,			/* list subscribed mailboxes */
    1.66 +  NIL,				/* subscribe to mailbox */
    1.67 +  NIL,				/* unsubscribe from mailbox */
    1.68 +  dummy_create,			/* create mailbox */
    1.69 +  dummy_delete,			/* delete mailbox */
    1.70 +  dummy_rename,			/* rename mailbox */
    1.71 +  mail_status_default,		/* status of mailbox */
    1.72 +  dummy_open,			/* open mailbox */
    1.73 +  dummy_close,			/* close mailbox */
    1.74 +  NIL,				/* fetch message "fast" attributes */
    1.75 +  NIL,				/* fetch message flags */
    1.76 +  NIL,				/* fetch overview */
    1.77 +  NIL,				/* fetch message structure */
    1.78 +  NIL,				/* fetch header */
    1.79 +  NIL,				/* fetch text */
    1.80 +  NIL,				/* fetch message data */
    1.81 +  NIL,				/* unique identifier */
    1.82 +  NIL,				/* message number from UID */
    1.83 +  NIL,				/* modify flags */
    1.84 +  NIL,				/* per-message modify flags */
    1.85 +  NIL,				/* search for message based on criteria */
    1.86 +  NIL,				/* sort messages */
    1.87 +  NIL,				/* thread messages */
    1.88 +  dummy_ping,			/* ping mailbox to see if still alive */
    1.89 +  dummy_check,			/* check for new messages */
    1.90 +  dummy_expunge,		/* expunge deleted messages */
    1.91 +  dummy_copy,			/* copy messages to another mailbox */
    1.92 +  dummy_append,			/* append string message to mailbox */
    1.93 +  NIL				/* garbage collect stream */
    1.94 +};
    1.95 +
    1.96 +
    1.97 +				/* prototype stream */
    1.98 +MAILSTREAM dummyproto = {&dummydriver};
    1.99 +
   1.100 +/* Dummy validate mailbox
   1.101 + * Accepts: mailbox name
   1.102 + * Returns: our driver if name is valid, NIL otherwise
   1.103 + */
   1.104 +
   1.105 +DRIVER *dummy_valid (char *name)
   1.106 +{
   1.107 +				/* must be valid local mailbox */
   1.108 +  return (name && *name && (*name != '{') && !compare_cstring (name,"INBOX")) ?
   1.109 +    &dummydriver : NIL;
   1.110 +}
   1.111 +
   1.112 +
   1.113 +/* Dummy manipulate driver parameters
   1.114 + * Accepts: function code
   1.115 + *	    function-dependent value
   1.116 + * Returns: function-dependent return value
   1.117 + */
   1.118 +
   1.119 +void *dummy_parameters (long function,void *value)
   1.120 +{
   1.121 +  return NIL;
   1.122 +}
   1.123 +
   1.124 +/* Dummy scan mailboxes
   1.125 + * Accepts: mail stream
   1.126 + *	    reference
   1.127 + *	    pattern to search
   1.128 + *	    string to scan
   1.129 + */
   1.130 +
   1.131 +void dummy_scan (MAILSTREAM *stream,char *ref,char *pat,char *contents)
   1.132 +{
   1.133 +				/* return silently */
   1.134 +}
   1.135 +
   1.136 +
   1.137 +/* Dummy list mailboxes
   1.138 + * Accepts: mail stream
   1.139 + *	    reference
   1.140 + *	    pattern to search
   1.141 + */
   1.142 +
   1.143 +void dummy_list (MAILSTREAM *stream,char *ref,char *pat)
   1.144 +{
   1.145 +				/* return silently */
   1.146 +}
   1.147 +
   1.148 +
   1.149 +/* Dummy list subscribed mailboxes
   1.150 + * Accepts: mail stream
   1.151 + *	    reference
   1.152 + *	    pattern to search
   1.153 + */
   1.154 +
   1.155 +void dummy_lsub (MAILSTREAM *stream,char *ref,char *pat)
   1.156 +{
   1.157 +				/* return silently */
   1.158 +}
   1.159 +
   1.160 +/* Dummy create mailbox
   1.161 + * Accepts: mail stream
   1.162 + *	    mailbox name to create
   1.163 + *	    driver type to use
   1.164 + * Returns: T on success, NIL on failure
   1.165 + */
   1.166 +
   1.167 +long dummy_create (MAILSTREAM *stream,char *mailbox)
   1.168 +{
   1.169 +  return NIL;			/* always fails */
   1.170 +}
   1.171 +
   1.172 +
   1.173 +/* Dummy delete mailbox
   1.174 + * Accepts: mail stream
   1.175 + *	    mailbox name to delete
   1.176 + * Returns: T on success, NIL on failure
   1.177 + */
   1.178 +
   1.179 +long dummy_delete (MAILSTREAM *stream,char *mailbox)
   1.180 +{
   1.181 +  return NIL;			/* always fails */
   1.182 +}
   1.183 +
   1.184 +
   1.185 +/* Mail rename mailbox
   1.186 + * Accepts: mail stream
   1.187 + *	    old mailbox name
   1.188 + *	    new mailbox name
   1.189 + * Returns: T on success, NIL on failure
   1.190 + */
   1.191 +
   1.192 +long dummy_rename (MAILSTREAM *stream,char *old,char *newname)
   1.193 +{
   1.194 +  return NIL;			/* always fails */
   1.195 +}
   1.196 +
   1.197 +/* Dummy open
   1.198 + * Accepts: stream to open
   1.199 + * Returns: stream on success, NIL on failure
   1.200 + */
   1.201 +
   1.202 +MAILSTREAM *dummy_open (MAILSTREAM *stream)
   1.203 +{
   1.204 +  char tmp[MAILTMPLEN];
   1.205 +				/* OP_PROTOTYPE call or silence */
   1.206 +  if (!stream || stream->silent) return NIL;
   1.207 +  if (compare_cstring (stream->mailbox,"INBOX")) {
   1.208 +    sprintf (tmp,"Not a mailbox: %s",stream->mailbox);
   1.209 +    mm_log (tmp,ERROR);
   1.210 +    return NIL;			/* always fails */
   1.211 +  }
   1.212 +  if (!stream->silent) {	/* only if silence not requested */
   1.213 +    mail_exists (stream,0);	/* say there are 0 messages */
   1.214 +    mail_recent (stream,0);
   1.215 +    stream->uid_validity = time (0);
   1.216 +  }
   1.217 +  stream->inbox = T;		/* note that it's an INBOX */
   1.218 +  return stream;		/* return success */
   1.219 +}
   1.220 +
   1.221 +
   1.222 +/* Dummy close
   1.223 + * Accepts: MAIL stream
   1.224 + *	    options
   1.225 + */
   1.226 +
   1.227 +void dummy_close (MAILSTREAM *stream,long options)
   1.228 +{
   1.229 +				/* return silently */
   1.230 +}
   1.231 +
   1.232 +/* Dummy ping mailbox
   1.233 + * Accepts: MAIL stream
   1.234 + * Returns: T if stream alive, else NIL
   1.235 + * No-op for readonly files, since read/writer can expunge it from under us!
   1.236 + */
   1.237 +
   1.238 +long dummy_ping (MAILSTREAM *stream)
   1.239 +{
   1.240 +  return T;
   1.241 +}
   1.242 +
   1.243 +
   1.244 +/* Dummy check mailbox
   1.245 + * Accepts: MAIL stream
   1.246 + * No-op for readonly files, since read/writer can expunge it from under us!
   1.247 + */
   1.248 +
   1.249 +void dummy_check (MAILSTREAM *stream)
   1.250 +{
   1.251 +  dummy_ping (stream);		/* invoke ping */
   1.252 +}
   1.253 +
   1.254 +
   1.255 +/* Dummy expunge mailbox
   1.256 + * Accepts: MAIL stream
   1.257 + *	    sequence to expunge if non-NIL
   1.258 + *	    expunge options
   1.259 + * Returns: T, always
   1.260 + */
   1.261 +
   1.262 +long dummy_expunge (MAILSTREAM *stream,char *sequence,long options)
   1.263 +{
   1.264 +  return LONGT;
   1.265 +}
   1.266 +
   1.267 +/* Dummy copy message(s)
   1.268 + * Accepts: MAIL stream
   1.269 + *	    sequence
   1.270 + *	    destination mailbox
   1.271 + *	    options
   1.272 + * Returns: T if copy successful, else NIL
   1.273 + */
   1.274 +
   1.275 +long dummy_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options)
   1.276 +{
   1.277 +  if ((options & CP_UID) ? mail_uid_sequence (stream,sequence) :
   1.278 +      mail_sequence (stream,sequence)) fatal ("Impossible dummy_copy");
   1.279 +  return NIL;
   1.280 +}
   1.281 +
   1.282 +
   1.283 +/* Dummy append message string
   1.284 + * Accepts: mail stream
   1.285 + *	    destination mailbox
   1.286 + *	    append callback function
   1.287 + *	    data for callback
   1.288 + * Returns: T on success, NIL on failure
   1.289 + */
   1.290 +
   1.291 +long dummy_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data)
   1.292 +{
   1.293 +  char tmp[MAILTMPLEN];
   1.294 +  sprintf (tmp,"Can't append to %s",mailbox);
   1.295 +  mm_log (tmp,ERROR);		/* pass up error */
   1.296 +  return NIL;			/* always fails */
   1.297 +}

UW-IMAP'd extensions by yuuji