* lib: get_tags: support X-Label, X-Keywords and Keywords

This commit is contained in:
djcb
2012-08-10 10:07:35 +03:00
parent 9044ccc7f2
commit 96bcf42277

View File

@ -515,33 +515,34 @@ get_references (MuMsgFile *self)
static GSList* static GSList*
get_tags (MuMsgFile *self) get_tags (MuMsgFile *self)
{ {
GSList *lst1, *lst2, *last; GSList *lst;
char *hdr; unsigned u;
struct {
const char *header;
char sepa;
} tagfields[] = {
{ "X-Label", ' ' },
{ "X-Keywords", ',' },
{ "Keywords", ' ' }
};
lst1 = lst2 = NULL; for (lst = NULL, u = 0; u != G_N_ELEMENTS(tagfields); ++u) {
gchar *hdr;
/* X-Label are space-separated */ hdr = mu_msg_file_get_header (self, tagfields[u].header);
hdr = mu_msg_file_get_header (self, "X-Label");
if (hdr) { if (hdr) {
lst1 = mu_str_to_list (hdr, ' ', TRUE); GSList *hlst;
hlst = mu_str_to_list (hdr, tagfields[u].sepa, TRUE);
if (lst)
(g_slist_last (lst))->next = hlst;
else
lst = hlst;
g_free (hdr); g_free (hdr);
} }
/* X-Keywords are ','-separated */
hdr = mu_msg_file_get_header (self, "X-Keywords");
if (hdr) {
lst2 = mu_str_to_list (hdr, ',', TRUE);
g_free (hdr);
} }
if (!lst1) return lst;
return lst2;
/* append lst2, if any */
last = g_slist_last (lst1);
last->next = lst2;
return lst1;
} }