static void parse_event_report_folder(struct map_event *event,
const char *value)
{
- if (!value)
- return;
+ g_free(event->folder);
if (g_str_has_prefix(value, "/"))
event->folder = g_strdup(value);
static void parse_event_report_old_folder(struct map_event *event,
const char *value)
{
- if (!value)
- return;
+ g_free(event->old_folder);
if (g_str_has_prefix(value, "/"))
event->old_folder = g_strdup(value);
static void parse_event_report_msg_type(struct map_event *event,
const char *value)
{
+ g_free(event->msg_type);
event->msg_type = g_strdup(value);
}
+static void parse_event_report_date_time(struct map_event *event,
+ const char *value)
+{
+ g_free(event->datetime);
+ event->datetime = g_strdup(value);
+}
+
+static void parse_event_report_subject(struct map_event *event,
+ const char *value)
+{
+ g_free(event->subject);
+ event->subject = g_strdup(value);
+}
+
+static void parse_event_report_sender_name(struct map_event *event,
+ const char *value)
+{
+ g_free(event->sender_name);
+ event->sender_name = g_strdup(value);
+}
+
+static void parse_event_report_priority(struct map_event *event,
+ const char *value)
+{
+ g_free(event->priority);
+ event->priority = g_strdup(value);
+}
+
static struct map_event_report_parser {
const char *name;
void (*func) (struct map_event *event, const char *value);
{ "folder", parse_event_report_folder },
{ "old_folder", parse_event_report_old_folder },
{ "msg_type", parse_event_report_msg_type },
+ { "datetime", parse_event_report_date_time },
+ { "subject", parse_event_report_subject },
+ { "sender_name", parse_event_report_sender_name },
+ { "priority", parse_event_report_priority },
{ }
};
for (parser = event_report_parsers; parser && parser->name;
parser++) {
if (strcasecmp(key, parser->name) == 0) {
- parser->func(event, values[i]);
+ if (values[i])
+ parser->func(event, values[i]);
break;
}
}
g_free(event->folder);
g_free(event->old_folder);
g_free(event->msg_type);
+ g_free(event->datetime);
+ g_free(event->subject);
+ g_free(event->sender_name);
+ g_free(event->priority);
g_free(event);
}