Table of Contents

Name

imhdr_alloc, imhdr_add_line, imhdr_delete_line, imhdr_get_line, imhdr_free, imhdr_free_line - rfc822 header manipulations.

Synopsis

#include <rfc822.h>

int imhdr_alloc(imhdr_t *hdr);

int imhdr_add_line(imhdr_t *hdr, int type, char *line, int insert);

int imhdr_delete_line(imhdr_t hdr, int type);

int imhdr_get_line(imhdr_t hdr, int type, char **line);

int imhdr_free_line(imhdr_t hdr, char *line);

void imhdr_free(imhdr_t hdr);

Description

imhdr_alloc() allocates and initializes a header object referenced by hdr. immd_read_header() is the only other way of creating a header object. Either of these functions must be called prior to calling any of the following.

imhdr_add_line() adds a header line of the specified type to the header object referenced by hdr. type specifies the type of header line being added (e.g., HL_FROM, HL_TO, HL_DATE, etc.). The accepted header types are defined in rfc822_header.h; Header lines of types that are not defined in this file can be generated by using the HL_OTHER type. In this case, the full header line, field name, colon, and body, must be specified (e.g., «X-whatever: bob@yoyo.com"), whereas for known header types, line may specify either the entire header line or just the header value.

If there are several header lines of a given type, insert can be used to specify that the added header line must appear first among the header lines of this type in the header object. A value of 0 will make this line appear in the header after the previously created lines of the same type.

imhdr_delete_line() removes all header lines of the given type from the header object referenced by hdr. As above, the accepted types are defined in rfc822_header.h; specify HL_OTHER for a header line type not recognized by the API.

imhdr_get_line() may be called to extract one header line of a given type. Upon success, line points to the extracted header line (label and value), and the length of this header line is returned. A return value of 0 signifies that there are no or no more header lines of this type, in the header context referenced by hdr. All header line of a given type can be obtained by calling repetedly imhdr_get_line() until 0 is returned.

Every header line obtained with imhdr_get_line() is left to the caller to free, by calling imhdr_free_line().

imhdr_free() must be called to dispose of a previously allocated header object created by immd_read_header() or imhdr_alloc().

Return Values

imhdr_get_line() returns the length in bytes of the line returned, or 0 if there are no (more) line of the given type .

All other calls return 0 when successful.

A value of -1 is returned if the requested header type is invalid.

Notes

The insert argument is not functional in this beta version of the SDK.

The HL_OTHER header type doesn't work in this version. Will be fixed for FCS.

Attributes

center, box; c | c l | l .
Attribute Type Attribute Value
_

Architecture
sparc, x86 _ Availability SUNWimsdk _ MT-Level MT-Safe _ Interface Stability Stable

See Also

imta_header.h(4) , immd_read_header(3)


Table of Contents