Libical API Documentation 4.0
Loading...
Searching...
No Matches
sspm.h
1/*======================================================================
2 FILE: sspm.h Mime Parser
3 CREATOR: eric 25 June 2000
4
5 SPDX-FileCopyrightText: 2000, Eric Busboom <eric@civicknowledge.com>
6
7 SPDX-License-Identifier: LGPL-2.1-only OR MPL-2.0
8
9 The Initial Developer of the Original Code is Eric Busboom
10======================================================================*/
11
12#ifndef ICAL_SSPM_H
13#define ICAL_SSPM_H
14
15#include "libical_ical_export.h"
16
17#include <stdbool.h>
18
19enum sspm_major_type
20{
21 SSPM_NO_MAJOR_TYPE,
22 SSPM_TEXT_MAJOR_TYPE,
23 SSPM_IMAGE_MAJOR_TYPE,
24 SSPM_AUDIO_MAJOR_TYPE,
25 SSPM_VIDEO_MAJOR_TYPE,
26 SSPM_APPLICATION_MAJOR_TYPE,
27 SSPM_MULTIPART_MAJOR_TYPE,
28 SSPM_MESSAGE_MAJOR_TYPE,
29 SSPM_UNKNOWN_MAJOR_TYPE
30};
31
32enum sspm_minor_type
33{
34 SSPM_NO_MINOR_TYPE,
35 SSPM_ANY_MINOR_TYPE,
36 SSPM_PLAIN_MINOR_TYPE,
37 SSPM_RFC822_MINOR_TYPE,
38 SSPM_DIGEST_MINOR_TYPE,
39 SSPM_CALENDAR_MINOR_TYPE,
40 SSPM_MIXED_MINOR_TYPE,
41 SSPM_RELATED_MINOR_TYPE,
42 SSPM_ALTERNATIVE_MINOR_TYPE,
43 SSPM_PARALLEL_MINOR_TYPE,
44 SSPM_UNKNOWN_MINOR_TYPE
45};
46
47enum sspm_encoding
48{
49 SSPM_NO_ENCODING,
50 SSPM_QUOTED_PRINTABLE_ENCODING,
51 SSPM_8BIT_ENCODING,
52 SSPM_7BIT_ENCODING,
53 SSPM_BINARY_ENCODING,
54 SSPM_BASE64_ENCODING,
55 SSPM_UNKNOWN_ENCODING
56};
57
58enum sspm_error
59{
60 SSPM_NO_ERROR,
61 SSPM_UNEXPECTED_BOUNDARY_ERROR,
62 SSPM_WRONG_BOUNDARY_ERROR,
63 SSPM_NO_BOUNDARY_ERROR,
64 SSPM_NO_HEADER_ERROR,
65 SSPM_MALFORMED_HEADER_ERROR
66};
67
69 int def;
70 char *boundary;
71 enum sspm_major_type major;
72 enum sspm_minor_type minor;
73 char *minor_text;
74 char **content_type_params;
75 char *charset;
76 enum sspm_encoding encoding;
77 char *filename;
78 char *content_id;
79 enum sspm_error error;
80 char *error_text;
81};
82
83struct sspm_part {
84 struct sspm_header header;
85 int level;
86 size_t data_size;
87 void *data;
88};
89
91 enum sspm_major_type major;
92 enum sspm_minor_type minor;
93 void *(*new_part)(void);
94 void (*add_line)(void *part, struct sspm_header *header, const char *line, size_t size);
95 void *(*end_part)(void *part);
96 void (*free_part)(void *part);
97};
98
99LIBICAL_ICAL_EXPORT const char *sspm_major_type_string(enum sspm_major_type type);
100
101LIBICAL_ICAL_EXPORT const char *sspm_minor_type_string(enum sspm_minor_type type);
102
103LIBICAL_ICAL_EXPORT const char *sspm_encoding_string(enum sspm_encoding type);
104
105LIBICAL_ICAL_EXPORT int sspm_parse_mime(struct sspm_part *parts,
106 size_t max_parts,
107 const struct sspm_action_map *actions,
108 char *(*get_string)(char *s, size_t size, void *data),
109 void *get_string_data, struct sspm_header *first_header);
110
111LIBICAL_ICAL_EXPORT void sspm_free_parts(struct sspm_part *parts, size_t max_parts);
112
113LIBICAL_ICAL_EXPORT char *decode_quoted_printable(char *dest, char *src, size_t *size);
114
115LIBICAL_ICAL_EXPORT char *decode_base64(char *dest, char *src, size_t *size);
116
117LIBICAL_ICAL_EXPORT void sspm_write_mime(struct sspm_part *parts, size_t num_parts,
118 char **output_string, const char *header);
119
120#endif /* ICAL_SSPM_H */
Definition sspm.h:90
Definition sspm.h:68
Definition sspm.h:83