84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | #ifndef	rfc2047_h
 | ||
|  | #define	rfc2047_h
 | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** Copyright 1998 - 2000 Double Precision, Inc.  See COPYING for | ||
|  | ** distribution information. | ||
|  | */ | ||
|  | 
 | ||
|  | #ifdef  __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | static const char rfc2047_h_rcsid[]="$Id$"; | ||
|  | 
 | ||
|  | extern int rfc2047_decode(const char *text, | ||
|  | 		int (*func)(const char *, int, const char *, void *), | ||
|  | 		void *arg); | ||
|  | 
 | ||
|  | extern char *rfc2047_decode_simple(const char *text); | ||
|  | 
 | ||
|  | extern char *rfc2047_decode_enhanced(const char *text, const char *mychset); | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** If libunicode.a is available, like rfc2047_decode_enhanced, but attempt to | ||
|  | ** convert to my preferred charset. | ||
|  | */ | ||
|  | 
 | ||
|  | struct unicode_info; | ||
|  | 
 | ||
|  | extern char *rfc2047_decode_unicode(const char *text, | ||
|  | 	const struct unicode_info *mychset, | ||
|  | 	int options); | ||
|  | 
 | ||
|  | #define	RFC2047_DECODE_DISCARD	1
 | ||
|  | 	/* options: Discard unknown charsets from decoded string. */ | ||
|  | #define RFC2047_DECODE_ABORT	2
 | ||
|  | 	/* options: Abort if we encounter an unknown charset, errno=EINVAL */ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** rfc2047_print is like rfc822_print, except that it converts RFC 2047 | ||
|  | ** MIME encoding to 8 bit text. | ||
|  | */ | ||
|  | 
 | ||
|  | struct rfc822a; | ||
|  | 
 | ||
|  | void rfc2047_print(const struct rfc822a *a, | ||
|  | 	const char *charset, | ||
|  | 	void (*print_func)(char, void *), | ||
|  | 	void (*print_separator)(const char *, void *), void *); | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** And now, let's encode something with RFC 2047.  Encode the following | ||
|  | ** string in the indicated character set, into a malloced buffer.  Returns 0 | ||
|  | ** if malloc failed. | ||
|  | */ | ||
|  | 
 | ||
|  | char *rfc2047_encode_str(const char *str, const char *charset); | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** If you can live with the encoded text being generated on the fly, use | ||
|  | ** rfc2047_encode_callback, which calls a callback function, instead of | ||
|  | ** dynamically allocating memory. | ||
|  | */ | ||
|  | 
 | ||
|  | int rfc2047_encode_callback(const char *str, const char *charset, | ||
|  | 	int (*func)(const char *, size_t, void *), void *arg); | ||
|  | 
 | ||
|  | /*
 | ||
|  | ** rfc2047_encode_header allocates a buffer, and MIME-encodes an RFC822 header | ||
|  | ** | ||
|  | */ | ||
|  | char *rfc2047_encode_header(const struct rfc822a *a, | ||
|  |         const char *charset); | ||
|  | 
 | ||
|  | #ifdef  __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif
 |