summaryrefslogtreecommitdiff
path: root/mailbox2
diff options
context:
space:
mode:
authorAlain Magloire <alainm@gnu.org>2001-08-02 03:40:13 +0000
committerAlain Magloire <alainm@gnu.org>2001-08-02 03:40:13 +0000
commit2996e6161fef5dd0c49eafe8c70eabf397f8f26c (patch)
treec3c07987fb26249bb13415f0ef015790e8f4836b /mailbox2
parentc0937f7a740ef14d579ab20c49e4133ebecbc876 (diff)
downloadmailutils-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.c219
-rw-r--r--mailbox2/include/mailutils/Makefile.am1
-rw-r--r--mailbox2/include/mailutils/header.h116
-rw-r--r--mailbox2/include/mailutils/sys/Makefile.am1
-rw-r--r--mailbox2/include/mailutils/sys/header.h66
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 */

Return to:

Send suggestions and report system problems to the System administrator.