2013-02-23 [paul] 3.9.0cvs101
[claws.git] / src / procheader.h
1 /*
2  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3  * Copyright (C) 1999-2012 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 struct _HeaderEntry
30 {
31         gchar    *name;
32         gchar    *body;
33         gboolean  unfold;
34 };
35
36 struct _Header
37 {
38         gchar *name;
39         gchar *body;
40 };
41
42 gint procheader_get_one_field           (gchar          *buf,
43                                          size_t          len,
44                                          FILE           *fp,
45                                          HeaderEntry     hentry[]);
46 gint procheader_get_one_field_asis      (gchar          *buf,
47                                          size_t          len,
48                                          FILE           *fp);
49 gchar *procheader_get_unfolded_line     (gchar          *buf,
50                                          size_t          len,
51                                          FILE           *fp);
52
53 GPtrArray *procheader_get_header_array_asis     (FILE           *fp);
54 void procheader_header_array_destroy            (GPtrArray      *harray);
55 void procheader_header_free                     (Header         *header);
56
57 void procheader_get_header_fields       (FILE           *fp,
58                                          HeaderEntry     hentry[]);
59 MsgInfo *procheader_parse_file          (const gchar    *file,
60                                          MsgFlags        flags,
61                                          gboolean        full,
62                                          gboolean        decrypted);
63 MsgInfo *procheader_parse_str           (const gchar    *str,
64                                          MsgFlags        flags,
65                                          gboolean        full,
66                                          gboolean        decrypted);
67 MsgInfo *procheader_parse_stream        (FILE           *fp,
68                                          MsgFlags        flags,
69                                          gboolean        full,
70                                          gboolean        decrypted);
71
72 gchar *procheader_get_fromname          (const gchar    *str);
73
74 gboolean procheader_date_parse_to_tm    (const gchar    *str,
75                                          struct tm      *t,
76                                          char           *zone);
77
78 time_t procheader_date_parse            (gchar          *dest,
79                                          const gchar    *src,
80                                          gint            len);
81 void procheader_date_get_localtime      (gchar          *dest,
82                                          gint            len,
83                                          const time_t    timer);
84 Header * procheader_parse_header        (gchar * buf);
85
86 gboolean procheader_headername_equal    (char * hdr1, char * hdr2);
87 void procheader_header_free             (Header * header);
88
89 gint procheader_get_header_from_msginfo (MsgInfo        *msginfo,
90                                          gchar          *buf,
91                                          gint           len,
92                                          gchar          *header);
93
94 HeaderEntry *procheader_entries_from_str(const gchar    *str);
95 void procheader_entries_free            (HeaderEntry    *entries);
96 #endif /* __PROCHEADER_H__ */