c-client.h   c-client.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: c-client master include for application programs * Program: c-client master include for application programs
* *
* 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: 19 May 2000 * Date: 19 May 2000
* Last Edited: 20 October 2003 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 1988-2003 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
#ifndef __CCLIENT_H /* nobody should include this twice... */ #ifndef __CCLIENT_H /* nobody should include this twice... */
#define __CCLIENT_H #define __CCLIENT_H
#ifdef __cplusplus /* help out people who use C++ compilers */ #ifdef __cplusplus /* help out people who use C++ compilers */
extern "C" { extern "C" {
/* If you use gcc, you may also have to use -fno-operator-names */ /* If you use gcc, you may also have to use -fno-operator-names */
#define private cclientPrivate /* private to c-client */ #define private cclientPrivate /* private to c-client */
#define and cclientAnd /* C99 doesn't realize that ISO 646 is dead */ #define and cclientAnd /* C99 doesn't realize that ISO 646 is dead */
#define or cclientOr #define or cclientOr
#define not cclientNot #define not cclientNot
#endif #endif
#include "mail.h" /* primary interfaces */ #include "mail.h" /* primary interfaces */
#include "osdep.h" /* OS-dependent routines */ #include "osdep.h" /* OS-dependent routines */
#include "rfc822.h" /* RFC822 and MIME routines */ #include "rfc822.h" /* RFC822 and MIME routines */
#include "smtp.h" /* SMTP sending routines */ #include "smtp.h" /* SMTP sending routines */
#include "nntp.h" /* NNTP sending routines */ #include "nntp.h" /* NNTP sending routines */
#include "utf8.h" /* Unicode and charset routines */
#include "misc.h" /* miscellaneous utility routines */ #include "misc.h" /* miscellaneous utility routines */
#ifdef __cplusplus /* undo the C++ mischief */ #ifdef __cplusplus /* undo the C++ mischief */
#undef private #undef private
} }
#endif #endif
#endif #endif
 End of changes. 3 change blocks. 
6 lines changed or deleted 15 lines changed or added


 env.h   env.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: Environment routines * Program: Environment 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: 1 August 1988 * Date: 1 August 1988
* Last Edited: 27 April 2004 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 1988-2004 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* Function prototypes */ /* Function prototypes */
long pmatch_full (unsigned char *s,unsigned char *pat,unsigned char delim); long pmatch_full (unsigned char *s,unsigned char *pat,unsigned char delim);
long dmatch (unsigned char *s,unsigned char *pat,unsigned char delim); long dmatch (unsigned char *s,unsigned char *pat,unsigned char delim);
void *env_parameters (long function,void *value); void *env_parameters (long function,void *value);
void rfc822_date (char *date); void rfc822_date (char *date);
void rfc822_timezone (char *s,void *t); void rfc822_timezone (char *s,void *t);
void internal_date (char *date); void internal_date (char *date);
long server_input_wait (long seconds); long server_input_wait (long seconds);
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 flstring.h   flstring.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: File string routines * Program: File string 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: 15 April 1997 * Date: 15 April 1997
* Last Edited: 24 October 2000 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2000 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
extern STRINGDRIVER file_string; extern STRINGDRIVER file_string;
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 fs.h   fs.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: Free storage management routines * Program: Free storage management 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: 1 August 1988 * Date: 1 August 1988
* Last Edited: 24 October 2000 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2000 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* Function prototypes */ /* Function prototypes */
void *fs_get (size_t size); void *fs_get (size_t size);
void fs_resize (void **block,size_t size); void fs_resize (void **block,size_t size);
void fs_give (void **block); void fs_give (void **block);
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 ftl.h   ftl.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: Crash management routines * Program: Crash management 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: 1 August 1988 * Date: 1 August 1988
* Last Edited: 24 October 2000 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2000 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* Function prototypes */ /* Function prototypes */
void fatal (char *string); void fatal (char *string);
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 imap4r1.h   imap4r1.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: Interactive Mail Access Protocol 4rev1 (IMAP4R1) routines * Program: Interactive Mail Access Protocol 4rev1 (IMAP4R1) 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: 14 October 1988 * Date: 14 October 1988
* 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.
*/ */
/* Protocol levels */ /* Protocol levels */
/* As of October 15, 2003, it is believed that: /* As of October 15, 2003, it is believed that:
* *
* Version RFC Status Known Implementations * Version RFC Status Known Implementations
* ------- --- ------ --------------------- * ------- --- ------ ---------------------
* IMAP1 none extinct experimental TOPS-20 server * IMAP1 none extinct experimental TOPS-20 server
* IMAP2 1064 extinct old TOPS-20, SUMEX servers * IMAP2 1064 extinct old TOPS-20, SUMEX servers
* IMAP2 1176 rare TOPS-20, old UW servers * IMAP2 1176 rare TOPS-20, old UW servers
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 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


 misc.h   misc.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: Miscellaneous utility routines * Program: Miscellaneous utility 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: 5 July 1988 * Date: 5 July 1988
* Last Edited: 27 April 2004 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 1988-2004 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
* *
* This original version of this file is * This original version of this file is
* Copyright 1988 Stanford University * Copyright 1988 Stanford University
* and was developed in the Symbolic Systems Resources Group of the Knowled ge * and was developed in the Symbolic Systems Resources Group of the Knowled ge
* Systems Laboratory at Stanford University in 1987-88, and was funded by the * Systems Laboratory at Stanford University in 1987-88, and was funded by the
* Biomedical Research Technology Program of the NationalInstitutes of Heal th * Biomedical Research Technology Program of the NationalInstitutes of Heal th
* under grant number RR-00785. * under grant number RR-00785.
*/ */
/* Hash table operations */ /* Hash table operations */
skipping to change at line 83 skipping to change at line 91
char *cpystr (const char *string); char *cpystr (const char *string);
char *cpytxt (SIZEDTEXT *dst,char *text,unsigned long size); char *cpytxt (SIZEDTEXT *dst,char *text,unsigned long size);
char *textcpy (SIZEDTEXT *dst,SIZEDTEXT *src); char *textcpy (SIZEDTEXT *dst,SIZEDTEXT *src);
char *textcpystring (SIZEDTEXT *text,STRING *bs); char *textcpystring (SIZEDTEXT *text,STRING *bs);
char *textcpyoffstring (SIZEDTEXT *text,STRING *bs,unsigned long offset, char *textcpyoffstring (SIZEDTEXT *text,STRING *bs,unsigned long offset,
unsigned long size); unsigned long size);
unsigned long find_rightmost_bit (unsigned long *valptr); unsigned long find_rightmost_bit (unsigned long *valptr);
long min (long i,long j); long min (long i,long j);
long max (long i,long j); long max (long i,long j);
long search (unsigned char *base,long basec,unsigned char *pat,long patc); long search (unsigned char *base,long basec,unsigned char *pat,long patc);
long ssearch (unsigned char *base,long basec,unsigned char *pat,long patc);
HASHTAB *hash_create (size_t size); HASHTAB *hash_create (size_t size);
void hash_destroy (HASHTAB **hashtab); void hash_destroy (HASHTAB **hashtab);
void hash_reset (HASHTAB *hashtab); void hash_reset (HASHTAB *hashtab);
unsigned long hash_index (HASHTAB *hashtab,char *key); unsigned long hash_index (HASHTAB *hashtab,char *key);
void **hash_lookup (HASHTAB *hashtab,char *key); void **hash_lookup (HASHTAB *hashtab,char *key);
HASHENT *hash_add (HASHTAB *hashtab,char *key,void *data,long extra); HASHENT *hash_add (HASHTAB *hashtab,char *key,void *data,long extra);
void **hash_lookup_and_add (HASHTAB *hashtab,char *key,void *data,long extr a); void **hash_lookup_and_add (HASHTAB *hashtab,char *key,void *data,long extr a);
unsigned char hex2byte (unsigned char c1,unsigned char c2);
int compare_ulong (unsigned long l1,unsigned long l2); int compare_ulong (unsigned long l1,unsigned long l2);
int compare_uchar (unsigned char c1,unsigned char c2);
int compare_cstring (unsigned char *s1,unsigned char *s2); int compare_cstring (unsigned char *s1,unsigned char *s2);
int compare_csizedtext (unsigned char *s1,SIZEDTEXT *s2); int compare_csizedtext (unsigned char *s1,SIZEDTEXT *s2);
 End of changes. 5 change blocks. 
6 lines changed or deleted 17 lines changed or added


 netmsg.h   netmsg.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: Network message (SMTP/NNTP/POP2/POP3) routines * Program: Network message (SMTP/NNTP/POP2/POP3) 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: 8 June 1995 * Date: 8 June 1995
* Last Edited: 24 October 2000 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2000 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* stream must be void* for use as readfn_t */ /* stream must be void* for use as readfn_t */
long netmsg_read (void *stream,unsigned long count,char *buffer); long netmsg_read (void *stream,unsigned long count,char *buffer);
FILE *netmsg_slurp (NETSTREAM *stream,unsigned long *size,unsigned long *hs iz); FILE *netmsg_slurp (NETSTREAM *stream,unsigned long *size,unsigned long *hs iz);
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 newsrc.h   newsrc.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: Newsrc manipulation routines * Program: Newsrc manipulation 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: 12 September 1994 * Date: 12 September 1994
* Last Edited: 24 October 2000 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2000 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* Function prototypes */ /* Function prototypes */
long newsrc_error (char *fmt,char *text,long errflg); long newsrc_error (char *fmt,char *text,long errflg);
long newsrc_write_error (char *name,FILE *f1,FILE *f2); long newsrc_write_error (char *name,FILE *f1,FILE *f2);
FILE *newsrc_create (MAILSTREAM *stream,int notify); FILE *newsrc_create (MAILSTREAM *stream,int notify);
long newsrc_newstate (FILE *f,char *group,char state,char *nl); long newsrc_newstate (FILE *f,char *group,char state,char *nl);
long newsrc_newmessages (FILE *f,MAILSTREAM *stream,char *nl); long newsrc_newmessages (FILE *f,MAILSTREAM *stream,char *nl);
void newsrc_lsub (MAILSTREAM *stream,char *pattern); void newsrc_lsub (MAILSTREAM *stream,char *pattern);
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 nl.h   nl.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: Newline routines * Program: Newline 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: 1 August 1988 * Date: 1 August 1988
* Last Edited: 27 April 2004 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2004 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* Function prototypes */ /* Function prototypes */
unsigned long strcrlfcpy (unsigned char **dst,unsigned long *dstl, unsigned long strcrlfcpy (unsigned char **dst,unsigned long *dstl,
unsigned char *src,unsigned long srcl); unsigned char *src,unsigned long srcl);
unsigned long strcrlflen (STRING *s); unsigned long strcrlflen (STRING *s);
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 nntp.h   nntp.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: Network News Transfer Protocol (NNTP) routines * Program: Network News Transfer Protocol (NNTP) 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: 10 February 1992 * Date: 10 February 1992
* Last Edited: 22 October 2003 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 1988-2003 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* Constants (should be in nntp.c) */ /* Constants (should be in nntp.c) */
#define NNTPTCPPORT (long) 119 /* assigned TCP contact port */ #define NNTPTCPPORT (long) 119 /* assigned TCP contact port */
/* NNTP open options /* NNTP open options
* For compatibility with the past, NOP_DEBUG must always be 1. * For compatibility with the past, NOP_DEBUG must always be 1.
*/ */
#define NOP_DEBUG (long) 0x1 /* debug protocol negotiations */ #define NOP_DEBUG (long) 0x1 /* debug protocol negotiations */
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 rfc822.h   rfc822.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: RFC 2822 and MIME routines * Program: RFC 2822 and MIME 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: 27 July 1988 * Date: 27 July 1988
* Last Edited: 8 September 2004 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 1988-2004 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
* *
* This original version of this file is * This original version of this file is
* Copyright 1988 Stanford University * Copyright 1988 Stanford University
* and was developed in the Symbolic Systems Resources Group of the Knowled ge * and was developed in the Symbolic Systems Resources Group of the Knowled ge
* Systems Laboratory at Stanford University in 1987-88, and was funded by the * Systems Laboratory at Stanford University in 1987-88, and was funded by the
* Biomedical Research Technology Program of the NationalInstitutes of Heal th * Biomedical Research Technology Program of the NationalInstitutes of Heal th
* under grant number RR-00785. * under grant number RR-00785.
*/ */
#define MAXGROUPDEPTH 50 /* RFC 822 doesn't allow nesting at all */ #define MAXGROUPDEPTH 50 /* RFC [2]822 doesn't allow any group nestin g */
#define MAXMIMEDEPTH 50 /* more than any sane MIMEgram */ #define MAXMIMEDEPTH 50 /* more than any sane MIMEgram */
#define rfc822_write_address(dest,adr) \ /* Output buffering for RFC [2]822 */
rfc822_write_address_full (dest,adr,NIL)
#define rfc822_parse_msg(en,bdy,s,i,bs,host,flags) \ typedef long (*soutr_t) (void *stream,char *string);
rfc822_parse_msg_full (en,bdy,s,i,bs,host,0,flags) typedef long (*rfc822out_t) (char *tmp,ENVELOPE *env,BODY *body,soutr_t f,
void *s,long ok8bit);
typedef struct rfc822buffer {
soutr_t f; /* I/O flush routine */
void *s; /* stream for I/O routine */
char *beg; /* start of buffer */
char *cur; /* current buffer pointer */
char *end; /* end of buffer */
} RFC822BUFFER;
typedef long (*rfc822outfull_t) (RFC822BUFFER *buf,ENVELOPE *env,BODY *body
,
long ok8bit);
/* Function prototypes */ /* Function prototypes */
void rfc822_header (char *header,ENVELOPE *env,BODY *body);
void rfc822_address_line (char **header,char *type,ENVELOPE *env,ADDRESS *a
dr);
void rfc822_header_line (char **header,char *type,ENVELOPE *env,char *text)
;
char *rfc822_write_address_full (char *dest,ADDRESS *adr,char *base);
void rfc822_address (char *dest,ADDRESS *adr);
void rfc822_cat (char *dest,char *src,const char *specials);
void rfc822_write_body_header (char **header,BODY *body);
char *rfc822_default_subtype (unsigned short type); char *rfc822_default_subtype (unsigned short type);
void rfc822_parse_msg_full (ENVELOPE **en,BODY **bdy,char *s,unsigned long i, void rfc822_parse_msg_full (ENVELOPE **en,BODY **bdy,char *s,unsigned long i,
STRING *bs,char *host,unsigned long depth, STRING *bs,char *host,unsigned long depth,
unsigned long flags); unsigned long flags);
void rfc822_parse_content (BODY *body,STRING *bs,char *h,unsigned long dept h, void rfc822_parse_content (BODY *body,STRING *bs,char *h,unsigned long dept h,
unsigned long flags); unsigned long flags);
void rfc822_parse_content_header (BODY *body,char *name,char *s); void rfc822_parse_content_header (BODY *body,char *name,char *s);
void rfc822_parse_parameter (PARAMETER **par,char *text); void rfc822_parse_parameter (PARAMETER **par,char *text);
void rfc822_parse_adrlist (ADDRESS **lst,char *string,char *host); void rfc822_parse_adrlist (ADDRESS **lst,char *string,char *host);
ADDRESS *rfc822_parse_address (ADDRESS **lst,ADDRESS *last,char **string, ADDRESS *rfc822_parse_address (ADDRESS **lst,ADDRESS *last,char **string,
skipping to change at line 71 skipping to change at line 82
ADDRESS *rfc822_parse_addrspec (char *string,char **ret,char *defaulthost); ADDRESS *rfc822_parse_addrspec (char *string,char **ret,char *defaulthost);
char *rfc822_parse_domain (char *string,char **end); char *rfc822_parse_domain (char *string,char **end);
char *rfc822_parse_phrase (char *string); char *rfc822_parse_phrase (char *string);
char *rfc822_parse_word (char *string,const char *delimiters); char *rfc822_parse_word (char *string,const char *delimiters);
char *rfc822_cpy (char *src); char *rfc822_cpy (char *src);
char *rfc822_quote (char *src); char *rfc822_quote (char *src);
ADDRESS *rfc822_cpy_adr (ADDRESS *adr); ADDRESS *rfc822_cpy_adr (ADDRESS *adr);
void rfc822_skipws (char **s); void rfc822_skipws (char **s);
char *rfc822_skip_comment (char **s,long trim); char *rfc822_skip_comment (char **s,long trim);
typedef long (*soutr_t) (void *stream,char *string); long rfc822_output_full (RFC822BUFFER *buf,ENVELOPE *env,BODY *body,long ok
typedef long (*rfc822out_t) (char *t,ENVELOPE *env,BODY *body,soutr_t f, 8);
void *s,long ok8bit); long rfc822_output_flush (RFC822BUFFER *buf);
long rfc822_output_header (RFC822BUFFER *buf,ENVELOPE *env,BODY *body,
long rfc822_output (char *t,ENVELOPE *env,BODY *body,soutr_t f,void *s, const char *specials,long flags);
long ok8bit); long rfc822_output_header_line (RFC822BUFFER *buf,char *type,long resent,
char *text);
long rfc822_output_address_line (RFC822BUFFER *buf,char *type,long resent,
ADDRESS *adr,const char *specials);
long rfc822_output_address_list (RFC822BUFFER *buf,ADDRESS *adr,long pretty
,
const char *specials);
long rfc822_output_address (RFC822BUFFER *buf,ADDRESS *adr);
long rfc822_output_cat (RFC822BUFFER *buf,char *src,const char *specials);
long rfc822_output_parameter (RFC822BUFFER *buf,PARAMETER *param);
long rfc822_output_stringlist (RFC822BUFFER *buf,STRINGLIST *stl);
long rfc822_output_body_header (RFC822BUFFER *buf,BODY *body);
void rfc822_encode_body_7bit (ENVELOPE *env,BODY *body); void rfc822_encode_body_7bit (ENVELOPE *env,BODY *body);
void rfc822_encode_body_8bit (ENVELOPE *env,BODY *body); void rfc822_encode_body_8bit (ENVELOPE *env,BODY *body);
long rfc822_output_body (BODY *body,soutr_t f,void *s); long rfc822_output_text (RFC822BUFFER *buf,BODY *body);
void *rfc822_base64 (unsigned char *src,unsigned long srcl,unsigned long *l en); void *rfc822_base64 (unsigned char *src,unsigned long srcl,unsigned long *l en);
unsigned char *rfc822_binary (void *src,unsigned long srcl,unsigned long *l en); unsigned char *rfc822_binary (void *src,unsigned long srcl,unsigned long *l en);
unsigned char *rfc822_qprint (unsigned char *src,unsigned long srcl, unsigned char *rfc822_qprint (unsigned char *src,unsigned long srcl,
unsigned long *len); unsigned long *len);
unsigned char *rfc822_8bit (unsigned char *src,unsigned long srcl, unsigned char *rfc822_8bit (unsigned char *src,unsigned long srcl,
unsigned long *len); unsigned long *len);
/* Legacy routines for compatibility with the past */
void rfc822_header (char *header,ENVELOPE *env,BODY *body);
void rfc822_header_line (char **header,char *type,ENVELOPE *env,char *text)
;
void rfc822_address_line (char **header,char *type,ENVELOPE *env,ADDRESS *a
dr);
char *rfc822_write_address_full (char *dest,ADDRESS *adr,char *base);
void rfc822_address (char *dest,ADDRESS *adr);
void rfc822_cat (char *dest,char *src,const char *specials);
void rfc822_write_body_header (char **header,BODY *body);
long rfc822_output (char *t,ENVELOPE *env,BODY *body,soutr_t f,void *s,
long ok8bit);
long rfc822_output_body (BODY *body,soutr_t f,void *s);
#define rfc822_write_address(dest,adr) \
rfc822_write_address_full (dest,adr,NIL)
#define rfc822_parse_msg(en,bdy,s,i,bs,host,flags) \
rfc822_parse_msg_full (en,bdy,s,i,bs,host,0,flags)
 End of changes. 10 change blocks. 
27 lines changed or deleted 48 lines changed or added


 smtp.h   smtp.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: Simple Mail Transfer Protocol (SMTP) routines * Program: Simple Mail Transfer Protocol (SMTP) 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: 27 July 1988 * Date: 27 July 1988
* Last Edited: 10 March 2005 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2005 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
* *
* This original version of this file is * This original version of this file is
* Copyright 1988 Stanford University * Copyright 1988 Stanford University
* and was developed in the Symbolic Systems Resources Group of the Knowled ge * and was developed in the Symbolic Systems Resources Group of the Knowled ge
* Systems Laboratory at Stanford University in 1987-88, and was funded by the * Systems Laboratory at Stanford University in 1987-88, and was funded by the
* Biomedical Research Technology Program of the NationalInstitutes of Heal th * Biomedical Research Technology Program of the NationalInstitutes of Heal th
* under grant number RR-00785. * under grant number RR-00785.
*/ */
/* Constants (should be in smtp.c) */ /* Constants (should be in smtp.c) */
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 sslio.h   sslio.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: SSL routines * Program: SSL 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: 7 February 2001 * Date: 7 February 2001
* Last Edited: 7 February 2001 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2001 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* SSL driver */ /* SSL driver */
struct ssl_driver { /* must parallel NETDRIVER in mail.h */ struct ssl_driver { /* must parallel NETDRIVER in mail.h */
SSLSTREAM *(*open) (char *host,char *service,unsigned long port); SSLSTREAM *(*open) (char *host,char *service,unsigned long port);
SSLSTREAM *(*aopen) (NETMBX *mb,char *service,char *usrbuf); SSLSTREAM *(*aopen) (NETMBX *mb,char *service,char *usrbuf);
char *(*getline) (SSLSTREAM *stream); char *(*getline) (SSLSTREAM *stream);
long (*getbuffer) (SSLSTREAM *stream,unsigned long size,char *buffer); long (*getbuffer) (SSLSTREAM *stream,unsigned long size,char *buffer);
long (*soutr) (SSLSTREAM *stream,char *string); long (*soutr) (SSLSTREAM *stream,char *string);
long (*sout) (SSLSTREAM *stream,char *string,unsigned long size); long (*sout) (SSLSTREAM *stream,char *string,unsigned long size);
 End of changes. 2 change blocks. 
6 lines changed or deleted 14 lines changed or added


 tcp.h   tcp.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: TCP/IP routines * Program: TCP/IP 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: 1 August 1988 * Date: 1 August 1988
* Last Edited: 7 January 2002 * Last Edited: 30 August 2006
*
* The IMAP toolkit provided in this Distribution is
* Copyright 2002 University of Washington.
* The full text of our legal notices is contained in the file called
* CPYRIGHT, included with this Distribution.
*/ */
/* Dummy definition overridden by TCP routines */ /* Dummy definition overridden by TCP routines */
#ifndef TCPSTREAM #ifndef TCPSTREAM
#define TCPSTREAM void #define TCPSTREAM void
#endif #endif
/* Function prototypes */ /* Function prototypes */
skipping to change at line 44 skipping to change at line 52
long tcp_getdata (TCPSTREAM *stream); long tcp_getdata (TCPSTREAM *stream);
long tcp_soutr (TCPSTREAM *stream,char *string); long tcp_soutr (TCPSTREAM *stream,char *string);
long tcp_sout (TCPSTREAM *stream,char *string,unsigned long size); long tcp_sout (TCPSTREAM *stream,char *string,unsigned long size);
void tcp_close (TCPSTREAM *stream); void tcp_close (TCPSTREAM *stream);
char *tcp_host (TCPSTREAM *stream); char *tcp_host (TCPSTREAM *stream);
char *tcp_remotehost (TCPSTREAM *stream); char *tcp_remotehost (TCPSTREAM *stream);
unsigned long tcp_port (TCPSTREAM *stream); unsigned long tcp_port (TCPSTREAM *stream);
char *tcp_localhost (TCPSTREAM *stream); char *tcp_localhost (TCPSTREAM *stream);
char *tcp_clientaddr (void); char *tcp_clientaddr (void);
char *tcp_clienthost (void); char *tcp_clienthost (void);
long tcp_clientport (void);
char *tcp_serveraddr (void); char *tcp_serveraddr (void);
char *tcp_serverhost (void); char *tcp_serverhost (void);
long tcp_serverport (void); long tcp_serverport (void);
char *tcp_canonical (char *name); char *tcp_canonical (char *name);
 End of changes. 3 change blocks. 
6 lines changed or deleted 15 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

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/