Commit 2996e616 2996e6161fef5dd0c49eafe8c70eabf397f8f26c by Alain Magloire

* mailbox2/header.c: Put the stubs.

	* mailbox2/include/mailutils/header.h: Prototypes.
	* mailbox2/include/mailutils/sys/header.h: Prototype
1 parent c0937f7a
/* 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);
}
......@@ -9,6 +9,7 @@ pkginclude_HEADERS = \
base.h \
envelope.h \
error.h \
header.h \
iterator.h \
list.h \
mbox.h \
......
/* 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 */
......@@ -6,6 +6,7 @@ pkginclude_HEADERS = \
bstream.h \
envelope.h \
fstream.h \
header.h \
iterator.h \
list.h \
mbox.h \
......
/* 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 */