| mail.h | | mail.h | |
|
| | | /* ======================================================================== | |
| | | * Copyright 1988-2006 University of Washington | |
| | | * | |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); | |
| | | * you may not use this file except in compliance with the License. | |
| | | * You may obtain a copy of the License at | |
| | | * | |
| | | * http://www.apache.org/licenses/LICENSE-2.0 | |
| | | * | |
| | | * | |
| | | * ======================================================================== | |
| | | */ | |
| | | | |
| /* | | /* | |
| * Program: Mailbox Access routines | | * Program: Mailbox Access routines | |
| * | | * | |
| * Author: Mark Crispin | | * Author: Mark Crispin | |
| * Networks and Distributed Computing | | * Networks and Distributed Computing | |
| * Computing & Communications | | * Computing & Communications | |
| * University of Washington | | * University of Washington | |
| * Administration Building, AG-44 | | * Administration Building, AG-44 | |
| * Seattle, WA 98195 | | * Seattle, WA 98195 | |
| * Internet: MRC@CAC.Washington.EDU | | * Internet: MRC@CAC.Washington.EDU | |
| * | | * | |
| * Date: 22 November 1989 | | * Date: 22 November 1989 | |
|
| * Last Edited: 21 January 2005 | | * Last Edited: 30 August 2006 | |
| * | | | |
| * The IMAP toolkit provided in this Distribution is | | | |
| * Copyright 1988-2005 University of Washington. | | | |
| * The full text of our legal notices is contained in the file called | | | |
| * CPYRIGHT, included with this Distribution. | | | |
| */ | | */ | |
| /* Build parameters */ | | /* Build parameters */ | |
| | | | |
| #define CACHEINCREMENT 250 /* cache growth increments */ | | #define CACHEINCREMENT 250 /* cache growth increments */ | |
| #define MAILTMPLEN 1024 /* size of a temporary buffer */ | | #define MAILTMPLEN 1024 /* size of a temporary buffer */ | |
|
| #define MAXMESSAGESIZE 65000 /* MS-DOS: maximum text buffer size | | #define SENDBUFLEN 16385 /* size of temporary sending buffer, also | |
| * other: initial text buffer size */ | | * used for SMTP commands and NETMBX generat | |
| #define MAXUSERFLAG 64 /* maximum length of a user flag */ | | ion | |
| | | * buffer so shouldn't be made smaller than | |
| | | * MAILTMPLEN. Note that there's a guard by | |
| | | te, | |
| | | * so this is actually len+1. */ | |
| #define MAXAUTHENTICATORS 8 /* maximum number of SASL authenticators */ | | #define MAXAUTHENTICATORS 8 /* maximum number of SASL authenticators */ | |
| /* maximum number of messages */ | | /* maximum number of messages */ | |
|
| #define MAXMESSAGES (unsigned long) 100000000 | | #define MAXMESSAGES (unsigned long) 1000000 | |
| #define MAXLOGINTRIALS 3 /* maximum number of client login attempts *
/ | | #define MAXLOGINTRIALS 3 /* maximum number of client login attempts *
/ | |
|
| | | #define MAXWILDCARDS 10 /* maximum wildcards allowed in LIST
/LSUB */ | |
| | | | |
| /* These can't be changed without changing code */ | | /* These can't be changed without changing code */ | |
| | | | |
| #define NUSERFLAGS 30 /* maximum number of user flags */ | | #define NUSERFLAGS 30 /* maximum number of user flags */ | |
|
| | | #define MAXUSERFLAG 50 /* maximum length of a user flag */ | |
| #define BASEYEAR 1970 /* the year time began on Unix DON'T CHANGE
*/ | | #define BASEYEAR 1970 /* the year time began on Unix DON'T CHANGE
*/ | |
| /* default for unqualified addresses */ | | /* default for unqualified addresses */ | |
| #define BADHOST ".MISSING-HOST-NAME." | | #define BADHOST ".MISSING-HOST-NAME." | |
| /* default for syntax errors in addresses */ | | /* default for syntax errors in addresses */ | |
| #define ERRHOST ".SYNTAX-ERROR." | | #define ERRHOST ".SYNTAX-ERROR." | |
| | | | |
| /* Coddle certain compilers' 6-character symbol limitation */ | | /* Coddle certain compilers' 6-character symbol limitation */ | |
| | | | |
| #ifdef __COMPILER_KCC__ | | #ifdef __COMPILER_KCC__ | |
| #include "shortsym.h" | | #include "shortsym.h" | |
| #endif | | #endif | |
| | | | |
| /* Function status code */ | | /* Function status code */ | |
| | | | |
| #define NIL 0 /* convenient name */ | | #define NIL 0 /* convenient name */ | |
| #define T 1 /* opposite of NIL */ | | #define T 1 /* opposite of NIL */ | |
|
| #define LONGT (long) 1 /* long T */ | | #define LONGT (long) 1 /* long T to pacify some compilers */ | |
| #define VOIDT (void *) "" /* void T */ | | #define VOIDT (void *) "" /* void T ditto */ | |
| /* Global and Driver Parameters */ | | /* Global and Driver Parameters */ | |
| | | | |
| /* 0xx: driver and authenticator flags */ | | /* 0xx: driver and authenticator flags */ | |
| #define ENABLE_DRIVER (long) 1 | | #define ENABLE_DRIVER (long) 1 | |
| #define DISABLE_DRIVER (long) 2 | | #define DISABLE_DRIVER (long) 2 | |
| #define ENABLE_AUTHENTICATOR (long) 3 | | #define ENABLE_AUTHENTICATOR (long) 3 | |
| #define DISABLE_AUTHENTICATOR (long) 4 | | #define DISABLE_AUTHENTICATOR (long) 4 | |
| #define ENABLE_DEBUG (long) 5 | | #define ENABLE_DEBUG (long) 5 | |
| #define DISABLE_DEBUG (long) 6 | | #define DISABLE_DEBUG (long) 6 | |
|
| | | #define HIDE_AUTHENTICATOR (long) 7 | |
| | | #define UNHIDE_AUTHENTICATOR (long) 8 | |
| /* 1xx: c-client globals */ | | /* 1xx: c-client globals */ | |
| #define GET_DRIVERS (long) 101 | | #define GET_DRIVERS (long) 101 | |
| #define SET_DRIVERS (long) 102 | | #define SET_DRIVERS (long) 102 | |
| #define GET_GETS (long) 103 | | #define GET_GETS (long) 103 | |
| #define SET_GETS (long) 104 | | #define SET_GETS (long) 104 | |
| #define GET_CACHE (long) 105 | | #define GET_CACHE (long) 105 | |
| #define SET_CACHE (long) 106 | | #define SET_CACHE (long) 106 | |
| #define GET_SMTPVERBOSE (long) 107 | | #define GET_SMTPVERBOSE (long) 107 | |
| #define SET_SMTPVERBOSE (long) 108 | | #define SET_SMTPVERBOSE (long) 108 | |
| #define GET_RFC822OUTPUT (long) 109 | | #define GET_RFC822OUTPUT (long) 109 | |
| | | | |
| skipping to change at line 117 | | skipping to change at line 131 | |
| #define GET_SSLSTART (long) 145 | | #define GET_SSLSTART (long) 145 | |
| #define SET_SSLSTART (long) 146 | | #define SET_SSLSTART (long) 146 | |
| #define GET_DEBUGSENSITIVE (long) 147 | | #define GET_DEBUGSENSITIVE (long) 147 | |
| #define SET_DEBUGSENSITIVE (long) 148 | | #define SET_DEBUGSENSITIVE (long) 148 | |
| #define GET_TCPDEBUG (long) 149 | | #define GET_TCPDEBUG (long) 149 | |
| #define SET_TCPDEBUG (long) 150 | | #define SET_TCPDEBUG (long) 150 | |
| #define GET_FREESTREAMSPAREP (long) 151 | | #define GET_FREESTREAMSPAREP (long) 151 | |
| #define SET_FREESTREAMSPAREP (long) 152 | | #define SET_FREESTREAMSPAREP (long) 152 | |
| #define GET_FREEBODYSPAREP (long) 153 | | #define GET_FREEBODYSPAREP (long) 153 | |
| #define SET_FREEBODYSPAREP (long) 154 | | #define SET_FREEBODYSPAREP (long) 154 | |
|
| | | #define GET_COPYUID (long) 155 | |
| | | #define SET_COPYUID (long) 156 | |
| | | #define GET_APPENDUID (long) 157 | |
| | | #define SET_APPENDUID (long) 158 | |
| | | #define GET_RFC822OUTPUTFULL (long) 159 | |
| | | #define SET_RFC822OUTPUTFULL (long) 160 | |
| /* 2xx: environment */ | | /* 2xx: environment */ | |
| #define GET_USERNAME (long) 201 | | #define GET_USERNAME (long) 201 | |
| #define SET_USERNAME (long) 202 | | #define SET_USERNAME (long) 202 | |
| #define GET_HOMEDIR (long) 203 | | #define GET_HOMEDIR (long) 203 | |
| #define SET_HOMEDIR (long) 204 | | #define SET_HOMEDIR (long) 204 | |
| #define GET_LOCALHOST (long) 205 | | #define GET_LOCALHOST (long) 205 | |
| #define SET_LOCALHOST (long) 206 | | #define SET_LOCALHOST (long) 206 | |
| #define GET_SYSINBOX (long) 207 | | #define GET_SYSINBOX (long) 207 | |
| #define SET_SYSINBOX (long) 208 | | #define SET_SYSINBOX (long) 208 | |
| #define GET_USERPROMPT (long) 209 | | #define GET_USERPROMPT (long) 209 | |
| | | | |
| skipping to change at line 146 | | skipping to change at line 166 | |
| #define GET_MAILSUBDIR 219 | | #define GET_MAILSUBDIR 219 | |
| #define SET_MAILSUBDIR 220 | | #define SET_MAILSUBDIR 220 | |
| #define GET_DISABLE822TZTEXT 221 | | #define GET_DISABLE822TZTEXT 221 | |
| #define SET_DISABLE822TZTEXT 222 | | #define SET_DISABLE822TZTEXT 222 | |
| #define GET_LIMITEDADVERTISE (long) 223 | | #define GET_LIMITEDADVERTISE (long) 223 | |
| #define SET_LIMITEDADVERTISE (long) 224 | | #define SET_LIMITEDADVERTISE (long) 224 | |
| #define GET_LOGOUTHOOK (long) 225 | | #define GET_LOGOUTHOOK (long) 225 | |
| #define SET_LOGOUTHOOK (long) 226 | | #define SET_LOGOUTHOOK (long) 226 | |
| #define GET_LOGOUTDATA (long) 227 | | #define GET_LOGOUTDATA (long) 227 | |
| #define SET_LOGOUTDATA (long) 228 | | #define SET_LOGOUTDATA (long) 228 | |
|
| | | #define GET_EXTERNALAUTHID (long) 229 | |
| | | #define SET_EXTERNALAUTHID (long) 230 | |
| /* 3xx: TCP/IP */ | | /* 3xx: TCP/IP */ | |
| #define GET_OPENTIMEOUT (long) 300 | | #define GET_OPENTIMEOUT (long) 300 | |
| #define SET_OPENTIMEOUT (long) 301 | | #define SET_OPENTIMEOUT (long) 301 | |
| #define GET_READTIMEOUT (long) 302 | | #define GET_READTIMEOUT (long) 302 | |
| #define SET_READTIMEOUT (long) 303 | | #define SET_READTIMEOUT (long) 303 | |
| #define GET_WRITETIMEOUT (long) 304 | | #define GET_WRITETIMEOUT (long) 304 | |
| #define SET_WRITETIMEOUT (long) 305 | | #define SET_WRITETIMEOUT (long) 305 | |
| #define GET_CLOSETIMEOUT (long) 306 | | #define GET_CLOSETIMEOUT (long) 306 | |
| #define SET_CLOSETIMEOUT (long) 307 | | #define SET_CLOSETIMEOUT (long) 307 | |
| #define GET_TIMEOUT (long) 308 | | #define GET_TIMEOUT (long) 308 | |
| | | | |
| skipping to change at line 179 | | skipping to change at line 201 | |
| #define GET_SSHPATH (long) 322 | | #define GET_SSHPATH (long) 322 | |
| #define SET_SSHPATH (long) 323 | | #define SET_SSHPATH (long) 323 | |
| #define GET_SSLCERTIFICATEQUERY (long) 324 | | #define GET_SSLCERTIFICATEQUERY (long) 324 | |
| #define SET_SSLCERTIFICATEQUERY (long) 325 | | #define SET_SSLCERTIFICATEQUERY (long) 325 | |
| #define GET_SSLFAILURE (long) 326 | | #define GET_SSLFAILURE (long) 326 | |
| #define SET_SSLFAILURE (long) 327 | | #define SET_SSLFAILURE (long) 327 | |
| #define GET_NEWSRCCANONHOST (long) 328 | | #define GET_NEWSRCCANONHOST (long) 328 | |
| #define SET_NEWSRCCANONHOST (long) 329 | | #define SET_NEWSRCCANONHOST (long) 329 | |
| #define GET_KINIT (long) 330 | | #define GET_KINIT (long) 330 | |
| #define SET_KINIT (long) 331 | | #define SET_KINIT (long) 331 | |
|
| | | #define GET_SSLCLIENTCERT (long) 332 | |
| | | #define SET_SSLCLIENTCERT (long) 333 | |
| | | #define GET_SSLCLIENTKEY (long) 334 | |
| | | #define SET_SSLCLIENTKEY (long) 335 | |
| | | #define GET_KERBEROS_CP_SVR_NAME (long) 336 | |
| | | #define SET_KERBEROS_CP_SVR_NAME (long) 337 | |
| /* 4xx: network drivers */ | | /* 4xx: network drivers */ | |
| #define GET_MAXLOGINTRIALS (long) 400 | | #define GET_MAXLOGINTRIALS (long) 400 | |
| #define SET_MAXLOGINTRIALS (long) 401 | | #define SET_MAXLOGINTRIALS (long) 401 | |
| #define GET_LOOKAHEAD (long) 402 | | #define GET_LOOKAHEAD (long) 402 | |
| #define SET_LOOKAHEAD (long) 403 | | #define SET_LOOKAHEAD (long) 403 | |
| #define GET_IMAPPORT (long) 404 | | #define GET_IMAPPORT (long) 404 | |
| #define SET_IMAPPORT (long) 405 | | #define SET_IMAPPORT (long) 405 | |
| #define GET_PREFETCH (long) 406 | | #define GET_PREFETCH (long) 406 | |
| #define SET_PREFETCH (long) 407 | | #define SET_PREFETCH (long) 407 | |
| #define GET_CLOSEONERROR (long) 408 | | #define GET_CLOSEONERROR (long) 408 | |
| | | | |
| skipping to change at line 305 | | skipping to change at line 333 | |
| #define GET_NETFSSTATBUG (long) 560 | | #define GET_NETFSSTATBUG (long) 560 | |
| #define SET_NETFSSTATBUG (long) 561 | | #define SET_NETFSSTATBUG (long) 561 | |
| #define GET_SNARFMAILBOXNAME (long) 562 | | #define GET_SNARFMAILBOXNAME (long) 562 | |
| #define SET_SNARFMAILBOXNAME (long) 563 | | #define SET_SNARFMAILBOXNAME (long) 563 | |
| #define GET_SNARFINTERVAL (long) 564 | | #define GET_SNARFINTERVAL (long) 564 | |
| #define SET_SNARFINTERVAL (long) 565 | | #define SET_SNARFINTERVAL (long) 565 | |
| #define GET_SNARFPRESERVE (long) 566 | | #define GET_SNARFPRESERVE (long) 566 | |
| #define SET_SNARFPRESERVE (long) 567 | | #define SET_SNARFPRESERVE (long) 567 | |
| #define GET_INBOXPATH (long) 568 | | #define GET_INBOXPATH (long) 568 | |
| #define SET_INBOXPATH (long) 569 | | #define SET_INBOXPATH (long) 569 | |
|
| | | #define GET_DIRFMTTEST (long) 570 | |
| | | #define SET_DIRFMTTEST (long) 571 | |
| | | #define GET_SCANCONTENTS (long) 572 | |
| | | #define SET_SCANCONTENTS (long) 573 | |
| | | #define GET_MHALLOWINBOX (long) 574 | |
| | | #define SET_MHALLOWINBOX (long) 575 | |
| /* Driver flags */ | | /* Driver flags */ | |
| | | | |
| #define DR_DISABLE (long) 0x1 /* driver is disabled */ | | #define DR_DISABLE (long) 0x1 /* driver is disabled */ | |
| #define DR_LOCAL (long) 0x2 /* local file driver */ | | #define DR_LOCAL (long) 0x2 /* local file driver */ | |
| #define DR_MAIL (long) 0x4 /* supports mail */ | | #define DR_MAIL (long) 0x4 /* supports mail */ | |
| #define DR_NEWS (long) 0x8 /* supports news */ | | #define DR_NEWS (long) 0x8 /* supports news */ | |
| #define DR_READONLY (long) 0x10 /* driver only allows readonly acces
s */ | | #define DR_READONLY (long) 0x10 /* driver only allows readonly acces
s */ | |
| #define DR_NOFAST (long) 0x20 /* "fast" data is slow (whole msg fetch) */ | | #define DR_NOFAST (long) 0x20 /* "fast" data is slow (whole msg fetch) */ | |
| #define DR_NAMESPACE (long) 0x40/* driver has a special namespace */ | | #define DR_NAMESPACE (long) 0x40/* driver has a special namespace */ | |
| #define DR_LOWMEM (long) 0x80 /* low amounts of memory available */ | | #define DR_LOWMEM (long) 0x80 /* low amounts of memory available */ | |
| | | | |
| skipping to change at line 328 | | skipping to change at line 362 | |
| #define DR_RECYCLE (long) 0x800 /* driver does stream recycling */ | | #define DR_RECYCLE (long) 0x800 /* driver does stream recycling */ | |
| #define DR_XPOINT (long) 0x1000 /* needs to be checkpointed when rec
ycling */ | | #define DR_XPOINT (long) 0x1000 /* needs to be checkpointed when rec
ycling */ | |
| /* driver has no real internal date */ | | /* driver has no real internal date */ | |
| #define DR_NOINTDATE (long) 0x2000 | | #define DR_NOINTDATE (long) 0x2000 | |
| /* driver does not announce new mail */ | | /* driver does not announce new mail */ | |
| #define DR_NONEWMAIL (long) 0x4000 | | #define DR_NONEWMAIL (long) 0x4000 | |
| /* driver does not announce new mail when RO
*/ | | /* driver does not announce new mail when RO
*/ | |
| #define DR_NONEWMAILRONLY (long) 0x8000 | | #define DR_NONEWMAILRONLY (long) 0x8000 | |
| /* driver can be halfopen */ | | /* driver can be halfopen */ | |
| #define DR_HALFOPEN (long) 0x10000 | | #define DR_HALFOPEN (long) 0x10000 | |
|
| | | #define DR_DIRFMT (long) 0x20000/* driver is a directory-format */ | |
| | | #define DR_MODSEQ (long) 0x40000/* driver supports modseqs */ | |
| | | | |
| /* Cache management function codes */ | | /* Cache management function codes */ | |
| | | | |
| #define CH_INIT (long) 10 /* initialize cache */ | | #define CH_INIT (long) 10 /* initialize cache */ | |
| #define CH_SIZE (long) 11 /* (re-)size the cache */ | | #define CH_SIZE (long) 11 /* (re-)size the cache */ | |
| #define CH_MAKEELT (long) 30 /* return elt, make if needed */ | | #define CH_MAKEELT (long) 30 /* return elt, make if needed */ | |
| #define CH_ELT (long) 31 /* return elt if exists */ | | #define CH_ELT (long) 31 /* return elt if exists */ | |
| #define CH_SORTCACHE (long) 35 /* return sortcache entry, make if needed */ | | #define CH_SORTCACHE (long) 35 /* return sortcache entry, make if needed */ | |
| #define CH_FREE (long) 40 /* free space used by elt */ | | #define CH_FREE (long) 40 /* free space used by elt */ | |
| /* free space used by sortcache */ | | /* free space used by sortcache */ | |
| | | | |
| skipping to change at line 357 | | skipping to change at line 393 | |
| #define OP_ANONYMOUS (long) 0x4 /* anonymous open of newsgroup */ | | #define OP_ANONYMOUS (long) 0x4 /* anonymous open of newsgroup */ | |
| #define OP_SHORTCACHE (long) 0x8/* short (elt-only) caching */ | | #define OP_SHORTCACHE (long) 0x8/* short (elt-only) caching */ | |
| #define OP_SILENT (long) 0x10 /* don't pass up events (internal use) */ | | #define OP_SILENT (long) 0x10 /* don't pass up events (internal use) */ | |
| #define OP_PROTOTYPE (long) 0x20/* return driver prototype */ | | #define OP_PROTOTYPE (long) 0x20/* return driver prototype */ | |
| #define OP_HALFOPEN (long) 0x40 /* half-open (IMAP connect but no se
lect) */ | | #define OP_HALFOPEN (long) 0x40 /* half-open (IMAP connect but no se
lect) */ | |
| #define OP_EXPUNGE (long) 0x80 /* silently expunge recycle stream */ | | #define OP_EXPUNGE (long) 0x80 /* silently expunge recycle stream */ | |
| #define OP_SECURE (long) 0x100 /* don't do non-secure authentication */ | | #define OP_SECURE (long) 0x100 /* don't do non-secure authentication */ | |
| #define OP_TRYSSL (long) 0x200 /* try SSL first */ | | #define OP_TRYSSL (long) 0x200 /* try SSL first */ | |
| /* use multiple newsrc files */ | | /* use multiple newsrc files */ | |
| #define OP_MULNEWSRC (long) 0x400 | | #define OP_MULNEWSRC (long) 0x400 | |
|
| | | #define OP_NOKOD (long) 0x800 /* suppress kiss-of-death */ | |
| | | #define OP_SNIFF (long) 0x1000 /* metadata only open */ | |
| /* reserved for application use */ | | /* reserved for application use */ | |
| #define OP_RESERVED (unsigned long) 0xff000000 | | #define OP_RESERVED (unsigned long) 0xff000000 | |
| | | | |
| /* Net open options */ | | /* Net open options */ | |
| | | | |
| /* no error messages */ | | /* no error messages */ | |
| #define NET_SILENT ((unsigned long) 0x80000000) | | #define NET_SILENT ((unsigned long) 0x80000000) | |
| /* no validation of SSL certificates */ | | /* no validation of SSL certificates */ | |
| #define NET_NOVALIDATECERT ((unsigned long) 0x40000000) | | #define NET_NOVALIDATECERT ((unsigned long) 0x40000000) | |
| /* no open timeout */ | | /* no open timeout */ | |
| | | | |
| skipping to change at line 390 | | skipping to change at line 428 | |
| #define FT_NOT (long) 0x4 /* NOT flag for header lines fetch */ | | #define FT_NOT (long) 0x4 /* NOT flag for header lines fetch */ | |
| #define FT_INTERNAL (long) 0x8 /* text can be internal strings */ | | #define FT_INTERNAL (long) 0x8 /* text can be internal strings */ | |
| /* IMAP prefetch text when fetching header *
/ | | /* IMAP prefetch text when fetching header *
/ | |
| #define FT_PREFETCHTEXT (long) 0x20 | | #define FT_PREFETCHTEXT (long) 0x20 | |
| #define FT_NOHDRS (long) 0x40 /* suppress fetching extra headers (note tha
t | | #define FT_NOHDRS (long) 0x40 /* suppress fetching extra headers (note tha
t | |
| this breaks news handling) */ | | this breaks news handling) */ | |
| #define FT_NEEDENV (long) 0x80 /* (internal use) include envelope */ | | #define FT_NEEDENV (long) 0x80 /* (internal use) include envelope */ | |
| #define FT_NEEDBODY (long) 0x100/* (internal use) include body structure */ | | #define FT_NEEDBODY (long) 0x100/* (internal use) include body structure */ | |
| /* no fetch lookahead */ | | /* no fetch lookahead */ | |
| #define FT_NOLOOKAHEAD (long) 0x200 | | #define FT_NOLOOKAHEAD (long) 0x200 | |
|
| /* lookahead in header searching */ | | /* (internal use) lookahead in hdr searching
*/ | |
| #define FT_SEARCHLOOKAHEAD (long) 0x400 | | #define FT_SEARCHLOOKAHEAD (long) 0x400 | |
|
| | | /* stringstruct return hack */ | |
| | | #define FT_RETURNSTRINGSTRUCT (long) 0x800 | |
| | | | |
| /* Flagging options */ | | /* Flagging options */ | |
| | | | |
| #define ST_UID (long) 0x1 /* argument is a UID sequence */ | | #define ST_UID (long) 0x1 /* argument is a UID sequence */ | |
| #define ST_SILENT (long) 0x2 /* don't return results */ | | #define ST_SILENT (long) 0x2 /* don't return results */ | |
| #define ST_SET (long) 0x4 /* set vs. clear */ | | #define ST_SET (long) 0x4 /* set vs. clear */ | |
| | | | |
|
| | | /* Expunge options */ | |
| | | | |
| | | #define EX_UID (long) 0x1 /* argument is a UID sequence */ | |
| | | | |
| /* Copy options */ | | /* Copy options */ | |
| | | | |
| #define CP_UID (long) 0x1 /* argument is a UID sequence */ | | #define CP_UID (long) 0x1 /* argument is a UID sequence */ | |
| #define CP_MOVE (long) 0x2 /* delete from source after copying */ | | #define CP_MOVE (long) 0x2 /* delete from source after copying */ | |
|
| | | | |
| /* Search/sort/thread options */ | | /* Search/sort/thread options */ | |
| | | | |
| #define SE_UID (long) 0x1 /* return UID */ | | #define SE_UID (long) 0x1 /* return UID */ | |
| #define SE_FREE (long) 0x2 /* free search program after finished */ | | #define SE_FREE (long) 0x2 /* free search program after finished */ | |
| #define SE_NOPREFETCH (long) 0x4/* no search prefetching */ | | #define SE_NOPREFETCH (long) 0x4/* no search prefetching */ | |
| #define SO_FREE (long) 0x8 /* free sort program after finished */ | | #define SO_FREE (long) 0x8 /* free sort program after finished */ | |
| #define SE_NOSERVER (long) 0x10 /* don't do server-based search/sort
/thread */ | | #define SE_NOSERVER (long) 0x10 /* don't do server-based search/sort
/thread */ | |
| #define SE_RETAIN (long) 0x20 /* retain previous search results */ | | #define SE_RETAIN (long) 0x20 /* retain previous search results */ | |
| #define SO_OVERVIEW (long) 0x40 /* use overviews in searching (NNTP
only) */ | | #define SO_OVERVIEW (long) 0x40 /* use overviews in searching (NNTP
only) */ | |
| #define SE_NEEDBODY (long) 0x80 /* include body structure in prefetc
h */ | | #define SE_NEEDBODY (long) 0x80 /* include body structure in prefetc
h */ | |
| | | | |
| skipping to change at line 440 | | skipping to change at line 483 | |
| #define SA_MULNEWSRC (long) 0x20000000 | | #define SA_MULNEWSRC (long) 0x20000000 | |
| | | | |
| /* Mailgets flags */ | | /* Mailgets flags */ | |
| | | | |
| #define MG_UID (long) 0x1 /* message number is a UID */ | | #define MG_UID (long) 0x1 /* message number is a UID */ | |
| #define MG_COPY (long) 0x2 /* must return copy of argument */ | | #define MG_COPY (long) 0x2 /* must return copy of argument */ | |
| /* SASL authenticator categories */ | | /* SASL authenticator categories */ | |
| | | | |
| #define AU_SECURE (long) 0x1 /* /secure allowed */ | | #define AU_SECURE (long) 0x1 /* /secure allowed */ | |
| #define AU_AUTHUSER (long) 0x2 /* /authuser=xxx allowed */ | | #define AU_AUTHUSER (long) 0x2 /* /authuser=xxx allowed */ | |
|
| | | /* authenticator hidden */ | |
| | | #define AU_HIDE (long) 0x10000000 | |
| | | /* authenticator disabled */ | |
| | | #define AU_DISABLE (long) 0x20000000 | |
| | | | |
| /* Garbage collection flags */ | | /* Garbage collection flags */ | |
| | | | |
| #define GC_ELT (long) 0x1 /* message cache elements */ | | #define GC_ELT (long) 0x1 /* message cache elements */ | |
| #define GC_ENV (long) 0x2 /* envelopes and bodies */ | | #define GC_ENV (long) 0x2 /* envelopes and bodies */ | |
| #define GC_TEXTS (long) 0x4 /* cached texts */ | | #define GC_TEXTS (long) 0x4 /* cached texts */ | |
| | | | |
| /* mm_log()/mm_notify() condition codes */ | | /* mm_log()/mm_notify() condition codes */ | |
| | | | |
| #define WARN (long) 1 /* mm_log warning type */ | | #define WARN (long) 1 /* mm_log warning type */ | |
| | | | |
| skipping to change at line 465 | | skipping to change at line 512 | |
| /* Bits from mail_parse_flags(). Don't change these, since the header form
at | | /* Bits from mail_parse_flags(). Don't change these, since the header form
at | |
| * used by tenex, mtx, and mbx corresponds to these bits. | | * used by tenex, mtx, and mbx corresponds to these bits. | |
| */ | | */ | |
| | | | |
| #define fSEEN 0x1 | | #define fSEEN 0x1 | |
| #define fDELETED 0x2 | | #define fDELETED 0x2 | |
| #define fFLAGGED 0x4 | | #define fFLAGGED 0x4 | |
| #define fANSWERED 0x8 | | #define fANSWERED 0x8 | |
| #define fOLD 0x10 | | #define fOLD 0x10 | |
| #define fDRAFT 0x20 | | #define fDRAFT 0x20 | |
|
| | | | |
| | | #define fEXPUNGED 0x8000 /* internal flag */ | |
| /* Bits for mm_list() and mm_lsub() */ | | /* Bits for mm_list() and mm_lsub() */ | |
| | | | |
| /* Note that (LATT_NOINFERIORS LATT_HASCHILDREN LATT_HASNOCHILDREN) and | | /* Note that (LATT_NOINFERIORS LATT_HASCHILDREN LATT_HASNOCHILDREN) and | |
| * (LATT_NOSELECT LATT_MARKED LATT_UNMARKED) each have eight possible state
s, | | * (LATT_NOSELECT LATT_MARKED LATT_UNMARKED) each have eight possible state
s, | |
| * but only four of these are valid. The other four are silly states which | | * but only four of these are valid. The other four are silly states which | |
| * while invalid can unfortunately be expressed in the IMAP protocol. | | * while invalid can unfortunately be expressed in the IMAP protocol. | |
| */ | | */ | |
| | | | |
| /* terminal node in hierarchy */ | | /* terminal node in hierarchy */ | |
| #define LATT_NOINFERIORS (long) 0x1 | | #define LATT_NOINFERIORS (long) 0x1 | |
| | | | |
| skipping to change at line 571 | | skipping to change at line 620 | |
| unsigned int dbgflag : 1; /* debug flag */ | | unsigned int dbgflag : 1; /* debug flag */ | |
| unsigned int secflag : 1; /* secure flag */ | | unsigned int secflag : 1; /* secure flag */ | |
| unsigned int sslflag : 1; /* SSL driver flag */ | | unsigned int sslflag : 1; /* SSL driver flag */ | |
| unsigned int trysslflag : 1; /* try SSL driver first flag */ | | unsigned int trysslflag : 1; /* try SSL driver first flag */ | |
| unsigned int novalidate : 1; /* don't validate certificates */ | | unsigned int novalidate : 1; /* don't validate certificates */ | |
| unsigned int tlsflag : 1; /* TLS flag */ | | unsigned int tlsflag : 1; /* TLS flag */ | |
| unsigned int notlsflag : 1; /* do not do TLS flag */ | | unsigned int notlsflag : 1; /* do not do TLS flag */ | |
| unsigned int readonlyflag : 1;/* want readonly */ | | unsigned int readonlyflag : 1;/* want readonly */ | |
| unsigned int norsh : 1; /* don't use rsh/ssh */ | | unsigned int norsh : 1; /* don't use rsh/ssh */ | |
| unsigned int loser : 1; /* server is a loser */ | | unsigned int loser : 1; /* server is a loser */ | |
|
| | | unsigned int tlssslv23 : 1; /* force SSLv23 client method over TLS */ | |
| } NETMBX; | | } NETMBX; | |
| /* Item in an address list */ | | /* Item in an address list */ | |
| | | | |
| #define ADDRESS struct mail_address | | #define ADDRESS struct mail_address | |
| | | | |
| ADDRESS { | | ADDRESS { | |
| char *personal; /* personal name phrase */ | | char *personal; /* personal name phrase */ | |
| char *adl; /* at-domain-list source route */ | | char *adl; /* at-domain-list source route */ | |
| char *mailbox; /* mailbox name */ | | char *mailbox; /* mailbox name */ | |
| char *host; /* domain name of mailbox's host */ | | char *host; /* domain name of mailbox's host */ | |
| | | | |
| skipping to change at line 713 | | skipping to change at line 763 | |
| PARTTEXT text; /* body text */ | | PARTTEXT text; /* body text */ | |
| }; | | }; | |
| /* Entry in the message cache array */ | | /* Entry in the message cache array */ | |
| | | | |
| typedef struct message_cache { | | typedef struct message_cache { | |
| unsigned long msgno; /* message number */ | | unsigned long msgno; /* message number */ | |
| unsigned int lockcount : 8; /* non-zero if multiple references */ | | unsigned int lockcount : 8; /* non-zero if multiple references */ | |
| unsigned long rfc822_size; /* # of bytes of message as raw RFC822 */ | | unsigned long rfc822_size; /* # of bytes of message as raw RFC822 */ | |
| struct { /* c-client internal use only */ | | struct { /* c-client internal use only */ | |
| unsigned long uid; /* message unique ID */ | | unsigned long uid; /* message unique ID */ | |
|
| | | unsigned long mod; /* modseq */ | |
| PARTTEXT special; /* special text pointers */ | | PARTTEXT special; /* special text pointers */ | |
| MESSAGE msg; /* internal message pointers */ | | MESSAGE msg; /* internal message pointers */ | |
|
| | | union { /* driver internal use */ | |
| | | unsigned long data; | |
| | | void *ptr; | |
| | | } spare; | |
| unsigned int sequence : 1; /* saved sequence bit */ | | unsigned int sequence : 1; /* saved sequence bit */ | |
| unsigned int dirty : 1; /* driver internal use */ | | unsigned int dirty : 1; /* driver internal use */ | |
| unsigned int filter : 1; /* driver internal use */ | | unsigned int filter : 1; /* driver internal use */ | |
|
| unsigned long data; /* driver internal use */ | | | |
| } private; | | } private; | |
| /* internal date */ | | /* internal date */ | |
| unsigned int day : 5; /* day of month (1-31) */ | | unsigned int day : 5; /* day of month (1-31) */ | |
| unsigned int month : 4; /* month of year (1-12) */ | | unsigned int month : 4; /* month of year (1-12) */ | |
| unsigned int year : 7; /* year since BASEYEAR (expires in 127 yrs)
*/ | | unsigned int year : 7; /* year since BASEYEAR (expires in 127 yrs)
*/ | |
| unsigned int hours: 5; /* hours (0-23) */ | | unsigned int hours: 5; /* hours (0-23) */ | |
| unsigned int minutes: 6; /* minutes (0-59) */ | | unsigned int minutes: 6; /* minutes (0-59) */ | |
| unsigned int seconds: 6; /* seconds (0-59) */ | | unsigned int seconds: 6; /* seconds (0-59) */ | |
| unsigned int zoccident : 1; /* non-zero if west of UTC */ | | unsigned int zoccident : 1; /* non-zero if west of UTC */ | |
| unsigned int zhours : 4; /* hours from UTC (0-12) */ | | unsigned int zhours : 4; /* hours from UTC (0-12) */ | |
| | | | |
| skipping to change at line 902 | | skipping to change at line 956 | |
| }; | | }; | |
| | | | |
| /* Sort cache */ | | /* Sort cache */ | |
| | | | |
| #define SORTCACHE struct sort_cache | | #define SORTCACHE struct sort_cache | |
| | | | |
| SORTCACHE { | | SORTCACHE { | |
| unsigned int sorted : 1; /* message has been sorted */ | | unsigned int sorted : 1; /* message has been sorted */ | |
| unsigned int postsorted : 1; /* message has been postsorted */ | | unsigned int postsorted : 1; /* message has been postsorted */ | |
| unsigned int refwd : 1; /* subject is a re or fwd */ | | unsigned int refwd : 1; /* subject is a re or fwd */ | |
|
| | | unsigned int dirty : 1; /* has data not written to backup */ | |
| SORTPGM *pgm; /* sort program */ | | SORTPGM *pgm; /* sort program */ | |
| unsigned long num; /* message number (sequence or UID) */ | | unsigned long num; /* message number (sequence or UID) */ | |
| unsigned long date; /* sent date */ | | unsigned long date; /* sent date */ | |
| unsigned long arrival; /* arrival date */ | | unsigned long arrival; /* arrival date */ | |
| unsigned long size; /* message size */ | | unsigned long size; /* message size */ | |
| char *from; /* from string */ | | char *from; /* from string */ | |
| char *to; /* to string */ | | char *to; /* to string */ | |
| char *cc; /* cc string */ | | char *cc; /* cc string */ | |
| char *subject; /* extracted subject string */ | | char *subject; /* extracted subject string */ | |
|
| char *original_subject; /* original subject string */ | | | |
| char *message_id; /* message-id string */ | | char *message_id; /* message-id string */ | |
| char *unique; /* unique string, normally message-i
d */ | | char *unique; /* unique string, normally message-i
d */ | |
| STRINGLIST *references; /* references string */ | | STRINGLIST *references; /* references string */ | |
| }; | | }; | |
| /* ACL list */ | | /* ACL list */ | |
| | | | |
| #define ACLLIST struct acl_list | | #define ACLLIST struct acl_list | |
| | | | |
| ACLLIST { | | ACLLIST { | |
| char *identifier; /* authentication identifier */ | | char *identifier; /* authentication identifier */ | |
| | | | |
| skipping to change at line 970 | | skipping to change at line 1024 | |
| unsigned int tryssl : 1; /* stream tryssl flag */ | | unsigned int tryssl : 1; /* stream tryssl flag */ | |
| unsigned int mulnewsrc : 1; /* stream use multiple newsrc files */ | | unsigned int mulnewsrc : 1; /* stream use multiple newsrc files */ | |
| unsigned int perm_seen : 1; /* permanent Seen flag */ | | unsigned int perm_seen : 1; /* permanent Seen flag */ | |
| unsigned int perm_deleted : 1;/* permanent Deleted flag */ | | unsigned int perm_deleted : 1;/* permanent Deleted flag */ | |
| unsigned int perm_flagged : 1;/* permanent Flagged flag */ | | unsigned int perm_flagged : 1;/* permanent Flagged flag */ | |
| unsigned int perm_answered :1;/* permanent Answered flag */ | | unsigned int perm_answered :1;/* permanent Answered flag */ | |
| unsigned int perm_draft : 1; /* permanent Draft flag */ | | unsigned int perm_draft : 1; /* permanent Draft flag */ | |
| unsigned int kwd_create : 1; /* can create new keywords */ | | unsigned int kwd_create : 1; /* can create new keywords */ | |
| unsigned int uid_nosticky : 1;/* UIDs are not preserved */ | | unsigned int uid_nosticky : 1;/* UIDs are not preserved */ | |
| unsigned int unhealthy : 1; /* unhealthy protocol negotiations */ | | unsigned int unhealthy : 1; /* unhealthy protocol negotiations */ | |
|
| | | unsigned int nokod : 1; /* suppress kiss-of-death */ | |
| | | unsigned int sniff : 1; /* metadata only */ | |
| unsigned long perm_user_flags;/* mask of permanent user flags */ | | unsigned long perm_user_flags;/* mask of permanent user flags */ | |
| unsigned long gensym; /* generated tag */ | | unsigned long gensym; /* generated tag */ | |
| unsigned long nmsgs; /* # of associated msgs */ | | unsigned long nmsgs; /* # of associated msgs */ | |
| unsigned long recent; /* # of recent msgs */ | | unsigned long recent; /* # of recent msgs */ | |
| unsigned long uid_validity; /* UID validity sequence */ | | unsigned long uid_validity; /* UID validity sequence */ | |
| unsigned long uid_last; /* last assigned UID */ | | unsigned long uid_last; /* last assigned UID */ | |
| char *user_flags[NUSERFLAGS]; /* pointers to user flags in bit ord
er */ | | char *user_flags[NUSERFLAGS]; /* pointers to user flags in bit ord
er */ | |
| unsigned long cachesize; /* size of message cache */ | | unsigned long cachesize; /* size of message cache */ | |
| MESSAGECACHE **cache; /* message cache array */ | | MESSAGECACHE **cache; /* message cache array */ | |
| SORTCACHE **sc; /* sort cache array */ | | SORTCACHE **sc; /* sort cache array */ | |
| unsigned long msgno; /* message number of `current' message */ | | unsigned long msgno; /* message number of `current' message */ | |
| ENVELOPE *env; /* scratch buffer for envelope */ | | ENVELOPE *env; /* scratch buffer for envelope */ | |
| BODY *body; /* scratch buffer for body */ | | BODY *body; /* scratch buffer for body */ | |
| SIZEDTEXT text; /* scratch buffer for text */ | | SIZEDTEXT text; /* scratch buffer for text */ | |
| struct { | | struct { | |
| char *name; /* mailbox name to snarf from */ | | char *name; /* mailbox name to snarf from */ | |
| unsigned long time; /* last snarf time */ | | unsigned long time; /* last snarf time */ | |
| long options; /* snarf open options */ | | long options; /* snarf open options */ | |
| } snarf; | | } snarf; | |
|
| union { /* internal use only */ | | struct { /* internal use only */ | |
| struct { /* search temporaries */ | | struct { /* search temporaries */ | |
| STRINGLIST *string; /* string(s) to search */ | | STRINGLIST *string; /* string(s) to search */ | |
| long result; /* search result */ | | long result; /* search result */ | |
| char *text; /* cache of fetched text */ | | char *text; /* cache of fetched text */ | |
| } search; | | } search; | |
|
| | | STRING string; /* stringstruct return hack */ | |
| } private; | | } private; | |
| /* reserved for use by main program */ | | /* reserved for use by main program */ | |
| void *sparep; /* spare pointer */ | | void *sparep; /* spare pointer */ | |
| unsigned int spare : 1; /* first spare bit */ | | unsigned int spare : 1; /* first spare bit */ | |
| unsigned int spare2 : 1; /* second spare bit */ | | unsigned int spare2 : 1; /* second spare bit */ | |
| unsigned int spare3 : 1; /* third spare bit */ | | unsigned int spare3 : 1; /* third spare bit */ | |
| unsigned int spare4 : 1; /* fourth spare bit */ | | unsigned int spare4 : 1; /* fourth spare bit */ | |
| unsigned int spare5 : 1; /* fifth spare bit */ | | unsigned int spare5 : 1; /* fifth spare bit */ | |
| unsigned int spare6 : 1; /* sixth spare bit */ | | unsigned int spare6 : 1; /* sixth spare bit */ | |
| unsigned int spare7 : 1; /* seventh spare bit */ | | unsigned int spare7 : 1; /* seventh spare bit */ | |
| | | | |
| skipping to change at line 1059 | | skipping to change at line 1116 | |
| long (*sout) (void *stream,char *string,unsigned long size); | | long (*sout) (void *stream,char *string,unsigned long size); | |
| void (*close) (void *stream); | | void (*close) (void *stream); | |
| char *(*host) (void *stream); | | char *(*host) (void *stream); | |
| char *(*remotehost) (void *stream); | | char *(*remotehost) (void *stream); | |
| unsigned long (*port) (void *stream); | | unsigned long (*port) (void *stream); | |
| char *(*localhost) (void *stream); | | char *(*localhost) (void *stream); | |
| }; | | }; | |
| | | | |
| /* Mailgets data identifier */ | | /* Mailgets data identifier */ | |
| | | | |
|
| typedef struct GETS_DATA { | | typedef struct getsdata { | |
| MAILSTREAM *stream; | | MAILSTREAM *stream; | |
| unsigned long msgno; | | unsigned long msgno; | |
| char *what; | | char *what; | |
| STRINGLIST *stl; | | STRINGLIST *stl; | |
| unsigned long first; | | unsigned long first; | |
| unsigned long last; | | unsigned long last; | |
| long flags; | | long flags; | |
| } GETS_DATA; | | } GETS_DATA; | |
| | | | |
| #define INIT_GETS(md,s,m,w,f,l) \ | | #define INIT_GETS(md,s,m,w,f,l) \ | |
| | | | |
| skipping to change at line 1098 | | skipping to change at line 1155 | |
| unsigned int soml : 1; /* supports SOML */ | | unsigned int soml : 1; /* supports SOML */ | |
| unsigned int saml : 1; /* supports SAML */ | | unsigned int saml : 1; /* supports SAML */ | |
| unsigned int expn : 1; /* supports EXPN */ | | unsigned int expn : 1; /* supports EXPN */ | |
| unsigned int help : 1; /* supports HELP */ | | unsigned int help : 1; /* supports HELP */ | |
| unsigned int turn : 1; /* supports TURN */ | | unsigned int turn : 1; /* supports TURN */ | |
| unsigned int etrn : 1; /* supports ETRN */ | | unsigned int etrn : 1; /* supports ETRN */ | |
| unsigned int starttls:1;/* supports STARTTLS */ | | unsigned int starttls:1;/* supports STARTTLS */ | |
| unsigned int relay : 1; /* supports relaying */ | | unsigned int relay : 1; /* supports relaying */ | |
| unsigned int pipe : 1; /* supports pipelining */ | | unsigned int pipe : 1; /* supports pipelining */ | |
| unsigned int ensc : 1; /* supports enhanced status codes */ | | unsigned int ensc : 1; /* supports enhanced status codes */ | |
|
| | | unsigned int bmime : 1; /* supports BINARYMIME */ | |
| | | unsigned int chunk : 1; /* supports CHUNKING */ | |
| } service; | | } service; | |
| struct { /* 8-bit MIME transport */ | | struct { /* 8-bit MIME transport */ | |
| unsigned int ok : 1; /* supports 8-bit MIME */ | | unsigned int ok : 1; /* supports 8-bit MIME */ | |
| unsigned int want : 1; /* want 8-bit MIME */ | | unsigned int want : 1; /* want 8-bit MIME */ | |
| } eightbit; | | } eightbit; | |
| struct { /* delivery status notification */ | | struct { /* delivery status notification */ | |
| unsigned int ok : 1; /* supports DSN */ | | unsigned int ok : 1; /* supports DSN */ | |
| unsigned int want : 1; /* want DSN */ | | unsigned int want : 1; /* want DSN */ | |
| struct { /* notification options */ | | struct { /* notification options */ | |
| /* notify on failure */ | | /* notify on failure */ | |
| | | | |
| skipping to change at line 1121 | | skipping to change at line 1180 | |
| /* notify on success */ | | /* notify on success */ | |
| unsigned int success : 1; | | unsigned int success : 1; | |
| } notify; | | } notify; | |
| unsigned int full : 1; /* return full headers */ | | unsigned int full : 1; /* return full headers */ | |
| char *envid; /* envelope identifier as xtext */ | | char *envid; /* envelope identifier as xtext */ | |
| } dsn; | | } dsn; | |
| struct { /* size declaration */ | | struct { /* size declaration */ | |
| unsigned int ok : 1; /* supports SIZE */ | | unsigned int ok : 1; /* supports SIZE */ | |
| unsigned long limit; /* maximum size supported */ | | unsigned long limit; /* maximum size supported */ | |
| } size; | | } size; | |
|
| | | struct { /* deliverby declaration */ | |
| | | unsigned int ok : 1; /* supports DELIVERBY */ | |
| | | unsigned long minby; /* minimum by-time */ | |
| | | } deliverby; | |
| | | struct { /* authenticated turn */ | |
| | | unsigned int ok : 1; /* supports ATRN */ | |
| | | char *domains; /* domains */ | |
| | | } atrn; | |
| /* supported SASL authenticators */ | | /* supported SASL authenticators */ | |
| unsigned int auth : MAXAUTHENTICATORS; | | unsigned int auth : MAXAUTHENTICATORS; | |
| } esmtp; | | } esmtp; | |
| struct { /* NNTP specific */ | | struct { /* NNTP specific */ | |
| unsigned int post : 1; /* supports POST */ | | unsigned int post : 1; /* supports POST */ | |
| struct { /* NNTP extensions */ | | struct { /* NNTP extensions */ | |
| unsigned int ok : 1; /* supports extensions */ | | unsigned int ok : 1; /* supports extensions */ | |
| /* supports LISTGROUP */ | | /* supports LISTGROUP */ | |
| unsigned int listgroup : 1; | | unsigned int listgroup : 1; | |
| unsigned int over : 1; /* supports OVER */ | | unsigned int over : 1; /* supports OVER */ | |
| | | | |
| skipping to change at line 1176 | | skipping to change at line 1243 | |
| ENVELOPE *env); | | ENVELOPE *env); | |
| typedef char *(*imapreferral_t) (MAILSTREAM *stream,char *url,long code); | | typedef char *(*imapreferral_t) (MAILSTREAM *stream,char *url,long code); | |
| typedef void (*overview_t) (MAILSTREAM *stream,unsigned long uid,OVERVIEW *
ov, | | typedef void (*overview_t) (MAILSTREAM *stream,unsigned long uid,OVERVIEW *
ov, | |
| unsigned long msgno); | | unsigned long msgno); | |
| typedef unsigned long *(*sorter_t) (MAILSTREAM *stream,char *charset, | | typedef unsigned long *(*sorter_t) (MAILSTREAM *stream,char *charset, | |
| SEARCHPGM *spg,SORTPGM *pgm,long flags); | | SEARCHPGM *spg,SORTPGM *pgm,long flags); | |
| typedef void (*parseline_t) (ENVELOPE *env,char *hdr,char *data,char *host)
; | | typedef void (*parseline_t) (ENVELOPE *env,char *hdr,char *data,char *host)
; | |
| typedef ADDRESS *(*parsephrase_t) (char *phrase,char *end,char *host); | | typedef ADDRESS *(*parsephrase_t) (char *phrase,char *end,char *host); | |
| typedef void *(*blocknotify_t) (int reason,void *data); | | typedef void *(*blocknotify_t) (int reason,void *data); | |
| typedef long (*kinit_t) (char *host,char *reason); | | typedef long (*kinit_t) (char *host,char *reason); | |
|
| | | typedef void (*sendcommand_t) (MAILSTREAM *stream,char *cmd,long flags); | |
| | | typedef char *(*newsrcquery_t) (MAILSTREAM *stream,char *mulname,char *name | |
| | | ); | |
| typedef void (*getacl_t) (MAILSTREAM *stream,char *mailbox,ACLLIST *acl); | | typedef void (*getacl_t) (MAILSTREAM *stream,char *mailbox,ACLLIST *acl); | |
| typedef void (*listrights_t) (MAILSTREAM *stream,char *mailbox,char *id, | | typedef void (*listrights_t) (MAILSTREAM *stream,char *mailbox,char *id, | |
| char *alwaysrights,STRINGLIST *possiblerights)
; | | char *alwaysrights,STRINGLIST *possiblerights)
; | |
| typedef void (*myrights_t) (MAILSTREAM *stream,char *mailbox,char *rights); | | typedef void (*myrights_t) (MAILSTREAM *stream,char *mailbox,char *rights); | |
| typedef void (*quota_t) (MAILSTREAM *stream,char *qroot,QUOTALIST *qlist); | | typedef void (*quota_t) (MAILSTREAM *stream,char *qroot,QUOTALIST *qlist); | |
| typedef void (*quotaroot_t) (MAILSTREAM *stream,char *mbx,STRINGLIST *qroot
); | | typedef void (*quotaroot_t) (MAILSTREAM *stream,char *mbx,STRINGLIST *qroot
); | |
| typedef void (*sortresults_t) (MAILSTREAM *stream,unsigned long *list, | | typedef void (*sortresults_t) (MAILSTREAM *stream,unsigned long *list, | |
| unsigned long size); | | unsigned long size); | |
|
| typedef void (*sendcommand_t) (MAILSTREAM *stream,char *cmd,long flags); | | | |
| typedef char *(*newsrcquery_t) (MAILSTREAM *stream,char *mulname,char *name | | | |
| ); | | | |
| typedef char *(*userprompt_t) (void); | | typedef char *(*userprompt_t) (void); | |
| typedef long (*append_t) (MAILSTREAM *stream,void *data,char **flags, | | typedef long (*append_t) (MAILSTREAM *stream,void *data,char **flags, | |
| char **date,STRING **message); | | char **date,STRING **message); | |
|
| | | typedef void (*copyuid_t) (MAILSTREAM *stream,char *mailbox, | |
| | | unsigned long uidvalidity,SEARCHSET *sourceset, | |
| | | SEARCHSET *destset); | |
| | | typedef void (*appenduid_t) (char *mailbox,unsigned long uidvalidity, | |
| | | SEARCHSET *set); | |
| | | typedef long (*dirfmttest_t) (char *name); | |
| | | typedef long (*scancontents_t) (char *name,char *contents,unsigned long csi | |
| | | z, | |
| | | unsigned long fsiz); | |
| | | | |
| typedef void (*freeeltsparep_t) (void **sparep); | | typedef void (*freeeltsparep_t) (void **sparep); | |
| typedef void (*freeenvelopesparep_t) (void **sparep); | | typedef void (*freeenvelopesparep_t) (void **sparep); | |
| typedef void (*freebodysparep_t) (void **sparep); | | typedef void (*freebodysparep_t) (void **sparep); | |
| typedef void (*freestreamsparep_t) (void **sparep); | | typedef void (*freestreamsparep_t) (void **sparep); | |
| typedef void *(*sslstart_t) (void *stream,char *host,unsigned long flags); | | typedef void *(*sslstart_t) (void *stream,char *host,unsigned long flags); | |
| typedef long (*sslcertificatequery_t) (char *reason,char *host,char *cert); | | typedef long (*sslcertificatequery_t) (char *reason,char *host,char *cert); | |
| typedef void (*sslfailure_t) (char *host,char *reason,unsigned long flags); | | typedef void (*sslfailure_t) (char *host,char *reason,unsigned long flags); | |
| typedef void (*logouthook_t) (void *data); | | typedef void (*logouthook_t) (void *data); | |
|
| | | typedef char *(*sslclientcert_t) (void); | |
| | | typedef char *(*sslclientkey_t) (void); | |
| /* Globals */ | | /* Globals */ | |
| | | | |
| extern char *body_types[]; /* defined body type strings */ | | extern char *body_types[]; /* defined body type strings */ | |
| extern char *body_encodings[]; /* defined body encoding strings */ | | extern char *body_encodings[]; /* defined body encoding strings */ | |
| extern const char *days[]; /* day name strings */ | | extern const char *days[]; /* day name strings */ | |
| extern const char *months[]; /* month name strings */ | | extern const char *months[]; /* month name strings */ | |
| /* Threading */ | | /* Threading */ | |
| | | | |
| /* Thread node */ | | /* Thread node */ | |
| | | | |
| | | | |
| skipping to change at line 1326 | | skipping to change at line 1404 | |
| unsigned long *(*sort) (MAILSTREAM *stream,char *charset,SEARCHPGM *spg, | | unsigned long *(*sort) (MAILSTREAM *stream,char *charset,SEARCHPGM *spg, | |
| SORTPGM *pgm,long flags); | | SORTPGM *pgm,long flags); | |
| /* thread messages */ | | /* thread messages */ | |
| THREADNODE *(*thread) (MAILSTREAM *stream,char *type,char *charset, | | THREADNODE *(*thread) (MAILSTREAM *stream,char *type,char *charset, | |
| SEARCHPGM *spg,long flag); | | SEARCHPGM *spg,long flag); | |
| /* ping mailbox to see if still alive */ | | /* ping mailbox to see if still alive */ | |
| long (*ping) (MAILSTREAM *stream); | | long (*ping) (MAILSTREAM *stream); | |
| /* check for new messages */ | | /* check for new messages */ | |
| void (*check) (MAILSTREAM *stream); | | void (*check) (MAILSTREAM *stream); | |
| /* expunge deleted messages */ | | /* expunge deleted messages */ | |
|
| void (*expunge) (MAILSTREAM *stream); | | long (*expunge) (MAILSTREAM *stream,char *sequence,long options); | |
| /* copy messages to another mailbox */ | | /* copy messages to another mailbox */ | |
| long (*copy) (MAILSTREAM *stream,char *sequence,char *mailbox,long option
s); | | long (*copy) (MAILSTREAM *stream,char *sequence,char *mailbox,long option
s); | |
| /* append string message to mailbox */ | | /* append string message to mailbox */ | |
| long (*append) (MAILSTREAM *stream,char *mailbox,append_t af,void *data); | | long (*append) (MAILSTREAM *stream,char *mailbox,append_t af,void *data); | |
| /* garbage collect stream */ | | /* garbage collect stream */ | |
| void (*gc) (MAILSTREAM *stream,long gcflags); | | void (*gc) (MAILSTREAM *stream,long gcflags); | |
| }; | | }; | |
| | | | |
| #include "linkage.h" | | #include "linkage.h" | |
| /* Compatibility support names for old interfaces */ | | /* Compatibility support names for old interfaces */ | |
| | | | |
| skipping to change at line 1378 | | skipping to change at line 1456 | |
| #define mail_fetchbody_full mail_fetch_body | | #define mail_fetchbody_full mail_fetch_body | |
| #define mail_setflag(stream,sequence,flag) \ | | #define mail_setflag(stream,sequence,flag) \ | |
| mail_flag (stream,sequence,flag,ST_SET) | | mail_flag (stream,sequence,flag,ST_SET) | |
| #define mail_setflag_full(stream,sequence,flag,flags) \ | | #define mail_setflag_full(stream,sequence,flag,flags) \ | |
| mail_flag (stream,sequence,flag,ST_SET | (flags)) | | mail_flag (stream,sequence,flag,ST_SET | (flags)) | |
| #define mail_clearflag(stream,sequence,flag) \ | | #define mail_clearflag(stream,sequence,flag) \ | |
| mail_flag (stream,sequence,flag,NIL) | | mail_flag (stream,sequence,flag,NIL) | |
| #define mail_clearflag_full mail_flag | | #define mail_clearflag_full mail_flag | |
| #define mail_search(stream,criteria) \ | | #define mail_search(stream,criteria) \ | |
| mail_search_full (stream,NIL,mail_criteria (criteria),SE_FREE); | | mail_search_full (stream,NIL,mail_criteria (criteria),SE_FREE); | |
|
| | | #define mail_expunge(stream) \ | |
| | | mail_expunge_full (stream,NIL,NIL) | |
| #define mail_copy(stream,sequence,mailbox) \ | | #define mail_copy(stream,sequence,mailbox) \ | |
| mail_copy_full (stream,sequence,mailbox,NIL) | | mail_copy_full (stream,sequence,mailbox,NIL) | |
| #define mail_move(stream,sequence,mailbox) \ | | #define mail_move(stream,sequence,mailbox) \ | |
| mail_copy_full (stream,sequence,mailbox,CP_MOVE) | | mail_copy_full (stream,sequence,mailbox,CP_MOVE) | |
| #define mail_append(stream,mailbox,message) \ | | #define mail_append(stream,mailbox,message) \ | |
| mail_append_full (stream,mailbox,NIL,NIL,message) | | mail_append_full (stream,mailbox,NIL,NIL,message) | |
| /* Interfaces for SVR4 locking brain-damage workaround */ | | /* Interfaces for SVR4 locking brain-damage workaround */ | |
| | | | |
| /* Driver dispatching */ | | /* Driver dispatching */ | |
| | | | |
| #define SAFE_DELETE(dtb,stream,mailbox) (*dtb->mbxdel) (stream,mailbox) | | #define SAFE_DELETE(dtb,stream,mailbox) (*dtb->mbxdel) (stream,mailbox) | |
| #define SAFE_RENAME(dtb,stream,old,newname) (*dtb->mbxren) (stream,old,newn
ame) | | #define SAFE_RENAME(dtb,stream,old,newname) (*dtb->mbxren) (stream,old,newn
ame) | |
| #define SAFE_STATUS(dtb,stream,mbx,flags) (*dtb->status) (stream,mbx,flags) | | #define SAFE_STATUS(dtb,stream,mbx,flags) (*dtb->status) (stream,mbx,flags) | |
| #define SAFE_COPY(dtb,stream,sequence,mailbox,options) \ | | #define SAFE_COPY(dtb,stream,sequence,mailbox,options) \ | |
| (*dtb->copy) (stream,sequence,mailbox,options) | | (*dtb->copy) (stream,sequence,mailbox,options) | |
| #define SAFE_APPEND(dtb,stream,mailbox,af,data) \ | | #define SAFE_APPEND(dtb,stream,mailbox,af,data) \ | |
| (*dtb->append) (stream,mailbox,af,data) | | (*dtb->append) (stream,mailbox,af,data) | |
| #define SAFE_SCAN_CONTENTS(dtb,name,contents,csiz,fsiz) \ | | #define SAFE_SCAN_CONTENTS(dtb,name,contents,csiz,fsiz) \ | |
|
| dummy_scan_contents (name,contents,csiz,fsiz) | | scan_contents (dtb,name,contents,csiz,fsiz) | |
| | | | |
| /* Driver callbacks */ | | /* Driver callbacks */ | |
| | | | |
| #define MM_EXISTS mm_exists | | #define MM_EXISTS mm_exists | |
| #define MM_EXPUNGED mm_expunged | | #define MM_EXPUNGED mm_expunged | |
| #define MM_FLAGS mm_flags | | #define MM_FLAGS mm_flags | |
| #define MM_NOTIFY mm_notify | | #define MM_NOTIFY mm_notify | |
| #define MM_STATUS mm_status | | #define MM_STATUS mm_status | |
| #define MM_LOG mm_log | | #define MM_LOG mm_log | |
| #define MM_CRITICAL mm_critical | | #define MM_CRITICAL mm_critical | |
| | | | |
| skipping to change at line 1447 | | skipping to change at line 1527 | |
| void mail_scan (MAILSTREAM *stream,char *ref,char *pat,char *contents); | | void mail_scan (MAILSTREAM *stream,char *ref,char *pat,char *contents); | |
| void mail_list (MAILSTREAM *stream,char *ref,char *pat); | | void mail_list (MAILSTREAM *stream,char *ref,char *pat); | |
| void mail_lsub (MAILSTREAM *stream,char *ref,char *pat); | | void mail_lsub (MAILSTREAM *stream,char *ref,char *pat); | |
| long mail_subscribe (MAILSTREAM *stream,char *mailbox); | | long mail_subscribe (MAILSTREAM *stream,char *mailbox); | |
| long mail_unsubscribe (MAILSTREAM *stream,char *mailbox); | | long mail_unsubscribe (MAILSTREAM *stream,char *mailbox); | |
| long mail_create (MAILSTREAM *stream,char *mailbox); | | long mail_create (MAILSTREAM *stream,char *mailbox); | |
| long mail_delete (MAILSTREAM *stream,char *mailbox); | | long mail_delete (MAILSTREAM *stream,char *mailbox); | |
| long mail_rename (MAILSTREAM *stream,char *old,char *newname); | | long mail_rename (MAILSTREAM *stream,char *old,char *newname); | |
| long mail_status (MAILSTREAM *stream,char *mbx,long flags); | | long mail_status (MAILSTREAM *stream,char *mbx,long flags); | |
| long mail_status_default (MAILSTREAM *stream,char *mbx,long flags); | | long mail_status_default (MAILSTREAM *stream,char *mbx,long flags); | |
|
| MAILSTREAM *mail_open (MAILSTREAM *oldstream,char *name,long options); | | MAILSTREAM *mail_open (MAILSTREAM *stream,char *name,long options); | |
| | | MAILSTREAM *mail_open_work (DRIVER *d,MAILSTREAM *stream,char *name, | |
| | | long options); | |
| MAILSTREAM *mail_close_full (MAILSTREAM *stream,long options); | | MAILSTREAM *mail_close_full (MAILSTREAM *stream,long options); | |
| MAILHANDLE *mail_makehandle (MAILSTREAM *stream); | | MAILHANDLE *mail_makehandle (MAILSTREAM *stream); | |
| void mail_free_handle (MAILHANDLE **handle); | | void mail_free_handle (MAILHANDLE **handle); | |
| MAILSTREAM *mail_stream (MAILHANDLE *handle); | | MAILSTREAM *mail_stream (MAILHANDLE *handle); | |
| void mail_fetch_fast (MAILSTREAM *stream,char *sequence,long flags); | | void mail_fetch_fast (MAILSTREAM *stream,char *sequence,long flags); | |
| void mail_fetch_flags (MAILSTREAM *stream,char *sequence,long flags); | | void mail_fetch_flags (MAILSTREAM *stream,char *sequence,long flags); | |
| void mail_fetch_overview (MAILSTREAM *stream,char *sequence,overview_t ofn)
; | | void mail_fetch_overview (MAILSTREAM *stream,char *sequence,overview_t ofn)
; | |
| void mail_fetch_overview_sequence (MAILSTREAM *stream,char *sequence, | | void mail_fetch_overview_sequence (MAILSTREAM *stream,char *sequence, | |
| overview_t ofn); | | overview_t ofn); | |
| void mail_fetch_overview_default (MAILSTREAM *stream,overview_t ofn); | | void mail_fetch_overview_default (MAILSTREAM *stream,overview_t ofn); | |
| | | | |
| skipping to change at line 1476 | | skipping to change at line 1558 | |
| char *mail_fetch_mime (MAILSTREAM *stream,unsigned long msgno,char *section
, | | char *mail_fetch_mime (MAILSTREAM *stream,unsigned long msgno,char *section
, | |
| unsigned long *len,long flags); | | unsigned long *len,long flags); | |
| char *mail_fetch_body (MAILSTREAM *stream,unsigned long msgno,char *section
, | | char *mail_fetch_body (MAILSTREAM *stream,unsigned long msgno,char *section
, | |
| unsigned long *len,long flags); | | unsigned long *len,long flags); | |
| long mail_partial_text (MAILSTREAM *stream,unsigned long msgno,char *sectio
n, | | long mail_partial_text (MAILSTREAM *stream,unsigned long msgno,char *sectio
n, | |
| unsigned long first,unsigned long last,long flags); | | unsigned long first,unsigned long last,long flags); | |
| long mail_partial_body (MAILSTREAM *stream,unsigned long msgno,char *sectio
n, | | long mail_partial_body (MAILSTREAM *stream,unsigned long msgno,char *sectio
n, | |
| unsigned long first,unsigned long last,long flags); | | unsigned long first,unsigned long last,long flags); | |
| char *mail_fetch_text_return (GETS_DATA *md,SIZEDTEXT *t,unsigned long *len
); | | char *mail_fetch_text_return (GETS_DATA *md,SIZEDTEXT *t,unsigned long *len
); | |
| char *mail_fetch_string_return (GETS_DATA *md,STRING *bs,unsigned long i, | | char *mail_fetch_string_return (GETS_DATA *md,STRING *bs,unsigned long i, | |
|
| unsigned long *len); | | unsigned long *len,long flags); | |
| long mail_read (void *stream,unsigned long size,char *buffer); | | long mail_read (void *stream,unsigned long size,char *buffer); | |
| unsigned long mail_uid (MAILSTREAM *stream,unsigned long msgno); | | unsigned long mail_uid (MAILSTREAM *stream,unsigned long msgno); | |
| unsigned long mail_msgno (MAILSTREAM *stream,unsigned long uid); | | unsigned long mail_msgno (MAILSTREAM *stream,unsigned long uid); | |
| void mail_fetchfrom (char *s,MAILSTREAM *stream,unsigned long msgno, | | void mail_fetchfrom (char *s,MAILSTREAM *stream,unsigned long msgno, | |
| long length); | | long length); | |
| void mail_fetchsubject (char *s,MAILSTREAM *stream,unsigned long msgno, | | void mail_fetchsubject (char *s,MAILSTREAM *stream,unsigned long msgno, | |
| long length); | | long length); | |
| MESSAGECACHE *mail_elt (MAILSTREAM *stream,unsigned long msgno); | | MESSAGECACHE *mail_elt (MAILSTREAM *stream,unsigned long msgno); | |
| void mail_flag (MAILSTREAM *stream,char *sequence,char *flag,long flags); | | void mail_flag (MAILSTREAM *stream,char *sequence,char *flag,long flags); | |
| long mail_search_full (MAILSTREAM *stream,char *charset,SEARCHPGM *pgm, | | long mail_search_full (MAILSTREAM *stream,char *charset,SEARCHPGM *pgm, | |
| long flags); | | long flags); | |
| long mail_search_default (MAILSTREAM *stream,char *charset,SEARCHPGM *pgm, | | long mail_search_default (MAILSTREAM *stream,char *charset,SEARCHPGM *pgm, | |
| long flags); | | long flags); | |
| long mail_ping (MAILSTREAM *stream); | | long mail_ping (MAILSTREAM *stream); | |
| void mail_check (MAILSTREAM *stream); | | void mail_check (MAILSTREAM *stream); | |
|
| void mail_expunge (MAILSTREAM *stream); | | long mail_expunge_full (MAILSTREAM *stream,char *sequence,long options); | |
| long mail_copy_full (MAILSTREAM *stream,char *sequence,char *mailbox, | | long mail_copy_full (MAILSTREAM *stream,char *sequence,char *mailbox, | |
| long options); | | long options); | |
| long mail_append_full (MAILSTREAM *stream,char *mailbox,char *flags,char *d
ate, | | long mail_append_full (MAILSTREAM *stream,char *mailbox,char *flags,char *d
ate, | |
| STRING *message); | | STRING *message); | |
| long mail_append_multiple (MAILSTREAM *stream,char *mailbox,append_t af, | | long mail_append_multiple (MAILSTREAM *stream,char *mailbox,append_t af, | |
| void *data); | | void *data); | |
| void mail_gc (MAILSTREAM *stream,long gcflags); | | void mail_gc (MAILSTREAM *stream,long gcflags); | |
| void mail_gc_msg (MESSAGE *msg,long gcflags); | | void mail_gc_msg (MESSAGE *msg,long gcflags); | |
| void mail_gc_body (BODY *body); | | void mail_gc_body (BODY *body); | |
| BODY *mail_body (MAILSTREAM *stream,unsigned long msgno, | | BODY *mail_body (MAILSTREAM *stream,unsigned long msgno, | |
| | | | |
| skipping to change at line 1527 | | skipping to change at line 1609 | |
| long flags); | | long flags); | |
| long mail_search_msg (MAILSTREAM *stream,unsigned long msgno,char *section, | | long mail_search_msg (MAILSTREAM *stream,unsigned long msgno,char *section, | |
| SEARCHPGM *pgm); | | SEARCHPGM *pgm); | |
| long mail_search_header_text (char *s,STRINGLIST *st); | | long mail_search_header_text (char *s,STRINGLIST *st); | |
| long mail_search_header (SIZEDTEXT *hdr,STRINGLIST *st); | | long mail_search_header (SIZEDTEXT *hdr,STRINGLIST *st); | |
| long mail_search_text (MAILSTREAM *stream,unsigned long msgno,char *section
, | | long mail_search_text (MAILSTREAM *stream,unsigned long msgno,char *section
, | |
| STRINGLIST *st,long flags); | | STRINGLIST *st,long flags); | |
| long mail_search_body (MAILSTREAM *stream,unsigned long msgno,BODY *body, | | long mail_search_body (MAILSTREAM *stream,unsigned long msgno,BODY *body, | |
| char *prefix,unsigned long section,long flags); | | char *prefix,unsigned long section,long flags); | |
| long mail_search_string (SIZEDTEXT *s,char *charset,STRINGLIST **st); | | long mail_search_string (SIZEDTEXT *s,char *charset,STRINGLIST **st); | |
|
| | | long mail_search_string_work (SIZEDTEXT *s,STRINGLIST **st); | |
| long mail_search_keyword (MAILSTREAM *stream,MESSAGECACHE *elt,STRINGLIST *
st, | | long mail_search_keyword (MAILSTREAM *stream,MESSAGECACHE *elt,STRINGLIST *
st, | |
| long flag); | | long flag); | |
| long mail_search_addr (ADDRESS *adr,STRINGLIST *st); | | long mail_search_addr (ADDRESS *adr,STRINGLIST *st); | |
| char *mail_search_gets (readfn_t f,void *stream,unsigned long size, | | char *mail_search_gets (readfn_t f,void *stream,unsigned long size, | |
| GETS_DATA *md); | | GETS_DATA *md); | |
| SEARCHPGM *mail_criteria (char *criteria); | | SEARCHPGM *mail_criteria (char *criteria); | |
| int mail_criteria_date (unsigned short *date); | | int mail_criteria_date (unsigned short *date); | |
| int mail_criteria_string (STRINGLIST **s); | | int mail_criteria_string (STRINGLIST **s); | |
| unsigned short mail_shortdate (unsigned int year,unsigned int month, | | unsigned short mail_shortdate (unsigned int year,unsigned int month, | |
| unsigned int day); | | unsigned int day); | |
|
| | | SEARCHSET *mail_parse_set (char *s,char **ret); | |
| | | SEARCHSET *mail_append_set (SEARCHSET *set,unsigned long msgno); | |
| unsigned long *mail_sort (MAILSTREAM *stream,char *charset,SEARCHPGM *spg, | | unsigned long *mail_sort (MAILSTREAM *stream,char *charset,SEARCHPGM *spg, | |
| SORTPGM *pgm,long flags); | | SORTPGM *pgm,long flags); | |
| unsigned long *mail_sort_cache (MAILSTREAM *stream,SORTPGM *pgm,SORTCACHE *
*sc, | | unsigned long *mail_sort_cache (MAILSTREAM *stream,SORTPGM *pgm,SORTCACHE *
*sc, | |
| long flags); | | long flags); | |
| unsigned long *mail_sort_msgs (MAILSTREAM *stream,char *charset,SEARCHPGM *
spg, | | unsigned long *mail_sort_msgs (MAILSTREAM *stream,char *charset,SEARCHPGM *
spg, | |
| SORTPGM *pgm,long flags); | | SORTPGM *pgm,long flags); | |
| SORTCACHE **mail_sort_loadcache (MAILSTREAM *stream,SORTPGM *pgm); | | SORTCACHE **mail_sort_loadcache (MAILSTREAM *stream,SORTPGM *pgm); | |
| unsigned int mail_strip_subject (char *t,char **ret); | | unsigned int mail_strip_subject (char *t,char **ret); | |
| char *mail_strip_subject_wsp (char *s); | | char *mail_strip_subject_wsp (char *s); | |
| char *mail_strip_subject_blob (char *s); | | char *mail_strip_subject_blob (char *s); | |
| | | | |
| skipping to change at line 1635 | | skipping to change at line 1720 | |
| void net_close (NETSTREAM *stream); | | void net_close (NETSTREAM *stream); | |
| char *net_host (NETSTREAM *stream); | | char *net_host (NETSTREAM *stream); | |
| char *net_remotehost (NETSTREAM *stream); | | char *net_remotehost (NETSTREAM *stream); | |
| unsigned long net_port (NETSTREAM *stream); | | unsigned long net_port (NETSTREAM *stream); | |
| char *net_localhost (NETSTREAM *stream); | | char *net_localhost (NETSTREAM *stream); | |
| | | | |
| long sm_subscribe (char *mailbox); | | long sm_subscribe (char *mailbox); | |
| long sm_unsubscribe (char *mailbox); | | long sm_unsubscribe (char *mailbox); | |
| char *sm_read (void **sdb); | | char *sm_read (void **sdb); | |
| | | | |
|
| long dummy_scan_contents (char *name,char *contents,unsigned long csiz, | | | |
| unsigned long fsiz); | | | |
| | | | |
| void ssl_onceonlyinit (void); | | void ssl_onceonlyinit (void); | |
| char *ssl_start_tls (char *s); | | char *ssl_start_tls (char *s); | |
| void ssl_server_init (char *server); | | void ssl_server_init (char *server); | |
| | | | |
| /* Server I/O functions */ | | /* Server I/O functions */ | |
| | | | |
| int PBIN (void); | | int PBIN (void); | |
| char *PSIN (char *s,int n); | | char *PSIN (char *s,int n); | |
| long PSINR (char *s,unsigned long n); | | long PSINR (char *s,unsigned long n); | |
| int PBOUT (int c); | | int PBOUT (int c); | |
| | | | |
End of changes. 45 change blocks. |
| 29 lines changed or deleted | | 114 lines changed or added | |
|
| utf8.h | | utf8.h | |
|
| | | /* ======================================================================== | |
| | | * Copyright 1988-2006 University of Washington | |
| | | * | |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); | |
| | | * you may not use this file except in compliance with the License. | |
| | | * You may obtain a copy of the License at | |
| | | * | |
| | | * http://www.apache.org/licenses/LICENSE-2.0 | |
| | | * | |
| | | * | |
| | | * ======================================================================== | |
| | | */ | |
| | | | |
| /* | | /* | |
| * Program: UTF-8 routines | | * Program: UTF-8 routines | |
| * | | * | |
| * Author: Mark Crispin | | * Author: Mark Crispin | |
| * Networks and Distributed Computing | | * Networks and Distributed Computing | |
| * Computing & Communications | | * Computing & Communications | |
| * University of Washington | | * University of Washington | |
| * Administration Building, AG-44 | | * Administration Building, AG-44 | |
| * Seattle, WA 98195 | | * Seattle, WA 98195 | |
| * Internet: MRC@CAC.Washington.EDU | | * Internet: MRC@CAC.Washington.EDU | |
| * | | * | |
| * Date: 11 June 1997 | | * Date: 11 June 1997 | |
|
| * Last Edited: 7 April 2005 | | * Last Edited: 30 August 2006 | |
| * | | | |
| * The IMAP toolkit provided in this Distribution is | | | |
| * Copyright 1988-2005 University of Washington. | | | |
| * The full text of our legal notices is contained in the file called | | | |
| * CPYRIGHT, included with this Distribution. | | | |
| */ | | */ | |
|
| /* UTF-8 size and conversion routines from UCS-2 values. This will need to | | /* UTF-8 size and conversion routines from UCS-2 values (thus in the BMP). | |
| * be changed if UTF-16 data (surrogate pairs) are ever an issue. | | * Don't use these if UTF-16 data (surrogate pairs) are an issue. | |
| | | * For UCS-4 values, use the utf8_size() and utf8_put() functions. | |
| */ | | */ | |
| | | | |
|
| #define UTF8_SIZE(c) ((c & 0xff80) ? ((c & 0xf800) ? 3 : 2) : 1) | | #define UTF8_SIZE_BMP(c) ((c & 0xff80) ? ((c & 0xf800) ? 3 : 2) : 1) | |
| | | | |
|
| #define UTF8_PUT(b,c) { \ | | #define UTF8_PUT_BMP(b,c) { \ | |
| if (c & 0xff80) { /* non-ASCII? */ \ | | if (c & 0xff80) { /* non-ASCII? */ \ | |
| if (c & 0xf800) { /* three byte code */ \ | | if (c & 0xf800) { /* three byte code */ \ | |
| *b++ = 0xe0 | (c >> 12); \ | | *b++ = 0xe0 | (c >> 12); \ | |
| *b++ = 0x80 | ((c >> 6) & 0x3f); \ | | *b++ = 0x80 | ((c >> 6) & 0x3f); \ | |
| } \ | | } \ | |
| else *b++ = 0xc0 | ((c >> 6) & 0x3f); \ | | else *b++ = 0xc0 | ((c >> 6) & 0x3f); \ | |
| *b++ = 0x80 | (c & 0x3f); \ | | *b++ = 0x80 | (c & 0x3f); \ | |
| } \ | | } \ | |
| else *b++ = c; \ | | else *b++ = c; \ | |
| } | | } | |
| | | | |
|
| | | /* utf8_text() flag values */ | |
| | | | |
| | | #define U8T_CASECANON 2 /* canonicalize case */ | |
| | | #define U8T_DECOMPOSE 4 /* decompose */ | |
| | | /* full canonicalization */ | |
| | | #define U8T_CANONICAL (U8T_CASECANON | U8T_DECOMPOSE) | |
| | | | |
| /* utf8_get() return values */ | | /* utf8_get() return values */ | |
| | | | |
| /* 0x0000 - 0xffff BMP plane */ | | /* 0x0000 - 0xffff BMP plane */ | |
| #define U8GM_NONBMP 0xffff0000 /* mask for non-BMP values */ | | #define U8GM_NONBMP 0xffff0000 /* mask for non-BMP values */ | |
| /* 0x10000 - 0x10ffff extended planes */ | | /* 0x10000 - 0x10ffff extended planes */ | |
| /* 0x110000 - 0x7ffffff non-Unicode */ | | /* 0x110000 - 0x7ffffff non-Unicode */ | |
| #define U8G_ERROR 0x80000000 /* error flag */ | | #define U8G_ERROR 0x80000000 /* error flag */ | |
| #define U8G_BADCONT U8G_ERROR+1 /* continuation when not in progress
*/ | | #define U8G_BADCONT U8G_ERROR+1 /* continuation when not in progress
*/ | |
| #define U8G_INCMPLT U8G_ERROR+2 /* incomplete UTF-8 character */ | | #define U8G_INCMPLT U8G_ERROR+2 /* incomplete UTF-8 character */ | |
| #define U8G_NOTUTF8 U8G_ERROR+3 /* not a valid UTF-8 octet */ | | #define U8G_NOTUTF8 U8G_ERROR+3 /* not a valid UTF-8 octet */ | |
| #define U8G_ENDSTRG U8G_ERROR+4 /* end of string */ | | #define U8G_ENDSTRG U8G_ERROR+4 /* end of string */ | |
|
| | | #define U8G_ENDSTRI U8G_ERROR+5 /* end of string w/ incomplete UTF-8 | |
| | | char */ | |
| | | | |
| | | /* ucs4_width() return values */ | |
| | | | |
| | | #define U4W_ERROR 0x80000000 /* error flags */ | |
| | | #define U4W_NOTUNCD U4W_ERROR+1 /* not a Unicode char */ | |
| | | #define U4W_PRIVATE U4W_ERROR+2 /* private-space plane */ | |
| | | #define U4W_SSPCHAR U4W_ERROR+3 /* Supplementary Special-purpose Pla | |
| | | ne */ | |
| | | #define U4W_UNASSGN U4W_ERROR+4 /* unassigned space plane */ | |
| | | #define U4W_CTLSRGT U4W_ERROR+5 /* C0/C1 control or surrogate */ | |
| /* ISO-2022 engine states */ | | /* ISO-2022 engine states */ | |
| | | | |
| #define I2S_CHAR 0 /* character */ | | #define I2S_CHAR 0 /* character */ | |
| #define I2S_ESC 1 /* previous character was ESC */ | | #define I2S_ESC 1 /* previous character was ESC */ | |
| #define I2S_MUL 2 /* previous character was multi-byte code */ | | #define I2S_MUL 2 /* previous character was multi-byte code */ | |
| #define I2S_INT 3 /* previous character was intermediate */ | | #define I2S_INT 3 /* previous character was intermediate */ | |
| | | | |
| /* ISO-2022 Gn selections */ | | /* ISO-2022 Gn selections */ | |
| | | | |
| #define I2C_G0 0 /* G0 */ | | #define I2C_G0 0 /* G0 */ | |
| | | | |
| skipping to change at line 300 | | skipping to change at line 326 | |
| #define BITS7 0x7f /* 7-bit value mask */ | | #define BITS7 0x7f /* 7-bit value mask */ | |
| #define BIT8 0x80 /* 8th bit mask */ | | #define BIT8 0x80 /* 8th bit mask */ | |
| /* The following saves us from having to have yet more charset tables */ | | /* The following saves us from having to have yet more charset tables */ | |
| | | | |
| /* Unicode codepoints */ | | /* Unicode codepoints */ | |
| | | | |
| /* ISO 646 substituted Unicode codepoints */ | | /* ISO 646 substituted Unicode codepoints */ | |
| #define UCS2_POUNDSTERLING 0x00a3 | | #define UCS2_POUNDSTERLING 0x00a3 | |
| #define UCS2_YEN 0x00a5 | | #define UCS2_YEN 0x00a5 | |
| #define UCS2_OVERLINE 0x203e | | #define UCS2_OVERLINE 0x203e | |
|
| | | #define UCS2_EURO 0x20ac | |
| #define UCS2_KATAKANA 0xff61 /* first katakana codepoint */ | | #define UCS2_KATAKANA 0xff61 /* first katakana codepoint */ | |
| #define UCS2_BOM 0xfeff /* byte order mark */ | | #define UCS2_BOM 0xfeff /* byte order mark */ | |
| #define UCS2_BOGON 0xfffd /* replacement character */ | | #define UCS2_BOGON 0xfffd /* replacement character */ | |
| | | | |
|
| | | #define UCS4_BMPBASE 0x0000 /* Basic Multilingual Plane */ | |
| | | #define UCS4_SMPBASE 0x10000 /* Supplementary Multilinugual Plane */ | |
| | | #define UCS4_SIPBASE 0x20000 /* Supplementary Ideographic Plane */ | |
| | | #define UCS4_SSPBASE 0xe0000 /* Supplementary Special-purpose Plane */ | |
| | | #define UCS4_PVTBASE 0xf0000 /* private-space (two planes) */ | |
| | | #define UCS4_MAXUNICODE 0x10ffff/* highest Unicode codepoint */ | |
| | | | |
| /* UBOGON is used to represent a codepoint in a character set which does n
ot | | /* UBOGON is used to represent a codepoint in a character set which does n
ot | |
| * map to Unicode. It is also used for mapping failures, e.g. incomplete | | * map to Unicode. It is also used for mapping failures, e.g. incomplete | |
| * shift sequences. NOCHAR is used to represent a codepoint in Unicode | | * shift sequences. NOCHAR is used to represent a codepoint in Unicode | |
| * which does not map to the target character set. Note that these names | | * which does not map to the target character set. Note that these names | |
| * have the same text width as 0x????, for convenience in the mapping table
s. | | * have the same text width as 0x????, for convenience in the mapping table
s. | |
| */ | | */ | |
| | | | |
| #define UBOGON UCS2_BOGON | | #define UBOGON UCS2_BOGON | |
| #define NOCHAR 0xffff | | #define NOCHAR 0xffff | |
|
| | | /* Non-Unicode codepoints */ | |
| | | | |
| /* Codepoints in ISO 646 character sets */ | | /* Codepoints in ISO 646 character sets */ | |
| | | | |
| /* British ASCII codepoints */ | | /* British ASCII codepoints */ | |
| | | | |
| #define BRITISH_POUNDSTERLING 0x23 | | #define BRITISH_POUNDSTERLING 0x23 | |
| | | | |
| /* JIS Roman codepoints */ | | /* JIS Roman codepoints */ | |
| | | | |
| #define JISROMAN_YEN 0x5c | | #define JISROMAN_YEN 0x5c | |
| #define JISROMAN_OVERLINE 0x7e | | #define JISROMAN_OVERLINE 0x7e | |
| | | | |
|
| /* Hankaku katakana codepoints & parameters */ | | /* Hankaku katakana codepoints & parameters | |
| | | * | |
| | | * In earlier versions, MAX_KANA_7 and MAX_KANA_8 were the maximum codepoin | |
| | | t | |
| | | * values. Although this made sense, it was confusing with the "max ku" an | |
| | | d | |
| | | * "max ten" values used in the double-byte tables; there are 1-origin, but | |
| | | * the calculated values used for "ku" and "ten" are 0-origin (derived by | |
| | | * substracting the "base"). What this all meant is that for double byte | |
| | | * characters the limit test is of the form (value < max_ku), but for singl | |
| | | e | |
| | | * byte characters (which used the same cell to hold the max ku) the limit | |
| | | * test was (value <= max_ku). | |
| | | * | |
| | | * By making MAX_KANA_[78] be maximum+1, the same (value < max_ku) limit te | |
| | | st | |
| | | * is used throughout. - 6/15/2006 | |
| | | */ | |
| | | | |
| #define MIN_KANA_7 0x21 | | #define MIN_KANA_7 0x21 | |
|
| #define MAX_KANA_7 0x5f | | #define MAX_KANA_7 0x60 /* maximum value + 1 */ | |
| #define KANA_7 (UCS2_KATAKANA - MIN_KANA_7) | | #define KANA_7 (UCS2_KATAKANA - MIN_KANA_7) | |
| #define MIN_KANA_8 (MIN_KANA_7 | BIT8) | | #define MIN_KANA_8 (MIN_KANA_7 | BIT8) | |
| #define MAX_KANA_8 (MAX_KANA_7 | BIT8) | | #define MAX_KANA_8 (MAX_KANA_7 | BIT8) | |
| #define KANA_8 (UCS2_KATAKANA - MIN_KANA_8) | | #define KANA_8 (UCS2_KATAKANA - MIN_KANA_8) | |
| /* Charset scripts */ | | /* Charset scripts */ | |
| | | | |
| /* The term "script" is used here in a very loose sense, enough to make | | /* The term "script" is used here in a very loose sense, enough to make | |
| * purists cringe. Basically, the idea is to give the main program some | | * purists cringe. Basically, the idea is to give the main program some | |
| * idea of how it should treat the characters of text in a charset with | | * idea of how it should treat the characters of text in a charset with | |
| * respect to font, drawing routines, etc. | | * respect to font, drawing routines, etc. | |
| | | | |
| skipping to change at line 395 | | skipping to change at line 443 | |
| struct utf8_eucparam { | | struct utf8_eucparam { | |
| unsigned int base_ku : 8; /* base row */ | | unsigned int base_ku : 8; /* base row */ | |
| unsigned int base_ten : 8; /* base column */ | | unsigned int base_ten : 8; /* base column */ | |
| unsigned int max_ku : 8; /* maximum row */ | | unsigned int max_ku : 8; /* maximum row */ | |
| unsigned int max_ten : 8; /* maximum column */ | | unsigned int max_ten : 8; /* maximum column */ | |
| void *tab; /* conversion table */ | | void *tab; /* conversion table */ | |
| }; | | }; | |
| | | | |
| /* Charset types */ | | /* Charset types */ | |
| | | | |
|
| | | #define CT_UNKNOWN 0 /* unknown 8-bit */ | |
| #define CT_ASCII 1 /* 7-bit ASCII no table */ | | #define CT_ASCII 1 /* 7-bit ASCII no table */ | |
| #define CT_UCS2 2 /* 2 byte 16-bit Unicode no table */ | | #define CT_UCS2 2 /* 2 byte 16-bit Unicode no table */ | |
| #define CT_UCS4 3 /* 4 byte 32-bit Unicode no table */ | | #define CT_UCS4 3 /* 4 byte 32-bit Unicode no table */ | |
| #define CT_1BYTE0 10 /* 1 byte ISO 8859-1 no table */ | | #define CT_1BYTE0 10 /* 1 byte ISO 8859-1 no table */ | |
| #define CT_1BYTE 11 /* 1 byte ASCII + table 0x80-0xff */ | | #define CT_1BYTE 11 /* 1 byte ASCII + table 0x80-0xff */ | |
| #define CT_1BYTE8 12 /* 1 byte table 0x00 - 0xff */ | | #define CT_1BYTE8 12 /* 1 byte table 0x00 - 0xff */ | |
| #define CT_EUC 100 /* 2 byte ASCII + utf8_eucparam base/CS2/CS3
*/ | | #define CT_EUC 100 /* 2 byte ASCII + utf8_eucparam base/CS2/CS3
*/ | |
| #define CT_DBYTE 101 /* 2 byte ASCII + utf8_eucparam */ | | #define CT_DBYTE 101 /* 2 byte ASCII + utf8_eucparam */ | |
| #define CT_DBYTE2 102 /* 2 byte ASCII + utf8_eucparam plane1/2 */ | | #define CT_DBYTE2 102 /* 2 byte ASCII + utf8_eucparam plane1/2 */ | |
|
| #define CT_UTF16 1000 /* 2 byte UTF-16 encoded Unicode no table */ | | #define CT_UTF16 1000 /* variable UTF-16 encoded Unicode no table
*/ | |
| #define CT_UTF8 1001 /* variable UTF-8 encoded Unicode no table *
/ | | #define CT_UTF8 1001 /* variable UTF-8 encoded Unicode no table *
/ | |
| #define CT_UTF7 1002 /* variable UTF-7 encoded Unicode no table *
/ | | #define CT_UTF7 1002 /* variable UTF-7 encoded Unicode no table *
/ | |
|
| #define CT_2022 10000 /* variable ISO-2022 encoded no table*/ | | #define CT_2022 10000 /* variable ISO-2022 encoded no table */ | |
| #define CT_SJIS 10001 /* 2 byte Shift-JIS encoded JIS no table */ | | #define CT_SJIS 10001 /* 2 byte Shift-JIS encoded JIS no table */ | |
| | | | |
| /* UTF-7 engine states */ | | /* UTF-7 engine states */ | |
| | | | |
| #define U7_ASCII 0 /* ASCII character */ | | #define U7_ASCII 0 /* ASCII character */ | |
| #define U7_PLUS 1 /* plus seen */ | | #define U7_PLUS 1 /* plus seen */ | |
| #define U7_UNICODE 2 /* Unicode characters */ | | #define U7_UNICODE 2 /* Unicode characters */ | |
| #define U7_MINUS 3 /* absorbed minus seen */ | | #define U7_MINUS 3 /* absorbed minus seen */ | |
| /* Function prototypes */ | | /* Function prototypes */ | |
| | | | |
|
| | | typedef unsigned long (*ucs4cn_t) (unsigned long c); | |
| | | typedef unsigned long (*ucs4de_t) (unsigned long c,void **more); | |
| | | | |
| SCRIPT *utf8_script (char *script); | | SCRIPT *utf8_script (char *script); | |
|
| CHARSET *utf8_charset (char *charset); | | const CHARSET *utf8_charset (char *charset); | |
| | | char *utf8_badcharset (char *charset); | |
| long utf8_text (SIZEDTEXT *text,char *charset,SIZEDTEXT *ret,long flags); | | long utf8_text (SIZEDTEXT *text,char *charset,SIZEDTEXT *ret,long flags); | |
|
| unsigned short *utf8_rmap (char *charset); | | long utf8_text_cs (SIZEDTEXT *text,const CHARSET *cs,SIZEDTEXT *ret, | |
| | | ucs4cn_t cv,ucs4de_t de); | |
| long utf8_cstext (SIZEDTEXT *text,char *charset,SIZEDTEXT *ret, | | long utf8_cstext (SIZEDTEXT *text,char *charset,SIZEDTEXT *ret, | |
|
| unsigned short errch); | | unsigned long errch); | |
| unsigned long utf8_get (unsigned char **s,unsigned long *i); | | | |
| long utf8_cstocstext (SIZEDTEXT *text,char *sc,SIZEDTEXT *ret,char *dc, | | long utf8_cstocstext (SIZEDTEXT *text,char *sc,SIZEDTEXT *ret,char *dc, | |
|
| unsigned short errch); | | unsigned long errch); | |
| void utf8_text_1byte0 (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab); | | unsigned short *utf8_rmap (char *charset); | |
| void utf8_text_1byte (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab); | | unsigned short *utf8_rmap_cs (const CHARSET *cs); | |
| void utf8_text_1byte8 (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab); | | unsigned short *utf8_rmap_gen (const CHARSET *cs,unsigned short *oldmap); | |
| void utf8_text_euc (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab); | | long utf8_rmaptext (SIZEDTEXT *text,unsigned short *rmap,SIZEDTEXT *ret, | |
| void utf8_text_dbyte (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab); | | unsigned long errch,long iso2022jp); | |
| void utf8_text_dbyte2 (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab); | | long ucs4_rmaptext (unsigned long *ucs4,unsigned long len,unsigned short *r | |
| void utf8_text_sjis (SIZEDTEXT *text,SIZEDTEXT *ret); | | map, | |
| void utf8_text_2022 (SIZEDTEXT *text,SIZEDTEXT *ret); | | SIZEDTEXT *ret,unsigned long errch); | |
| void utf8_text_utf7 (SIZEDTEXT *text,SIZEDTEXT *ret); | | long ucs4_rmaplen (unsigned long *ucs4,unsigned long len,unsigned short *rm | |
| | | ap, | |
| | | unsigned long errch); | |
| | | long ucs4_rmapbuf (unsigned char *t,unsigned long *ucs4,unsigned long len, | |
| | | unsigned short *rmap,unsigned long errch); | |
| | | unsigned long utf8_get (unsigned char **s,unsigned long *i); | |
| | | unsigned long ucs4_cs_get (CHARSET *cs,unsigned char **s,unsigned long *i); | |
| | | const CHARSET *utf8_infercharset (SIZEDTEXT *src); | |
| | | long utf8_validate (unsigned char *s,unsigned long i); | |
| | | void utf8_text_1byte0 (SIZEDTEXT *text,SIZEDTEXT *ret,ucs4cn_t cv,ucs4de_t | |
| | | de); | |
| | | void utf8_text_1byte (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab,ucs4cn_t cv, | |
| | | ucs4de_t de); | |
| | | void utf8_text_1byte8 (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab,ucs4cn_t cv | |
| | | , | |
| | | ucs4de_t de); | |
| | | void utf8_text_euc (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab,ucs4cn_t cv, | |
| | | ucs4de_t de); | |
| | | void utf8_text_dbyte (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab,ucs4cn_t cv, | |
| | | ucs4de_t de); | |
| | | void utf8_text_dbyte2 (SIZEDTEXT *text,SIZEDTEXT *ret,void *tab,ucs4cn_t cv | |
| | | , | |
| | | ucs4de_t de); | |
| | | void utf8_text_sjis (SIZEDTEXT *text,SIZEDTEXT *ret,ucs4cn_t cv,ucs4de_t de | |
| | | ); | |
| | | void utf8_text_2022 (SIZEDTEXT *text,SIZEDTEXT *ret,ucs4cn_t cv,ucs4de_t de | |
| | | ); | |
| | | void utf8_text_utf7 (SIZEDTEXT *text,SIZEDTEXT *ret,ucs4cn_t cv,ucs4de_t de | |
| | | ); | |
| | | void utf8_text_utf8 (SIZEDTEXT *text,SIZEDTEXT *ret,ucs4cn_t cv,ucs4de_t de | |
| | | ); | |
| | | void utf8_text_ucs2 (SIZEDTEXT *text,SIZEDTEXT *ret,ucs4cn_t cv,ucs4de_t de | |
| | | ); | |
| | | void utf8_text_ucs4 (SIZEDTEXT *text,SIZEDTEXT *ret,ucs4cn_t cv,ucs4de_t de | |
| | | ); | |
| | | void utf8_text_utf16 (SIZEDTEXT *text,SIZEDTEXT *ret,ucs4cn_t cv,ucs4de_t d | |
| | | e); | |
| | | unsigned long utf8_size (unsigned long c); | |
| | | unsigned char *utf8_put (unsigned char *s,unsigned long c); | |
| | | unsigned long ucs4_titlecase (unsigned long c); | |
| | | long ucs4_width (unsigned long c); | |
| | | long utf8_strwidth (unsigned char *s); | |
| | | long utf8_textwidth (SIZEDTEXT *utf8); | |
| | | unsigned long ucs4_decompose (unsigned long c,void **more); | |
| void utf8_searchpgm (SEARCHPGM *pgm,char *charset); | | void utf8_searchpgm (SEARCHPGM *pgm,char *charset); | |
|
| void utf8_stringlist (STRINGLIST *st,char *charset); | | static void utf8_stringlist (STRINGLIST *st,char *charset); | |
| long utf8_mime2text (SIZEDTEXT *src,SIZEDTEXT *dst); | | long utf8_mime2text (SIZEDTEXT *src,SIZEDTEXT *dst,long flags); | |
| unsigned char *mime2_token (unsigned char *s,unsigned char *se, | | unsigned char *mime2_token (unsigned char *s,unsigned char *se, | |
| unsigned char **t); | | unsigned char **t); | |
|
| unsigned char *mime2_text (unsigned char *s,unsigned char *se, | | unsigned char *mime2_text (unsigned char *s,unsigned char *se); | |
| unsigned char **t); | | | |
| long mime2_decode (unsigned char *e,unsigned char *t,unsigned char *te, | | long mime2_decode (unsigned char *e,unsigned char *t,unsigned char *te, | |
| SIZEDTEXT *txt); | | SIZEDTEXT *txt); | |
| | | | |
End of changes. 22 change blocks. |
| 32 lines changed or deleted | | 133 lines changed or added | |
|