imapext-2007

diff src/osdep/wce/dummywce.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/wce/dummywce.c	Mon Sep 14 15:17:45 2009 +0900
     1.3 @@ -0,0 +1,301 @@
     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 WCE
    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:	24 May 1993
    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 <errno.h>
    1.36 +#include <fcntl.h>
    1.37 +#include <direct.h>
    1.38 +#include "mail.h"
    1.39 +#include "osdep.h"
    1.40 +#include <sys\stat.h>
    1.41 +#include <dos.h>
    1.42 +#include "dummy.h"
    1.43 +#include "misc.h"
    1.44 +
    1.45 +/* Function prototypes */
    1.46 +
    1.47 +DRIVER *dummy_valid (char *name);
    1.48 +void *dummy_parameters (long function,void *value);
    1.49 +MAILSTREAM *dummy_open (MAILSTREAM *stream);
    1.50 +void dummy_close (MAILSTREAM *stream,long options);
    1.51 +long dummy_ping (MAILSTREAM *stream);
    1.52 +void dummy_check (MAILSTREAM *stream);
    1.53 +long dummy_expunge (MAILSTREAM *stream,char *sequence,long options);
    1.54 +long dummy_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options);
    1.55 +long dummy_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data);
    1.56 +
    1.57 +/* Dummy routines */
    1.58 +
    1.59 +
    1.60 +/* Driver dispatch used by MAIL */
    1.61 +
    1.62 +DRIVER dummydriver = {
    1.63 +  "dummy",			/* driver name */
    1.64 +  DR_LOCAL|DR_MAIL,		/* driver flags */
    1.65 +  (DRIVER *) NIL,		/* next driver */
    1.66 +  dummy_valid,			/* mailbox is valid for us */
    1.67 +  dummy_parameters,		/* manipulate parameters */
    1.68 +  dummy_scan,			/* scan mailboxes */
    1.69 +  dummy_list,			/* list mailboxes */
    1.70 +  dummy_lsub,			/* list subscribed mailboxes */
    1.71 +  NIL,				/* subscribe to mailbox */
    1.72 +  NIL,				/* unsubscribe from mailbox */
    1.73 +  dummy_create,			/* create mailbox */
    1.74 +  dummy_delete,			/* delete mailbox */
    1.75 +  dummy_rename,			/* rename mailbox */
    1.76 +  mail_status_default,		/* status of mailbox */
    1.77 +  dummy_open,			/* open mailbox */
    1.78 +  dummy_close,			/* close mailbox */
    1.79 +  NIL,				/* fetch message "fast" attributes */
    1.80 +  NIL,				/* fetch message flags */
    1.81 +  NIL,				/* fetch overview */
    1.82 +  NIL,				/* fetch message structure */
    1.83 +  NIL,				/* fetch header */
    1.84 +  NIL,				/* fetch text */
    1.85 +  NIL,				/* fetch message data */
    1.86 +  NIL,				/* unique identifier */
    1.87 +  NIL,				/* message number from UID */
    1.88 +  NIL,				/* modify flags */
    1.89 +  NIL,				/* per-message modify flags */
    1.90 +  NIL,				/* search for message based on criteria */
    1.91 +  NIL,				/* sort messages */
    1.92 +  NIL,				/* thread messages */
    1.93 +  dummy_ping,			/* ping mailbox to see if still alive */
    1.94 +  dummy_check,			/* check for new messages */
    1.95 +  dummy_expunge,		/* expunge deleted messages */
    1.96 +  dummy_copy,			/* copy messages to another mailbox */
    1.97 +  dummy_append,			/* append string message to mailbox */
    1.98 +  NIL				/* garbage collect stream */
    1.99 +};
   1.100 +
   1.101 +
   1.102 +				/* prototype stream */
   1.103 +MAILSTREAM dummyproto = {&dummydriver};
   1.104 +
   1.105 +				/* driver parameters */
   1.106 +static char *file_extension = NIL;
   1.107 +
   1.108 +/* Dummy validate mailbox
   1.109 + * Accepts: mailbox name
   1.110 + * Returns: our driver if name is valid, NIL otherwise
   1.111 + */
   1.112 +
   1.113 +DRIVER *dummy_valid (char *name)
   1.114 +{
   1.115 +  char *s,tmp[MAILTMPLEN];
   1.116 +  struct stat sbuf;
   1.117 +				/* must be valid local mailbox */
   1.118 +  return (name && *name && (*name != '{') &&
   1.119 +	  (s = mailboxfile (tmp,name)) && (!*s || !stat (s,&sbuf))) ?
   1.120 +	    &dummydriver : NIL;
   1.121 +}
   1.122 +
   1.123 +
   1.124 +/* Dummy manipulate driver parameters
   1.125 + * Accepts: function code
   1.126 + *	    function-dependent value
   1.127 + * Returns: function-dependent return value
   1.128 + */
   1.129 +
   1.130 +void *dummy_parameters (long function,void *value)
   1.131 +{
   1.132 +  return value;
   1.133 +}
   1.134 +
   1.135 +/* Dummy scan mailboxes
   1.136 + * Accepts: mail stream
   1.137 + *	    reference
   1.138 + *	    pattern to search
   1.139 + *	    string to scan
   1.140 + */
   1.141 +
   1.142 +void dummy_scan (MAILSTREAM *stream,char *ref,char *pat,char *contents)
   1.143 +{
   1.144 +				/* return silently */
   1.145 +}
   1.146 +
   1.147 +/* Dummy list mailboxes
   1.148 + * Accepts: mail stream
   1.149 + *	    reference
   1.150 + *	    pattern to search
   1.151 + */
   1.152 +
   1.153 +void dummy_list (MAILSTREAM *stream,char *ref,char *pat)
   1.154 +{
   1.155 +				/* return silently */
   1.156 +}
   1.157 +
   1.158 +
   1.159 +/* Dummy list subscribed mailboxes
   1.160 + * Accepts: mail stream
   1.161 + *	    pattern to search
   1.162 + */
   1.163 +
   1.164 +void dummy_lsub (MAILSTREAM *stream,char *ref,char *pat)
   1.165 +{
   1.166 +				/* return silently */
   1.167 +}
   1.168 +
   1.169 +/* Dummy create mailbox
   1.170 + * Accepts: mail stream
   1.171 + *	    mailbox name to create
   1.172 + * Returns: T on success, NIL on failure
   1.173 + */
   1.174 +
   1.175 +long dummy_create (MAILSTREAM *stream,char *mailbox)
   1.176 +{
   1.177 +  return NIL;			/* always fails */
   1.178 +}
   1.179 +
   1.180 +
   1.181 +/* Dummy delete mailbox
   1.182 + * Accepts: mail stream
   1.183 + *	    mailbox name to delete
   1.184 + * Returns: T on success, NIL on failure
   1.185 + */
   1.186 +
   1.187 +long dummy_delete (MAILSTREAM *stream,char *mailbox)
   1.188 +{
   1.189 +  return NIL;			/* always fails */
   1.190 +}
   1.191 +
   1.192 +
   1.193 +/* Mail rename mailbox
   1.194 + * Accepts: mail stream
   1.195 + *	    old mailbox name
   1.196 + *	    new mailbox name
   1.197 + * Returns: T on success, NIL on failure
   1.198 + */
   1.199 +
   1.200 +long dummy_rename (MAILSTREAM *stream,char *old,char *newname)
   1.201 +{
   1.202 +  return NIL;			/* always fails */
   1.203 +}
   1.204 +
   1.205 +/* Dummy open
   1.206 + * Accepts: stream to open
   1.207 + * Returns: stream on success, NIL on failure
   1.208 + */
   1.209 +
   1.210 +MAILSTREAM *dummy_open (MAILSTREAM *stream)
   1.211 +{
   1.212 +  char tmp[MAILTMPLEN];
   1.213 +				/* OP_PROTOTYPE call or silence */
   1.214 +  if (!stream || stream->silent) return NIL;
   1.215 +  if (compare_cstring (stream->mailbox,"INBOX")) {
   1.216 +    sprintf (tmp,"Not a mailbox: %s",stream->mailbox);
   1.217 +    mm_log (tmp,ERROR);
   1.218 +    return NIL;			/* always fails */
   1.219 +  }
   1.220 +  if (!stream->silent) {	/* only if silence not requested */
   1.221 +    mail_exists (stream,0);	/* say there are 0 messages */
   1.222 +    mail_recent (stream,0);
   1.223 +    stream->uid_validity = time (0);
   1.224 +  }
   1.225 +  stream->inbox = T;		/* note that it's an INBOX */
   1.226 +  return stream;		/* return success */
   1.227 +}
   1.228 +
   1.229 +
   1.230 +/* Dummy close
   1.231 + * Accepts: MAIL stream
   1.232 + *	    options
   1.233 + */
   1.234 +
   1.235 +void dummy_close (MAILSTREAM *stream,long options)
   1.236 +{
   1.237 +				/* return silently */
   1.238 +}
   1.239 +
   1.240 +/* Dummy ping mailbox
   1.241 + * Accepts: MAIL stream
   1.242 + * Returns: T if stream alive, else NIL
   1.243 + * No-op for readonly files, since read/writer can expunge it from under us!
   1.244 + */
   1.245 +
   1.246 +long dummy_ping (MAILSTREAM *stream)
   1.247 +{
   1.248 +  return T;
   1.249 +}
   1.250 +
   1.251 +
   1.252 +/* Dummy check mailbox
   1.253 + * Accepts: MAIL stream
   1.254 + * No-op for readonly files, since read/writer can expunge it from under us!
   1.255 + */
   1.256 +
   1.257 +void dummy_check (MAILSTREAM *stream)
   1.258 +{
   1.259 +  dummy_ping (stream);		/* invoke ping */
   1.260 +}
   1.261 +
   1.262 +
   1.263 +/* Dummy expunge mailbox
   1.264 + * Accepts: MAIL stream
   1.265 + *	    sequence to expunge if non-NIL
   1.266 + *	    expunge options
   1.267 + * Returns: T, always
   1.268 + */
   1.269 +
   1.270 +long dummy_expunge (MAILSTREAM *stream,char *sequence,long options)
   1.271 +{
   1.272 +  return LONGT;
   1.273 +}
   1.274 +
   1.275 +/* Dummy copy message(s)
   1.276 + * Accepts: MAIL stream
   1.277 + *	    sequence
   1.278 + *	    destination mailbox
   1.279 + *	    options
   1.280 + * Returns: T if copy successful, else NIL
   1.281 + */
   1.282 +
   1.283 +long dummy_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options)
   1.284 +{
   1.285 +  if ((options & CP_UID) ? mail_uid_sequence (stream,sequence) :
   1.286 +      mail_sequence (stream,sequence)) fatal ("Impossible dummy_copy");
   1.287 +  return NIL;
   1.288 +}
   1.289 +
   1.290 +
   1.291 +/* Dummy append message string
   1.292 + * Accepts: mail stream
   1.293 + *	    destination mailbox
   1.294 + *	    stringstruct of message to append
   1.295 + * Returns: T on success, NIL on failure
   1.296 + */
   1.297 +
   1.298 +long dummy_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data)
   1.299 +{
   1.300 +  char tmp[MAILTMPLEN];
   1.301 +  sprintf (tmp,"Can't append to %s",mailbox);
   1.302 +  mm_log (tmp,ERROR);		/* pass up error */
   1.303 +  return NIL;			/* always fails */
   1.304 +}

UW-IMAP'd extensions by yuuji