diff options
author | Alain Magloire <alainm@gnu.org> | 2001-08-02 03:40:13 +0000 |
---|---|---|
committer | Alain Magloire <alainm@gnu.org> | 2001-08-02 03:40:13 +0000 |
commit | 2996e6161fef5dd0c49eafe8c70eabf397f8f26c (patch) | |
tree | c3c07987fb26249bb13415f0ef015790e8f4836b /mailbox2 | |
parent | c0937f7a740ef14d579ab20c49e4133ebecbc876 (diff) | |
download | mailutils-2996e6161fef5dd0c49eafe8c70eabf397f8f26c.tar.gz mailutils-2996e6161fef5dd0c49eafe8c70eabf397f8f26c.tar.bz2 |
* mailbox2/header.c: Put the stubs.
* mailbox2/include/mailutils/header.h: Prototypes.
* mailbox2/include/mailutils/sys/header.h: Prototype
Diffstat (limited to 'mailbox2')
-rw-r--r-- | mailbox2/header.c | 219 | ||||
-rw-r--r-- | mailbox2/include/mailutils/Makefile.am | 1 | ||||
-rw-r--r-- | mailbox2/include/mailutils/header.h | 116 | ||||
-rw-r--r-- | mailbox2/include/mailutils/sys/Makefile.am | 1 | ||||
-rw-r--r-- | mailbox2/include/mailutils/sys/header.h | 66 |
5 files changed, 403 insertions, 0 deletions
diff --git a/mailbox2/header.c b/mailbox2/header.c new file mode 100644 index 000000000..58dccc809 --- /dev/null +++ b/mailbox2/header.c @@ -0,0 +1,219 @@ +/* GNU mailutils - a suite of utilities for electronic mail + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Library Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdlib.h> +#include <string.h> +#include <mailutils/error.h> +#include <mailutils/sys/header.h> + +int +(header_add_ref) (header_t header) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->add_ref == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->add_ref (header); +} + +int +(header_release) (header_t header) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->release == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->release (header); +} + +int +(header_destroy) (header_t header) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->destroy == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->destroy (header); +} + +int +(header_is_modified) (header_t header) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->is_modified == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->is_modified (header); +} + +int +(header_clear_modified) (header_t header) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->clear_modified == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->clear_modified (header); +} + +int +(header_set_value) (header_t header, const char *fn, const char *fv, + int replace) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->set_value == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->set_value (header, fn, fv, replace); +} + +int +(header_get_value) (header_t header, const char *name, char *buffer, + size_t buflen, size_t *pn) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->get_value == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->get_value (header, name, buffer, buflen, pn); +} + +int +header_aget_value (header_t header, const char *name, char **pvalue) +{ + char *value; + size_t n = 0; + int status = header_get_value (header, name, NULL, 0, &n); + if (status == 0) + { + value = calloc (n + 1, 1); + if (value == NULL) + return MU_ERROR_NO_MEMORY; + header_get_value (header, name, value, n + 1, NULL); + } + else + { + value = malloc (1); + if (value == NULL) + return MU_ERROR_NO_MEMORY; + *value = '\0'; + } + *pvalue = value; + return 0; +} + +int +(header_get_field_count) (header_t header, size_t *pcount) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->get_field_count == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->get_field_count (header, pcount); +} + +int +(header_get_field_name) (header_t header, size_t num, char *buf, + size_t buflen, size_t *pn) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->get_field_name == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->get_field_name (header, num, buf, buflen, pn); +} + +int +header_aget_field_name (header_t header, size_t num, char **pvalue) +{ + char *value; + size_t n = 0; + int status = header_get_field_name (header, num, NULL, 0, &n); + if (status == 0) + { + value = calloc (n + 1, 1); + if (value == NULL) + return MU_ERROR_NO_MEMORY; + header_get_field_name (header, num, value, n + 1, NULL); + } + else + { + value = malloc (1); + if (value == NULL) + return MU_ERROR_NO_MEMORY; + *value = '\0'; + } + *pvalue = value; + return 0; +} + +int +(header_get_field_value) (header_t header, size_t num, char *buf, + size_t buflen, size_t *pn) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->get_field_value == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->get_field_value (header, num, buf, buflen, pn); +} + +int +header_aget_field_value (header_t header, size_t num, char **pvalue) +{ + char *value; + size_t n = 0; + int status = header_get_field_value (header, num, NULL, 0, &n); + if (status == 0) + { + value = calloc (n + 1, 1); + if (value == NULL) + return MU_ERROR_NO_MEMORY; + header_get_field_value (header, num, value, n + 1, NULL); + } + else + { + value = malloc (1); + if (value == NULL) + return MU_ERROR_NO_MEMORY; + *value = '\0'; + } + *pvalue = value; + return status; +} + +int +(header_get_lines) (header_t header, size_t *plines) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->get_lines == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->get_lines (header, plines); +} + +int +(header_get_size) (header_t header, size_t *psize) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->get_size == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->get_size (header, psize); +} + +int +(header_get_stream) (header_t header, stream_t *pstream) +{ + if (header == NULL || header->vtable == NULL + || header->vtable->get_stream == NULL) + return MU_ERROR_NOT_SUPPORTED; + return header->vtable->get_stream (header, pstream); +} diff --git a/mailbox2/include/mailutils/Makefile.am b/mailbox2/include/mailutils/Makefile.am index 51b9a785f..760cc3e69 100644 --- a/mailbox2/include/mailutils/Makefile.am +++ b/mailbox2/include/mailutils/Makefile.am @@ -9,6 +9,7 @@ pkginclude_HEADERS = \ base.h \ envelope.h \ error.h \ + header.h \ iterator.h \ list.h \ mbox.h \ diff --git a/mailbox2/include/mailutils/header.h b/mailbox2/include/mailutils/header.h new file mode 100644 index 000000000..a608c8f1a --- /dev/null +++ b/mailbox2/include/mailutils/header.h @@ -0,0 +1,116 @@ +/* GNU mailutils - a suite of utilities for electronic mail + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef _MAILUTILS_HEADER_H +#define _MAILUTILS_HEADER_H + +#include <sys/types.h> +#include <mailutils/stream.h> + +#ifndef __P +#ifdef __STDC__ +#define __P(args) args +#else +#define __P(args) () +#endif +#endif /*__P */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define MU_HEADER_UNIX_FROM "From " +#define MU_HEADER_RETURN_PATH "Return-Path" +#define MU_HEADER_RECEIVED "Received" +#define MU_HEADER_DATE "Date" +#define MU_HEADER_FROM "From" +#define MU_HEADER_SENDER "Sender" +#define MU_HEADER_RESENT_FROM "Resent-From" +#define MU_HEADER_SUBJECT "Subject" +#define MU_HEADER_SENDER "Sender" +#define MU_HEADER_RESENT_SENDER "Resent-SENDER" +#define MU_HEADER_TO "To" +#define MU_HEADER_RESENT_TO "Resent-To" +#define MU_HEADER_CC "Cc" +#define MU_HEADER_RESENT_CC "Resent-Cc" +#define MU_HEADER_BCC "Bcc" +#define MU_HEADER_RESENT_BCC "Resent-Bcc" +#define MU_HEADER_REPLY_TO "Reply-To" +#define MU_HEADER_RESENT_REPLY_TO "Resent-Reply-To" +#define MU_HEADER_MESSAGE_ID "Message-ID" +#define MU_HEADER_RESENT_MESSAGE_ID "Resent-Message-ID" +#define MU_HEADER_IN_REPLY_TO "In-Reply-To" +#define MU_HEADER_REFERENCE "Reference" +#define MU_HEADER_ENCRYPTED "Encrypted" +#define MU_HEADER_PRECEDENCE "Precedence" +#define MU_HEADER_STATUS "Status" +#define MU_HEADER_CONTENT_LENGTH "Content-Length" +#define MU_HEADER_CONTENT_LANGUAGE "Content-Language" +#define MU_HEADER_CONTENT_TRANSFER_ENCODING "Content-transfer-encoding" +#define MU_HEADER_CONTENT_ID "Content-ID" +#define MU_HEADER_CONTENT_TYPE "Content-Type" +#define MU_HEADER_CONTENT_DESCRIPTION "Content-Description" +#define MU_HEADER_CONTENT_DISPOSITION "Content-Disposition" +#define MU_HEADER_CONTENT_MD5 "Content-MD5" +#define MU_HEADER_MIME_VERSION "MIME-Version" +#define MU_HEADER_X_UIDL "X-UIDL" +#define MU_HEADER_X_UID "X-UID" +#define MU_HEADER_X_IMAPBASE "X-IMAPbase" + +/* Mime support header attribute */ + +/* forward declaration */ +struct _header; +typedef struct _header * header_t; + +extern int header_add_ref __P ((header_t)); +extern int header_release __P ((header_t)); +extern int header_destroy __P ((header_t)); + +extern int header_is_modified __P ((header_t)); +extern int header_clear_modified __P ((header_t)); + +extern int header_set_value __P ((header_t, const char *, + const char *, int)); +extern int header_get_value __P ((header_t, const char *, char *, + size_t, size_t *)); +extern int header_aget_value __P ((header_t, const char *, char **)); + +extern int header_get_field_count __P ((header_t, size_t *)); +extern int header_get_field_value __P ((header_t, size_t, char *, + size_t, size_t *)); +extern int header_aget_field_value __P ((header_t, size_t, char **)); +extern int header_get_field_name __P ((header_t, size_t, char *, + size_t, size_t *)); +extern int header_aget_field_name __P ((header_t, size_t, char **)); + +extern int header_get_stream __P ((header_t, stream_t *)); +extern int header_set_stream __P ((header_t, stream_t, void *)); + +extern int header_get_size __P ((header_t, size_t *)); + +extern int header_get_lines __P ((header_t, size_t *)); + + +extern int header_create __P ((header_t *, const char *, size_t)); + + +#ifdef __cplusplus +} +#endif + +#endif /* _MAILUTILS_HEADER_H */ diff --git a/mailbox2/include/mailutils/sys/Makefile.am b/mailbox2/include/mailutils/sys/Makefile.am index 850c0fdf8..210d40e24 100644 --- a/mailbox2/include/mailutils/sys/Makefile.am +++ b/mailbox2/include/mailutils/sys/Makefile.am @@ -6,6 +6,7 @@ pkginclude_HEADERS = \ bstream.h \ envelope.h \ fstream.h \ + header.h \ iterator.h \ list.h \ mbox.h \ diff --git a/mailbox2/include/mailutils/sys/header.h b/mailbox2/include/mailutils/sys/header.h new file mode 100644 index 000000000..f9f487209 --- /dev/null +++ b/mailbox2/include/mailutils/sys/header.h @@ -0,0 +1,66 @@ +/* GNU mailutils - a suite of utilities for electronic mail + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef _MAILUTILS_SYS_HEADER_H +#define _MAILUTILS_SYS_HEADER_H + +#include <mailutils/header.h> + +#ifndef __P +#ifdef __STDC__ +#define __P(args) args +#else +#define __P(args) () +#endif +#endif /*__P */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct _header_vtable +{ + int (*add_ref) __P ((header_t)); + int (*release) __P ((header_t)); + int (*destroy) __P ((header_t)); + + int (*is_modified) __P ((header_t)); + int (*clear_modified) __P ((header_t)); + + int (*set_value) __P ((header_t, const char *, const char *, int)); + int (*get_value) __P ((header_t, const char *, char *, size_t, size_t *)); + + int (*get_field_count) __P ((header_t, size_t *)); + int (*get_field_value) __P ((header_t, size_t, char *, size_t, size_t *)); + int (*get_field_name) __P ((header_t, size_t, char *, size_t, size_t *)); + + int (*get_stream) __P ((header_t, stream_t *)); + + int (*get_size) __P ((header_t, size_t *)); + int (*get_lines) __P ((header_t, size_t *)); +}; + +struct _header +{ + struct _header_vtable *vtable; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _MAILUTILS_SYS_HEADER_H */ |