/* call 'func' with information about this MIME-part */ static gboolean handle_message_part (MuMsg *msg, GMimeMessagePart *mmsg, GMimeObject *parent, MuMsgOptions opts, unsigned index, MuMsgPartForeachFunc func, gpointer user_data) { MuMsgPart msgpart; memset (&msgpart, 0, sizeof(MuMsgPart)); msgpart.type = "message"; msgpart.subtype = "rfc822"; msgpart.index = index; /* msgpart.size = 0; /\* maybe calculate this? *\/ */ msgpart.part_type = MU_MSG_PART_TYPE_MESSAGE; msgpart.part_type |= get_disposition ((GMimeObject*)mmsg); msgpart.data = (gpointer)mmsg; func (msg, &msgpart, user_data); if (opts & MU_MSG_OPTION_RECURSE_RFC822) return handle_children (msg, g_mime_message_part_get_message (mmsg), opts, index, func, user_data); return TRUE; }
void main_loop() { regenerate(); if (do_specific_syscall == 1) regenerate_random_page(); while (1) { fork_children(); handle_children(); /* Only check taint if it was zero on startup */ if (do_check_tainted == 0) { if (check_tainted() != 0) { output("kernel became tainted!\n"); exit(EXIT_FAILURE); } } if (syscallcount && (shm->execcount >= syscallcount)) exit(EXIT_SUCCESS); if (shm->execcount % 1000 == 0) synclogs(); } }
gboolean mu_msg_part_foreach (MuMsg *msg, MuMsgOptions opts, MuMsgPartForeachFunc func, gpointer user_data) { GMimeMessage *mime_msg; unsigned idx; g_return_val_if_fail (msg, FALSE); if (!mu_msg_load_msg_file (msg, NULL)) return FALSE; idx = 0; mime_msg = GMIME_MESSAGE(msg->_file->_mime_msg); return handle_children (msg, mime_msg, opts, idx, func, user_data); }
char* mu_msg_part_get_text (MuMsg *msg, MuMsgPart *self, MuMsgOptions opts) { GMimeObject *mobj; GMimeMessage *mime_msg; gboolean err; g_return_val_if_fail (msg, NULL); g_return_val_if_fail (self && self->data, NULL); mobj = (GMimeObject*)self->data; err = FALSE; if (GMIME_IS_PART (mobj)) { if (self->part_type & MU_MSG_PART_TYPE_TEXT_PLAIN) return mu_msg_mime_part_to_string ((GMimePart*)mobj, &err); else return NULL; /* non-text MimePart */ } mime_msg = NULL; if (GMIME_IS_MESSAGE_PART (mobj)) mime_msg = g_mime_message_part_get_message ((GMimeMessagePart*)mobj); else if (GMIME_IS_MESSAGE (mobj)) mime_msg = (GMimeMessage*)mobj; if (mime_msg) { GString *gstr; gstr = g_string_sized_new (4096); handle_children (msg, mime_msg, opts, self->index, (MuMsgPartForeachFunc)accumulate_text, &gstr); return g_string_free (gstr, FALSE); } else { g_warning ("%s: cannot get text for %s", __FUNCTION__, G_OBJECT_TYPE_NAME (mobj)); return NULL; } }