imapext-2007

annotate src/osdep/wce/dummywce.c @ 0:ada5e610ab86

imap-2007e
author yuuji@gentei.org
date Mon, 14 Sep 2009 15:17:45 +0900
parents
children
rev   line source
yuuji@0 1 /* ========================================================================
yuuji@0 2 * Copyright 1988-2006 University of Washington
yuuji@0 3 *
yuuji@0 4 * Licensed under the Apache License, Version 2.0 (the "License");
yuuji@0 5 * you may not use this file except in compliance with the License.
yuuji@0 6 * You may obtain a copy of the License at
yuuji@0 7 *
yuuji@0 8 * http://www.apache.org/licenses/LICENSE-2.0
yuuji@0 9 *
yuuji@0 10 *
yuuji@0 11 * ========================================================================
yuuji@0 12 */
yuuji@0 13
yuuji@0 14 /*
yuuji@0 15 * Program: Dummy routines for WCE
yuuji@0 16 *
yuuji@0 17 * Author: Mark Crispin
yuuji@0 18 * Networks and Distributed Computing
yuuji@0 19 * Computing & Communications
yuuji@0 20 * University of Washington
yuuji@0 21 * Administration Building, AG-44
yuuji@0 22 * Seattle, WA 98195
yuuji@0 23 * Internet: MRC@CAC.Washington.EDU
yuuji@0 24 *
yuuji@0 25 * Date: 24 May 1993
yuuji@0 26 * Last Edited: 30 August 2006
yuuji@0 27 */
yuuji@0 28
yuuji@0 29
yuuji@0 30 #include <ctype.h>
yuuji@0 31 #include <stdio.h>
yuuji@0 32 #include <errno.h>
yuuji@0 33 #include <fcntl.h>
yuuji@0 34 #include <direct.h>
yuuji@0 35 #include "mail.h"
yuuji@0 36 #include "osdep.h"
yuuji@0 37 #include <sys\stat.h>
yuuji@0 38 #include <dos.h>
yuuji@0 39 #include "dummy.h"
yuuji@0 40 #include "misc.h"
yuuji@0 41
yuuji@0 42 /* Function prototypes */
yuuji@0 43
yuuji@0 44 DRIVER *dummy_valid (char *name);
yuuji@0 45 void *dummy_parameters (long function,void *value);
yuuji@0 46 MAILSTREAM *dummy_open (MAILSTREAM *stream);
yuuji@0 47 void dummy_close (MAILSTREAM *stream,long options);
yuuji@0 48 long dummy_ping (MAILSTREAM *stream);
yuuji@0 49 void dummy_check (MAILSTREAM *stream);
yuuji@0 50 long dummy_expunge (MAILSTREAM *stream,char *sequence,long options);
yuuji@0 51 long dummy_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options);
yuuji@0 52 long dummy_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data);
yuuji@0 53
yuuji@0 54 /* Dummy routines */
yuuji@0 55
yuuji@0 56
yuuji@0 57 /* Driver dispatch used by MAIL */
yuuji@0 58
yuuji@0 59 DRIVER dummydriver = {
yuuji@0 60 "dummy", /* driver name */
yuuji@0 61 DR_LOCAL|DR_MAIL, /* driver flags */
yuuji@0 62 (DRIVER *) NIL, /* next driver */
yuuji@0 63 dummy_valid, /* mailbox is valid for us */
yuuji@0 64 dummy_parameters, /* manipulate parameters */
yuuji@0 65 dummy_scan, /* scan mailboxes */
yuuji@0 66 dummy_list, /* list mailboxes */
yuuji@0 67 dummy_lsub, /* list subscribed mailboxes */
yuuji@0 68 NIL, /* subscribe to mailbox */
yuuji@0 69 NIL, /* unsubscribe from mailbox */
yuuji@0 70 dummy_create, /* create mailbox */
yuuji@0 71 dummy_delete, /* delete mailbox */
yuuji@0 72 dummy_rename, /* rename mailbox */
yuuji@0 73 mail_status_default, /* status of mailbox */
yuuji@0 74 dummy_open, /* open mailbox */
yuuji@0 75 dummy_close, /* close mailbox */
yuuji@0 76 NIL, /* fetch message "fast" attributes */
yuuji@0 77 NIL, /* fetch message flags */
yuuji@0 78 NIL, /* fetch overview */
yuuji@0 79 NIL, /* fetch message structure */
yuuji@0 80 NIL, /* fetch header */
yuuji@0 81 NIL, /* fetch text */
yuuji@0 82 NIL, /* fetch message data */
yuuji@0 83 NIL, /* unique identifier */
yuuji@0 84 NIL, /* message number from UID */
yuuji@0 85 NIL, /* modify flags */
yuuji@0 86 NIL, /* per-message modify flags */
yuuji@0 87 NIL, /* search for message based on criteria */
yuuji@0 88 NIL, /* sort messages */
yuuji@0 89 NIL, /* thread messages */
yuuji@0 90 dummy_ping, /* ping mailbox to see if still alive */
yuuji@0 91 dummy_check, /* check for new messages */
yuuji@0 92 dummy_expunge, /* expunge deleted messages */
yuuji@0 93 dummy_copy, /* copy messages to another mailbox */
yuuji@0 94 dummy_append, /* append string message to mailbox */
yuuji@0 95 NIL /* garbage collect stream */
yuuji@0 96 };
yuuji@0 97
yuuji@0 98
yuuji@0 99 /* prototype stream */
yuuji@0 100 MAILSTREAM dummyproto = {&dummydriver};
yuuji@0 101
yuuji@0 102 /* driver parameters */
yuuji@0 103 static char *file_extension = NIL;
yuuji@0 104
yuuji@0 105 /* Dummy validate mailbox
yuuji@0 106 * Accepts: mailbox name
yuuji@0 107 * Returns: our driver if name is valid, NIL otherwise
yuuji@0 108 */
yuuji@0 109
yuuji@0 110 DRIVER *dummy_valid (char *name)
yuuji@0 111 {
yuuji@0 112 char *s,tmp[MAILTMPLEN];
yuuji@0 113 struct stat sbuf;
yuuji@0 114 /* must be valid local mailbox */
yuuji@0 115 return (name && *name && (*name != '{') &&
yuuji@0 116 (s = mailboxfile (tmp,name)) && (!*s || !stat (s,&sbuf))) ?
yuuji@0 117 &dummydriver : NIL;
yuuji@0 118 }
yuuji@0 119
yuuji@0 120
yuuji@0 121 /* Dummy manipulate driver parameters
yuuji@0 122 * Accepts: function code
yuuji@0 123 * function-dependent value
yuuji@0 124 * Returns: function-dependent return value
yuuji@0 125 */
yuuji@0 126
yuuji@0 127 void *dummy_parameters (long function,void *value)
yuuji@0 128 {
yuuji@0 129 return value;
yuuji@0 130 }
yuuji@0 131
yuuji@0 132 /* Dummy scan mailboxes
yuuji@0 133 * Accepts: mail stream
yuuji@0 134 * reference
yuuji@0 135 * pattern to search
yuuji@0 136 * string to scan
yuuji@0 137 */
yuuji@0 138
yuuji@0 139 void dummy_scan (MAILSTREAM *stream,char *ref,char *pat,char *contents)
yuuji@0 140 {
yuuji@0 141 /* return silently */
yuuji@0 142 }
yuuji@0 143
yuuji@0 144 /* Dummy list mailboxes
yuuji@0 145 * Accepts: mail stream
yuuji@0 146 * reference
yuuji@0 147 * pattern to search
yuuji@0 148 */
yuuji@0 149
yuuji@0 150 void dummy_list (MAILSTREAM *stream,char *ref,char *pat)
yuuji@0 151 {
yuuji@0 152 /* return silently */
yuuji@0 153 }
yuuji@0 154
yuuji@0 155
yuuji@0 156 /* Dummy list subscribed mailboxes
yuuji@0 157 * Accepts: mail stream
yuuji@0 158 * pattern to search
yuuji@0 159 */
yuuji@0 160
yuuji@0 161 void dummy_lsub (MAILSTREAM *stream,char *ref,char *pat)
yuuji@0 162 {
yuuji@0 163 /* return silently */
yuuji@0 164 }
yuuji@0 165
yuuji@0 166 /* Dummy create mailbox
yuuji@0 167 * Accepts: mail stream
yuuji@0 168 * mailbox name to create
yuuji@0 169 * Returns: T on success, NIL on failure
yuuji@0 170 */
yuuji@0 171
yuuji@0 172 long dummy_create (MAILSTREAM *stream,char *mailbox)
yuuji@0 173 {
yuuji@0 174 return NIL; /* always fails */
yuuji@0 175 }
yuuji@0 176
yuuji@0 177
yuuji@0 178 /* Dummy delete mailbox
yuuji@0 179 * Accepts: mail stream
yuuji@0 180 * mailbox name to delete
yuuji@0 181 * Returns: T on success, NIL on failure
yuuji@0 182 */
yuuji@0 183
yuuji@0 184 long dummy_delete (MAILSTREAM *stream,char *mailbox)
yuuji@0 185 {
yuuji@0 186 return NIL; /* always fails */
yuuji@0 187 }
yuuji@0 188
yuuji@0 189
yuuji@0 190 /* Mail rename mailbox
yuuji@0 191 * Accepts: mail stream
yuuji@0 192 * old mailbox name
yuuji@0 193 * new mailbox name
yuuji@0 194 * Returns: T on success, NIL on failure
yuuji@0 195 */
yuuji@0 196
yuuji@0 197 long dummy_rename (MAILSTREAM *stream,char *old,char *newname)
yuuji@0 198 {
yuuji@0 199 return NIL; /* always fails */
yuuji@0 200 }
yuuji@0 201
yuuji@0 202 /* Dummy open
yuuji@0 203 * Accepts: stream to open
yuuji@0 204 * Returns: stream on success, NIL on failure
yuuji@0 205 */
yuuji@0 206
yuuji@0 207 MAILSTREAM *dummy_open (MAILSTREAM *stream)
yuuji@0 208 {
yuuji@0 209 char tmp[MAILTMPLEN];
yuuji@0 210 /* OP_PROTOTYPE call or silence */
yuuji@0 211 if (!stream || stream->silent) return NIL;
yuuji@0 212 if (compare_cstring (stream->mailbox,"INBOX")) {
yuuji@0 213 sprintf (tmp,"Not a mailbox: %s",stream->mailbox);
yuuji@0 214 mm_log (tmp,ERROR);
yuuji@0 215 return NIL; /* always fails */
yuuji@0 216 }
yuuji@0 217 if (!stream->silent) { /* only if silence not requested */
yuuji@0 218 mail_exists (stream,0); /* say there are 0 messages */
yuuji@0 219 mail_recent (stream,0);
yuuji@0 220 stream->uid_validity = time (0);
yuuji@0 221 }
yuuji@0 222 stream->inbox = T; /* note that it's an INBOX */
yuuji@0 223 return stream; /* return success */
yuuji@0 224 }
yuuji@0 225
yuuji@0 226
yuuji@0 227 /* Dummy close
yuuji@0 228 * Accepts: MAIL stream
yuuji@0 229 * options
yuuji@0 230 */
yuuji@0 231
yuuji@0 232 void dummy_close (MAILSTREAM *stream,long options)
yuuji@0 233 {
yuuji@0 234 /* return silently */
yuuji@0 235 }
yuuji@0 236
yuuji@0 237 /* Dummy ping mailbox
yuuji@0 238 * Accepts: MAIL stream
yuuji@0 239 * Returns: T if stream alive, else NIL
yuuji@0 240 * No-op for readonly files, since read/writer can expunge it from under us!
yuuji@0 241 */
yuuji@0 242
yuuji@0 243 long dummy_ping (MAILSTREAM *stream)
yuuji@0 244 {
yuuji@0 245 return T;
yuuji@0 246 }
yuuji@0 247
yuuji@0 248
yuuji@0 249 /* Dummy check mailbox
yuuji@0 250 * Accepts: MAIL stream
yuuji@0 251 * No-op for readonly files, since read/writer can expunge it from under us!
yuuji@0 252 */
yuuji@0 253
yuuji@0 254 void dummy_check (MAILSTREAM *stream)
yuuji@0 255 {
yuuji@0 256 dummy_ping (stream); /* invoke ping */
yuuji@0 257 }
yuuji@0 258
yuuji@0 259
yuuji@0 260 /* Dummy expunge mailbox
yuuji@0 261 * Accepts: MAIL stream
yuuji@0 262 * sequence to expunge if non-NIL
yuuji@0 263 * expunge options
yuuji@0 264 * Returns: T, always
yuuji@0 265 */
yuuji@0 266
yuuji@0 267 long dummy_expunge (MAILSTREAM *stream,char *sequence,long options)
yuuji@0 268 {
yuuji@0 269 return LONGT;
yuuji@0 270 }
yuuji@0 271
yuuji@0 272 /* Dummy copy message(s)
yuuji@0 273 * Accepts: MAIL stream
yuuji@0 274 * sequence
yuuji@0 275 * destination mailbox
yuuji@0 276 * options
yuuji@0 277 * Returns: T if copy successful, else NIL
yuuji@0 278 */
yuuji@0 279
yuuji@0 280 long dummy_copy (MAILSTREAM *stream,char *sequence,char *mailbox,long options)
yuuji@0 281 {
yuuji@0 282 if ((options & CP_UID) ? mail_uid_sequence (stream,sequence) :
yuuji@0 283 mail_sequence (stream,sequence)) fatal ("Impossible dummy_copy");
yuuji@0 284 return NIL;
yuuji@0 285 }
yuuji@0 286
yuuji@0 287
yuuji@0 288 /* Dummy append message string
yuuji@0 289 * Accepts: mail stream
yuuji@0 290 * destination mailbox
yuuji@0 291 * stringstruct of message to append
yuuji@0 292 * Returns: T on success, NIL on failure
yuuji@0 293 */
yuuji@0 294
yuuji@0 295 long dummy_append (MAILSTREAM *stream,char *mailbox,append_t af,void *data)
yuuji@0 296 {
yuuji@0 297 char tmp[MAILTMPLEN];
yuuji@0 298 sprintf (tmp,"Can't append to %s",mailbox);
yuuji@0 299 mm_log (tmp,ERROR); /* pass up error */
yuuji@0 300 return NIL; /* always fails */
yuuji@0 301 }

UW-IMAP'd extensions by yuuji