summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@src.gnome.org>2003-07-08 03:15:32 +0000
committerJeffrey Stedfast <fejj@src.gnome.org>2003-07-08 03:15:32 +0000
commitd08f38b8e2787af2785698d55cd720fd5b2d362b (patch)
tree7e0c3ef7ece06bf32a7c11c7a21dfbadb639ed37
parente7608632b4b0081453a90f573081c0e81df1c481 (diff)
downloadgmime-d08f38b8e2787af2785698d55cd720fd5b2d362b.tar.gz
updated to 2.0.8GMIME_2_0_82.0.8
-rw-r--r--ChangeLog6
-rw-r--r--README2
-rw-r--r--configure.in2
-rw-r--r--tests/test-mbox.c1
-rw-r--r--tests/test-mime.c469
5 files changed, 41 insertions, 439 deletions
diff --git a/ChangeLog b/ChangeLog
index 166f8ec3..67f43dc7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-05-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped version to 2.0.8
+
2003-05-22 Jeffrey Stedfast <fejj@ximian.com>
* gmime/gmime-parser.c (parser_construct_multipart): Fixed to
diff --git a/README b/README
index 48d445c0..b3186f26 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
- GMime, version 2.0.7
+ GMime, version 2.0.8
by Jeffrey Stedfast <fejj@ximian.com>
diff --git a/configure.in b/configure.in
index 769b78c4..b476179a 100644
--- a/configure.in
+++ b/configure.in
@@ -12,7 +12,7 @@ AM_CONFIG_HEADER(config.h)
GMIME_MAJOR_VERSION=2
GMIME_MINOR_VERSION=0
-GMIME_MICRO_VERSION=7
+GMIME_MICRO_VERSION=8
GMIME_VERSION=$GMIME_MAJOR_VERSION.$GMIME_MINOR_VERSION.$GMIME_MICRO_VERSION
GMIME_VERSION_INFO=`expr $GMIME_MAJOR_VERSION + $GMIME_MINOR_VERSION`:$GMIME_MICRO_VERSION:$GMIME_MINOR_VERSION
diff --git a/tests/test-mbox.c b/tests/test-mbox.c
index 971015b5..e5f4fc03 100644
--- a/tests/test-mbox.c
+++ b/tests/test-mbox.c
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
+#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
diff --git a/tests/test-mime.c b/tests/test-mime.c
index db699586..beacd585 100644
--- a/tests/test-mime.c
+++ b/tests/test-mime.c
@@ -22,457 +22,52 @@
#include <stdio.h>
#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
#include <gmime/gmime.h>
-#define ENABLE_ZENTIMER
-#include "zentimer.h"
-
-static iconv_t cd = (iconv_t) -1;
-
-void
-test_parser (char *data)
-{
- GMimeParser *parser;
- GMimeMessage *message;
- GMimeStream *stream;
- char *text;
-
- fprintf (stdout, "\nTesting MIME parser...\n\n");
-
- stream = g_mime_stream_mem_new_with_buffer (data, strlen (data));
- parser = g_mime_parser_new ();
- g_mime_parser_init_with_stream (parser, stream);
- message = g_mime_parser_construct_message (parser);
- g_object_unref (parser);
- g_mime_stream_unref (stream);
-
- fprintf (stdout, "Test of GMimeHeader:\nTo: %s\n\n",
- g_mime_message_get_header (message, "To"));
- text = g_mime_message_to_string (message);
- fprintf (stdout, "Result should match previous MIME message dump\n\n%s\n", text);
- g_free (text);
- g_mime_object_unref (GMIME_OBJECT (message));
-}
-
-void
-test_multipart (void)
-{
- GMimeMessage *message;
- GMimeContentType *mime_type;
- GMimeMultipart *multipart;
- GMimePart *text_part, *html_part;
- char *body, *text;
- gboolean is_html;
-
- multipart = g_mime_multipart_new_with_subtype ("alternative");
- /*g_mime_multipart_set_boundary (multipart, "spruce1234567890ABCDEFGHIJK");*/
-
- text_part = g_mime_part_new ();
- mime_type = g_mime_content_type_new ("text", "plain");
- g_mime_part_set_content_type (text_part, mime_type);
- g_mime_part_set_content_id (text_part, "1");
- g_mime_part_set_content_header (text_part, "Content-Test", "test-mime");
- g_mime_part_set_content_description (text_part, "this is a text part");
- g_mime_part_set_content (text_part, "This is the body of my message.\n",
- strlen ("This is the body of my message.\n"));
-
- g_mime_multipart_add_part (multipart, GMIME_OBJECT (text_part));
-
- html_part = g_mime_part_new ();
- mime_type = g_mime_content_type_new ("text", "html");
- g_mime_part_set_content_type (html_part, mime_type);
- g_mime_part_set_filename (html_part, "this is a really really long filename that should force gmime to rfc2184 encode it - yay!.html");
- g_mime_part_set_content_description (html_part, "this is an html part and stuff");
- g_mime_part_set_content (html_part, "<html>\n\t<pre>This is the body of my message.</pre>\n</html>",
- strlen ("<html>\n\t<pre>This is the body of my message.</pre>\n</html>"));
- g_mime_part_set_encoding (html_part, GMIME_PART_ENCODING_BASE64);
- g_mime_part_set_content_id (html_part, "2");
-
- g_mime_multipart_add_part (multipart, GMIME_OBJECT (html_part));
-
- message = g_mime_message_new (TRUE);
- g_mime_message_set_sender (message, "\"Jeffrey Stedfast\" <fejj@helixcode.com>");
- g_mime_message_set_reply_to (message, "fejj@helixcode.com");
- g_mime_message_add_recipient (message, GMIME_RECIPIENT_TYPE_TO,
- "Federico Mena-Quintero", "federico@helixcode.com");
- g_mime_message_set_subject (message, "This is a test message");
- g_mime_message_set_header (message, "X-Mailer", "main.c");
- g_mime_message_set_mime_part (message, GMIME_OBJECT (multipart));
-
- text = g_mime_message_to_string (message);
-
- fprintf (stdout, "%s\n", text ? text : "(null)");
-
- /* get the body in text/plain */
- body = g_mime_message_get_body (message, TRUE, &is_html);
- fprintf (stdout, "Trying to get message body in plain text format:\n%s\n\n", body ? body : "(null)");
- g_free (body);
-
- /* get the body in text/html */
- body = g_mime_message_get_body (message, FALSE, &is_html);
- fprintf (stdout, "Trying to get message body in html format:\n%s\n\n", body ? body : "(null)");
- g_free (body);
- if (is_html)
- fprintf (stdout, "yep...got it in html format\n");
-
- g_mime_object_unref (GMIME_OBJECT (message));
-
- test_parser (text);
-
- g_free (text);
-}
-
-void
-test_onepart (void)
+static int
+test_parser (const char *Path)
{
- GMimeMessage *message;
- GMimePart *mime_part;
- char *body, *text;
- gboolean is_html;
-
- mime_part = g_mime_part_new_with_type ("text", "plain");
-
- g_mime_part_set_content (mime_part, "This is the body of my message.\n",
- strlen ("This is the body of my message.\n"));
-
- message = g_mime_message_new (TRUE);
- g_mime_message_set_sender (message, "\"Jeffrey Stedfast\" <fejj@helixcode.com>");
- g_mime_message_set_reply_to (message, "fejj@helixcode.com");
- g_mime_message_add_recipient (message, GMIME_RECIPIENT_TYPE_TO,
- "Federico Mena-Quintero", "federico@helixcode.com");
- g_mime_message_set_subject (message, "This is a test message");
- g_mime_message_set_header (message, "X-Mailer", "main.c");
-
- g_mime_message_set_mime_part (message, GMIME_OBJECT (mime_part));
- g_mime_object_unref (GMIME_OBJECT (mime_part));
-
- text = g_mime_message_to_string (message);
-
- fprintf (stdout, "%s\n", text ? text : "(null)");
-
- body = g_mime_message_get_body (message, TRUE, &is_html);
- fprintf (stdout, "Trying to get message body:\n%s\n\n", body ? body : "(null)");
- g_free (body);
-
- g_mime_object_unref (GMIME_OBJECT (message));
-
- test_parser (text);
-
- g_free (text);
-}
-
-static char *string = "I have no idea what to test here so I'll just test a "
-"bunch of crap like this and see what it encodes it as.\r\n"
-"I'm thinking this line should be really really really long "
-"so as to test the line wrapping at 76 chars, dontcha think? "
-"I most certainly do. Lets get some weird chars in here too. "
-"Lets try: = ċċċċaa\nOkay, now on a side note...uhm, ?= =? and stuff.\n"
-"danw wanted me to try this next line...so lets give it a shot:\n"
-"foo \n"
-"Lets also try some tabs in here like this:\t\tis that 2 tabs? I hope so.";
-
-void
-test_encodings (void)
-{
- int pos, state = -1, save = 0;
- char *enc, *dec;
-
- enc = "=?iso-8859-1?Q?Copy_of_Rapport_fra_Norges_R=E5fisklag.doc?=";
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (dec);
-
- enc = "=?iso-8859-1?Q?Copy_of_Rapport_fra_Norges_R=E5fisklagdoc?=";
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (dec);
-
- enc = "=?iso-8859-1?B?dGVzdOb45S50eHQ=?=";
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (dec);
-
- enc = "Re: !!! =?windows-1250?Q?Nab=EDz=EDm_scanov=E1n=ED_negativ=F9?= "
- "=?windows-1250?Q?=2C_p=F8edloh_do_A4=2C_=E8/b_lasertov=FD_ti?= "
- "=?windows-1250?Q?sk_a_=E8/b_inkoutov=FD_tisk_do_A2!!!?=";
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (dec);
+ GMimeStream *Source, *Stream;
+ GMimeMessage *Message;
+ GMimeFilter *Filter;
+ GMimeParser *Parser;
+ int FD;
- enc = "OT - ich =?ISO-8859-1?Q?wei=DF?=, trotzdem";
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (dec);
-
- enc = "OT - ich =?iso-8859-1?b?d2Vp3yw=?= trotzdem";
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (dec);
-
- enc = "OT - ich =?ISO-8859-1?Q?wei=DF,?= trotzdem";
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (dec);
-
- dec = g_mime_iconv_strdup (cd, "OT - ich weiß, trotzdem");
- fprintf (stderr, "pre-encoded: %s\n", dec);
- enc = g_mime_utils_8bit_header_encode (dec);
- g_free (dec);
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- g_free (dec);
-
- enc = g_strdup ("=?iso-8859-1?Q?=DE?=:\t=?iso-8859-1?Q?=AD=BE=EF?= spells 0xdeadbeef");
- fprintf (stderr, "incorrect: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- enc = g_mime_utils_8bit_header_encode (dec);
- g_free (dec);
- fprintf (stderr, "correct: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- g_free (dec);
-
- enc = g_strdup ("=?iso-8859-1?q?blablah?=");
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- g_free (dec);
-
- enc = g_strdup ("=?iso-8859-1?Q?blablah?=");
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- g_free (dec);
-
- dec = g_mime_iconv_strdup (cd, "Kristoffer Brċnemyr");
- fprintf (stderr, "pre-encoded: %s\n", dec);
- enc = g_mime_utils_8bit_header_encode (dec);
- g_free (dec);
- fprintf (stderr, "encoded: %s\n", enc);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- g_free (dec);
-
- dec = g_mime_iconv_strdup (cd, "ċaċċċaċċ aaaa ċċċċaa");
- enc = g_mime_utils_8bit_header_encode (dec);
- fprintf (stderr, "encoded: %s\n", enc);
- g_free (dec);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- g_free (dec);
-
- dec = g_mime_iconv_strdup (cd, "ċaċċċaċċ aaaa ċċċċaa");
- enc = g_mime_utils_8bit_header_encode_phrase (dec);
- fprintf (stderr, "encoded: %s\n", enc);
- g_free (dec);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- g_free (dec);
-
- fprintf (stderr, "test that white space between 8bit words is preserved\n");
- dec = g_mime_iconv_strdup (cd, "ċaċċċaċċ \t ċċċċaa");
- enc = g_mime_utils_8bit_header_encode (dec);
- fprintf (stderr, "encoded: %s\n", enc);
- g_free (dec);
- dec = g_mime_utils_8bit_header_decode (enc);
- fprintf (stderr, "decoded: %s\n", dec);
- g_free (enc);
- g_free (dec);
-
- enc = g_mime_utils_quote_string ("this is an \"embedded\" quoted string.");
- fprintf (stderr, "quoted: %s\n", enc);
- g_mime_utils_unquote_string (enc);
- fprintf (stderr, "unquoted: %s\n", enc);
- g_free (enc);
-
- enc = g_mime_utils_quote_string ("Jeffrey \"The Fejjinator\" Stedfast");
- fprintf (stderr, "quoted: %s\n", enc);
- g_mime_utils_unquote_string (enc);
- fprintf (stderr, "unquoted: %s\n", enc);
- g_free (enc);
-
- enc = g_malloc (strlen (string) * 3);
- pos = g_mime_utils_quoted_encode_close (string, strlen (string), enc, &state, &save);
- enc[pos] = '\0';
-
- fprintf (stderr, "\nencoded:\n-------\n%s\n-------\n", enc);
-
- g_free (enc);
-}
-
-static char *addresses[] = {
- "fejj@helixcode.com",
- "Jeffrey Stedfast <fejj@helixcode.com>",
- "Jeffrey \"fejj\" Stedfast <fejj@helixcode.com>",
- "\"Stedfast, Jeffrey\" <fejj@helixcode.com>",
- "fejj@helixcode.com (Jeffrey Stedfast)",
- "Jeff <fejj(recursive (comment) block)@helixcode.(and a comment here)com>",
- "=?iso-8859-1?q?Kristoffer_Br=E5nemyr?= <ztion@swipenet.se>",
- "fpons@mandrakesoft.com (=?iso-8859-1?q?Fran=E7ois?= Pons)",
- "GNOME Hackers: miguel@gnome.org (Miguel de Icaza), Havoc Pennington <hp@redhat.com>;, fejj@helixcode.com",
- "Local recipients: phil, joe, alex, bob",
- "@develop:sblab!att!thumper.bellcore.com!nsb",
- "\":sysmail\"@ Some-Group. Some-Org,\n Muhammed.(I am the greatest) Ali @(the)Vegas.WBA",
- "Charles S. Kerr <charles@foo.com>", /* the '.' in the name part is illegal */
- "Charles \"Likes, to, put, commas, in, quoted, strings\" Kerr <charles@foo.com>",
- "Charles Kerr, Pan Programmer <charles@superpimp.org>", /* bad placement of a comma ;-) */
- "Charles Kerr <charles@[127.0.0.1]>",
- "Charles <charles@[127..0.1]>", /* where'd it go? Hollywood said, "where did *who* go!?" */
- "Charles Kerr,, likes illegal commas <charles@superpimp.org>", /* ouch this is bad... */
- "<charles@>",
- "<charles@broken.host.com.> (Charles Kerr)",
- "fpons@mandrakesoft.com (=?iso-8859-1?q?Fran=E7ois?= Pons likes _'s and \t's too)",
- "Tġivo Leedjärv <leedjarv@interest.ee>",
- "fbosi@mokabyte.it;, rspazzoli@mokabyte.it",
- "\"Miles (Star Trekkin) O'Brian\" <mobrian@starfleet.org>",
- "Patrick Lamaizière <email@domain>",
- NULL
-};
-
-static void
-dump_addrlist (InternetAddressList *addrlist, int i, gboolean group, gboolean destroy)
-{
- InternetAddressList *addr;
- InternetAddress *ia;
- char *str;
-
- addr = addrlist;
- while (addr) {
- ia = addr->address;
- addr = addr->next;
-
- if (i != -1) {
- str = g_mime_iconv_strdup (cd, addresses[i]);
- fprintf (stderr, "Original: %s\n", str);
- g_free (str);
- }
-
- if (ia->type == INTERNET_ADDRESS_GROUP) {
- fprintf (stderr, "Address is a group:\n");
- fprintf (stderr, "Name: %s\n", ia->name ? ia->name : "");
- dump_addrlist (ia->value.members, -1, TRUE, FALSE);
- fprintf (stderr, "End of group.\n");
- } else if (ia->type == INTERNET_ADDRESS_NAME) {
- fprintf (stderr, "%sName: %s\n", group ? "\t" : "",
- ia->name ? ia->name : "");
- fprintf (stderr, "%sEMail: %s\n", group ? "\t" : "",
- ia->value.addr ? ia->value.addr : "");
- }
-
- str = internet_address_to_string (ia, FALSE);
- fprintf (stderr, "%sRewritten (display): %s\n", group ? "\t" : "",
- str ? str : "");
- g_free (str);
-
- str = internet_address_to_string (ia, TRUE);
- fprintf (stderr, "%sRewritten (encoded): %s\n\n", group ? "\t" : "",
- str ? str : "");
- g_free (str);
+ if ((FD = open(Path,O_RDONLY)) < 0)
+ {
+ return errno;
}
-}
-
-void
-test_addresses (void)
-{
- int i;
- for (i = 0; addresses[i]; i++) {
- InternetAddressList *addrlist;
-
- addrlist = internet_address_parse_string (addresses[i]);
- if (!addrlist) {
- fprintf (stderr, "failed to parse '%s'.\n", addresses[i]);
- continue;
- }
-
- dump_addrlist (addrlist, i, FALSE, TRUE);
-
- internet_address_list_destroy (addrlist);
- }
-}
-
-/*#include "date-strings.h"*/
-
-void
-test_date (void)
-{
- int offset = 0;
- char *in, *out;
- time_t date;
+ Source = g_mime_stream_fs_new(FD);
+ Stream = g_mime_stream_filter_new_with_stream(Source);
+ g_mime_stream_unref(Source);
+ Filter =
+ g_mime_filter_crlf_new(GMIME_FILTER_CRLF_DECODE,GMIME_FILTER_CRLF_MODE_CRLF_DOTS);
+ g_mime_stream_filter_add(GMIME_STREAM_FILTER(Stream),Filter);
- in = "Mon, 17 Jan 1994 11:14:55 -0500";
- fprintf (stderr, "date in: [%s]\n", in);
- date = g_mime_utils_header_decode_date (in, &offset);
- out = g_mime_utils_header_format_date (date, offset);
- fprintf (stderr, "date out: [%s]\n", out);
- g_free (out);
+ Parser = g_mime_parser_new();
+ g_mime_parser_init_with_stream(Parser,Stream);
+ Message = g_mime_parser_construct_message(Parser);
+ /*g_mime_message_foreach_part(Message,VCheckPart,M);*/
- in = "Mon, 17 Jan 01 11:14:55 -0500";
- fprintf (stderr, "date in: [%s]\n", in);
- date = g_mime_utils_header_decode_date (in, &offset);
- out = g_mime_utils_header_format_date (date, offset);
- fprintf (stderr, "date out: [%s]\n", out);
- g_free (out);
-
-#if 0
- {
- char *string;
- int i;
-
- ZenTimerStart ();
- for (i = 0; i < num_date_strings; i++) {
- in = date_strings[i];
- printf ("date in: [%s]\n", in);
- date = g_mime_utils_header_decode_date (in, &offset);
- out = g_mime_utils_header_format_date (date, offset);
- printf ("date out: [%s]\n", out);
- g_free (out);
- }
- ZenTimerStop ();
-
- string = g_strdup_printf ("date parser (%d dates parsed)", num_date_strings);
- ZenTimerReport (string);
- g_free (string);
- }
-#endif
+ g_object_unref(Filter);
+ g_object_unref(Parser);
+ g_mime_object_unref(GMIME_OBJECT(Message));
+ g_mime_stream_unref(Stream);
+
+ return 0;
}
-
-int main (int argc, char *argv[])
+int main (int argc, char **argv)
{
g_mime_init (0);
- cd = g_mime_iconv_open ("UTF-8", "iso-8859-1");
-
- test_date ();
-
- test_onepart ();
-
- test_multipart ();
-
- test_encodings ();
-
- test_addresses ();
-
- g_mime_iconv_close (cd);
+ while (1)
+ test_parser (argv[1]);
return 0;
}