Fix buffer clash (one already present, one added in 3.16.0-254-gb9c4e27),
[claws.git] / src / procheader.h
1 /*
2  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3  * Copyright (C) 1999-2014 Hiroyuki Yamamoto and the Claws Mail team
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  * 
18  */
19
20 #ifndef __PROCHEADER_H__
21 #define __PROCHEADER_H__
22
23 #include <glib.h>
24 #include <stdio.h>
25 #include <time.h>
26
27 #include "proctypes.h"
28
29 #define AVATAR_HEADER_UPDATE_HOOKLIST "avatar_header_update"
30
31 struct _HeaderEntry
32 {
33         gchar    *name;
34         gchar    *body;
35         gboolean  unfold;
36 };
37
38 struct _Header
39 {
40         gchar *name;
41         gchar *body;
42 };
43
44 gint procheader_get_one_field           (gchar          **buf,
45                                          FILE           *fp,
46                                          HeaderEntry     hentry[]);
47 gint procheader_get_one_field_asis      (gchar          **buf,
48                                          FILE           *fp);
49
50 GPtrArray *procheader_get_header_array_asis     (FILE           *fp);
51 void procheader_header_array_destroy            (GPtrArray      *harray);
52 void procheader_header_free                     (Header         *header);
53
54 void procheader_get_header_fields       (FILE           *fp,
55                                          HeaderEntry     hentry[]);
56 MsgInfo *procheader_parse_file          (const gchar    *file,
57                                          MsgFlags        flags,
58                                          gboolean        full,
59                                          gboolean        decrypted);
60 MsgInfo *procheader_parse_str           (const gchar    *str,
61                                          MsgFlags        flags,
62                                          gboolean        full,
63                                          gboolean        decrypted);
64 MsgInfo *procheader_parse_stream        (FILE           *fp,
65                                          MsgFlags        flags,
66                                          gboolean        full,
67                                          gboolean        decrypted);
68
69 gchar *procheader_get_fromname          (const gchar    *str);
70
71 gboolean procheader_date_parse_to_tm    (const gchar    *str,
72                                          struct tm      *t,
73                                          char           *zone);
74
75 time_t procheader_date_parse            (gchar          *dest,
76                                          const gchar    *src,
77                                          gint            len);
78 void procheader_date_get_localtime      (gchar          *dest,
79                                          gint            len,
80                                          const time_t    timer);
81 Header * procheader_parse_header        (gchar * buf);
82
83 gboolean procheader_headername_equal    (char * hdr1, char * hdr2);
84 void procheader_header_free             (Header * header);
85
86 gint procheader_get_header_from_msginfo (MsgInfo        *msginfo,
87                                          gchar          **buf,
88                                          gchar          *header);
89
90 HeaderEntry *procheader_entries_from_str(const gchar    *str);
91 void procheader_entries_free            (HeaderEntry    *entries);
92 gboolean procheader_header_is_internal  (const gchar    *hdr_name);
93 #endif /* __PROCHEADER_H__ */