X-Git-Url: https://git.hcoop.net/hcoop/debian/courier-authlib.git/blobdiff_plain/8d138742ae268344f406cb75d79aa6bf853f9d87:/rfc822/rfc822.h..refs/tags/upstream/0.66.1:/libs/rfc822/static/gitweb.js?ds=sidebyside diff --git a/rfc822/rfc822.h b/rfc822/rfc822.h deleted file mode 100644 index e6ff9a7..0000000 --- a/rfc822/rfc822.h +++ /dev/null @@ -1,297 +0,0 @@ -/* -** $Id: rfc822.h,v 1.31 2009/11/22 19:39:52 mrsam Exp $ -*/ -#ifndef rfc822_h -#define rfc822_h - -/* -** Copyright 1998 - 2009 Double Precision, Inc. -** See COPYING for distribution information. -*/ - -#if HAVE_CONFIG_H -#include "../rfc822/config.h" /* VPATH build */ -#endif - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define RFC822_SPECIALS "()<>[]:;@\\,.\"" - -/* -** The text string we want to parse is first tokenized into an array of -** struct rfc822token records. 'ptr' points into the original text -** string, and 'len' has how many characters from 'ptr' belongs to this -** token. -*/ - -struct rfc822token { - struct rfc822token *next; /* Unused by librfc822, for use by - ** clients */ - int token; -/* - Values for token: - - '(' - comment - '"' - quoted string - '<', '>', '@', ',', ';', ':', '.', '[', ']', '%', '!', '=', '?', '/' - RFC atoms. - 0 - atom -*/ - -#define rfc822_is_atom(p) ( (p) == 0 || (p) == '"' || (p) == '(' ) - - const char *ptr; /* Pointer to value for the token. */ - int len; /* Length of token value */ -} ; - -/* -** After the struct rfc822token array is built, it is used to create -** the rfc822addr array, which is the array of addresses (plus -** syntactical fluff) extracted from those text strings. Each rfc822addr -** record has several possible interpretation: -** -** tokens is NULL - syntactical fluff, look in name/nname for tokens -** representing the syntactical fluff ( which is semicolons -** and list name: -** -** tokens is not NULL - actual address. The tokens representing the actual -** address is in tokens/ntokens. If there are comments in -** the address that are possible "real name" for the address -** they are saved in name/nname (name may be null if there -** is none). -** If nname is 1, and name points to a comment token, -** the address was specified in old-style format. Otherwise -** the address was specified in new-style route-addr format. -** -** The tokens and name pointers are set to point to the original rfc822token -** array. -*/ - -struct rfc822addr { - struct rfc822token *tokens; - struct rfc822token *name; -} ; - -/*************************************************************************** -** -** rfc822 tokens -** -***************************************************************************/ - -struct rfc822t { - struct rfc822token *tokens; - int ntokens; -} ; - -struct rfc822t *rfc822t_alloc_new(const char *p, - void (*err_func)(const char *, int, void *), void *); - /* Parse addresses */ - -void rfc822t_free(struct rfc822t *); /* Free rfc822 structure */ - -void rfc822tok_print(const struct rfc822token *, void (*)(char, void *), void *); - /* Print the tokens */ - -/*************************************************************************** -** -** rfc822 addresses -** -***************************************************************************/ - -struct rfc822a { - struct rfc822addr *addrs; - int naddrs; -} ; - -struct rfc822a *rfc822a_alloc(struct rfc822t *); -void rfc822a_free(struct rfc822a *); /* Free rfc822 structure */ - -void rfc822_deladdr(struct rfc822a *, int); - -/* rfc822_print "unparses" the rfc822 structure. Each rfc822addr is "printed" - (via the attached function). NOTE: instead of separating addresses by - commas, the print_separator function is called. -*/ - -int rfc822_print(const struct rfc822a *a, - void (*print_func)(char, void *), - void (*print_separator)(const char *, void *), void *); - -/* rfc822_print_common is an internal function */ - -int rfc822_print_common(const struct rfc822a *a, - char *(*decode_func)(const char *, const char *, int), - const char *chset, - void (*print_func)(char, void *), - void (*print_separator)(const char *, void *), void *); - -/* Extra functions */ - -char *rfc822_gettok(const struct rfc822token *); -char *rfc822_getaddr(const struct rfc822a *, int); -char *rfc822_getaddrs(const struct rfc822a *); -char *rfc822_getaddrs_wrap(const struct rfc822a *, int); - -void rfc822_mkdate_buf(time_t, char *); -const char *rfc822_mkdate(time_t); -time_t rfc822_parsedt(const char *); - -#define CORESUBJ_RE 1 -#define CORESUBJ_FWD 2 - -char *rfc822_coresubj(const char *, int *); -char *rfc822_coresubj_nouc(const char *, int *); -char *rfc822_coresubj_keepblobs(const char *s); - -/* -** Display a header. Takes a raw header value, and formats it for display -** in the given character set. -** -** hdrname -- header name. Determines whether the header contains addresses, -** or unstructured data. -** -** hdrvalue -- the actual value to format. -** -** display_func -- output function. -** -** err_func -- if this function returns a negative value, to indicate an error, -** this may be called just prior to the error return to indicate where the -** formatting error is, in the original header. -** -** ptr -- passthrough last argument to display_func or err_func. -** -** repeatedly invokes display_func to pass the formatted contents. -** -** Returns 0 upon success, -1 upon a failure. -*/ - -int rfc822_display_hdrvalue(const char *hdrname, - const char *hdrvalue, - const char *charset, - void (*display_func)(const char *, size_t, - void *), - void (*err_func)(const char *, int, void *), - void *ptr); - -/* -** Like rfc822_display_hdrvalue, except that the converted header is saved in -** a malloc-ed buffer. The pointer to the malloc-ed buffer is returned, the -** caller is responsible for free-ing it. An error condition is indicated -** by a NULL return value. -*/ - -char *rfc822_display_hdrvalue_tobuf(const char *hdrname, - const char *hdrvalue, - const char *charset, - void (*err_func)(const char *, int, - void *), - void *ptr); - -/* -** Display a recipient's name in a specific character set. -** -** The index-th recipient in the address structure is formatted for the given -** character set. If the index-th entry in the address structure is not -** a recipient address (it represents an obsolete list name indicator), -** this function reproduces it literally. -** -** If the index-th entry in the address structure is a recipient address without -** a name, the address itself is formatted for the given character set. -** -** If 'charset' is NULL, the name is formatted as is, without converting -** it to any character set. -** -** A callback function gets repeatedly invoked to produce the name. -** -** Returns a negative value upon a formatting error. -*/ - -int rfc822_display_name(const struct rfc822a *rfcp, int index, - const char *chset, - void (*print_func)(const char *, size_t, void *), - void *ptr); - -/* -** Display a recipient's name in a specific character set. -** -** Uses rfc822_display_name to place the generated name into a malloc-ed -** buffer. The caller must free it when it is no longer needed. -** -** Returns NULL upon an error. -*/ - -char *rfc822_display_name_tobuf(const struct rfc822a *rfcp, int index, - const char *chset); - -/* -** Display names of all addresses. Each name is followed by a newline -** character. -** -*/ -int rfc822_display_namelist(const struct rfc822a *rfcp, - const char *chset, - void (*print_func)(const char *, size_t, void *), - void *ptr); - -/* -** Display a recipient's address in a specific character set. -** -** The index-th recipient in the address structure is formatted for the given -** character set. If the index-th entry in the address structure is not -** a recipient address (it represents an obsolete list name indicator), -** this function produces an empty string. -** -** If 'charset' is NULL, the address is formatted as is, without converting -** it to any character set. -** -** A callback function gets repeatedly invoked to produce the address. -** -** Returns a negative value upon a formatting error. -*/ - -int rfc822_display_addr(const struct rfc822a *rfcp, int index, - const char *chset, - void (*print_func)(const char *, size_t, void *), - void *ptr); - -/* -** Like rfc822_display_addr, but the resulting displayable string is -** saved in a buffer. Returns a malloc-ed buffer, the caller is responsible -** for free()ing it. A NULL return indicates an error. -*/ - -char *rfc822_display_addr_tobuf(const struct rfc822a *rfcp, int index, - const char *chset); - -/* -** Like rfc822_display_addr, but the user@domain gets supplied in a string. -*/ -int rfc822_display_addr_str(const char *tok, - const char *chset, - void (*print_func)(const char *, size_t, void *), - void *ptr); - -/* -** Like rfc822_display_addr_str, but the resulting displayable string is -** saved in a buffer. Returns a malloc-ed buffer, the caller is responsible -** for free()ing it. A NULL return indicates an error. -*/ -char *rfc822_display_addr_str_tobuf(const char *tok, - const char *chset); - -/* -** address is a hostname, which is IDN-encoded. 'address' may contain an -** optional 'user@', which is preserved. Returns a malloc-ed buffer, the -** caller is responsible for freeing it. -*/ -char *rfc822_encode_domain(const char *address, - const char *charset); - -#ifdef __cplusplus -} -#endif - -#endif