static void test_remove (void) { const char *name, *value; GMimeHeaderList *list; GMimeHeader *header; list = header_list_new (); testsuite_check ("remove first header"); try { /* remove the first header */ if (!g_mime_header_list_remove (list, initial[0].name)) throw (exception_new ("failed to remove header")); /* make sure the first header is now the same as the second original header */ header = g_mime_header_list_get_header_at (list, 0); name = g_mime_header_get_name (header); value = g_mime_header_get_value (header); if (strcmp (initial[1].name, name) != 0 || strcmp (initial[1].value, value) != 0) throw (exception_new ("expected second Received header")); /* make sure that the internal hash table was properly updated */ if (!(header = g_mime_header_list_get_header (list, "Received"))) throw (exception_new ("lookup of Received header failed")); if (!(value = g_mime_header_get_value (header))) throw (exception_new ("getting Received header value failed")); if (strcmp (initial[1].value, value) != 0) throw (exception_new ("expected second Received header value")); testsuite_check_passed (); } catch (ex) { testsuite_check_failed ("remove first header: %s", ex->message); } finally; testsuite_check ("remove last header"); try { /* remove the last header */ g_mime_header_list_remove (list, "Message-Id"); if ((header = g_mime_header_list_get_header (list, "Message-Id")) != NULL) throw (exception_new ("lookup of Message-Id should have failed")); testsuite_check_passed (); } catch (ex) { testsuite_check_failed ("remove last header: %s", ex->message); } finally; g_object_unref (list); }
static void content_disposition_changed (GMimeContentDisposition *disposition, gpointer args, GMimeObject *object) { char *str; if (object->disposition) { str = g_mime_content_disposition_to_string (object->disposition, FALSE); g_mime_header_list_set (object->headers, "Content-Disposition", str); g_free (str); } else { g_mime_header_list_remove (object->headers, "Content-Disposition"); } }
static void content_disposition_changed (GMimeContentDisposition *disposition, gpointer args, GMimeObject *object) { char *raw_value; _g_mime_object_block_header_list_changed (object); if (disposition) { raw_value = g_mime_content_disposition_encode (disposition, NULL); _g_mime_header_list_set (object->headers, "Content-Disposition", raw_value); g_free (raw_value); } else { g_mime_header_list_remove (object->headers, "Content-Disposition"); } _g_mime_object_unblock_header_list_changed (object); }