From f4cf9af33ccde3142a3011e8b2dbcfb4cbc9ae81 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 20 May 2009 16:50:00 +0200 Subject: Use -no-undefined on Linux too There still left two things opened, search for KILL-BONOBO to find them. One is in calendar's Makefile.am, one in composer. --- em-format/em-stripsig-filter.c | 169 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 em-format/em-stripsig-filter.c (limited to 'em-format/em-stripsig-filter.c') diff --git a/em-format/em-stripsig-filter.c b/em-format/em-stripsig-filter.c new file mode 100644 index 0000000000..7dd8a87416 --- /dev/null +++ b/em-format/em-stripsig-filter.c @@ -0,0 +1,169 @@ +/* + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the program; if not, see + * + * + * Authors: + * Jeffrey Stedfast + * + * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include + +#include "em-stripsig-filter.h" + + +static void em_stripsig_filter_class_init (EMStripSigFilterClass *klass); +static void em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass); + +static void filter_filter (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, + char **out, size_t *outlen, size_t *outprespace); +static void filter_complete (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, + char **out, size_t *outlen, size_t *outprespace); +static void filter_reset (CamelMimeFilter *filter); + + +static CamelMimeFilterClass *parent_class = NULL; + + +CamelType +em_stripsig_filter_get_type (void) +{ + static CamelType type = CAMEL_INVALID_TYPE; + + if (type == CAMEL_INVALID_TYPE) { + type = camel_type_register (camel_mime_filter_get_type (), + "EMStripSigFilter", + sizeof (EMStripSigFilter), + sizeof (EMStripSigFilterClass), + (CamelObjectClassInitFunc) em_stripsig_filter_class_init, + NULL, + (CamelObjectInitFunc) em_stripsig_filter_init, + NULL); + } + + return type; +} + + +static void +em_stripsig_filter_class_init (EMStripSigFilterClass *klass) +{ + CamelMimeFilterClass *filter_class = (CamelMimeFilterClass *) klass; + + parent_class = CAMEL_MIME_FILTER_CLASS (camel_type_get_global_classfuncs (camel_mime_filter_get_type ())); + + filter_class->reset = filter_reset; + filter_class->filter = filter_filter; + filter_class->complete = filter_complete; +} + +static void +em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass) +{ + filter->midline = FALSE; +} + +static void +strip_signature (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, + char **out, size_t *outlen, size_t *outprespace, int flush) +{ + EMStripSigFilter *stripsig = (EMStripSigFilter *) filter; + register const char *inptr = in; + const char *inend = in + len; + const char *start = NULL; + + if (stripsig->midline) { + while (inptr < inend && *inptr != '\n') + inptr++; + + if (inptr < inend) { + stripsig->midline = FALSE; + inptr++; + } + } + + while (inptr < inend) { + if ((inend - inptr) >= 4 && !strncmp (inptr, "-- \n", 4)) { + start = inptr; + inptr += 4; + } else { + while (inptr < inend && *inptr != '\n') + inptr++; + + if (inptr == inend) { + stripsig->midline = TRUE; + break; + } + + inptr++; + } + } + + if (start != NULL) + inptr = start; + + if (!flush && inend > inptr) + camel_mime_filter_backup (filter, inptr, inend - inptr); + else if (!start) + inptr = inend; + + *out = in; + *outlen = inptr - in; + *outprespace = prespace; +} + +static void +filter_filter (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, + char **out, size_t *outlen, size_t *outprespace) +{ + strip_signature (filter, in, len, prespace, out, outlen, outprespace, FALSE); +} + +static void +filter_complete (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, + char **out, size_t *outlen, size_t *outprespace) +{ + strip_signature (filter, in, len, prespace, out, outlen, outprespace, TRUE); +} + +/* should this 'flush' outstanding state/data bytes? */ +static void +filter_reset (CamelMimeFilter *filter) +{ + EMStripSigFilter *stripsig = (EMStripSigFilter *) filter; + + stripsig->midline = FALSE; +} + + +/** + * em_stripsig_filter_new: + * + * Creates a new stripsig filter. + * + * Returns a new stripsig filter. + **/ +CamelMimeFilter * +em_stripsig_filter_new (void) +{ + return (CamelMimeFilter *) camel_object_new (EM_TYPE_STRIPSIG_FILTER); +} -- cgit v1.2.3 From 948235c3d1076dbe6ed2e57a24c16a083bbd9f01 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 27 May 2009 10:29:19 -0400 Subject: Prefer GLib basic types over C types. --- em-format/em-stripsig-filter.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'em-format/em-stripsig-filter.c') diff --git a/em-format/em-stripsig-filter.c b/em-format/em-stripsig-filter.c index 1600eeaed0..1b977e975f 100644 --- a/em-format/em-stripsig-filter.c +++ b/em-format/em-stripsig-filter.c @@ -34,10 +34,10 @@ static void em_stripsig_filter_class_init (EMStripSigFilterClass *klass); static void em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass); -static void filter_filter (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, - char **out, size_t *outlen, size_t *outprespace); -static void filter_complete (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, - char **out, size_t *outlen, size_t *outprespace); +static void filter_filter (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, + gchar **out, size_t *outlen, size_t *outprespace); +static void filter_complete (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, + gchar **out, size_t *outlen, size_t *outprespace); static void filter_reset (CamelMimeFilter *filter); @@ -83,13 +83,13 @@ em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass) } static void -strip_signature (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, - char **out, size_t *outlen, size_t *outprespace, int flush) +strip_signature (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, + gchar **out, size_t *outlen, size_t *outprespace, gint flush) { EMStripSigFilter *stripsig = (EMStripSigFilter *) filter; - register const char *inptr = in; - const char *inend = in + len; - const char *start = NULL; + register const gchar *inptr = in; + const gchar *inend = in + len; + const gchar *start = NULL; if (stripsig->midline) { while (inptr < inend && *inptr != '\n') @@ -132,15 +132,15 @@ strip_signature (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, } static void -filter_filter (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, - char **out, size_t *outlen, size_t *outprespace) +filter_filter (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, + gchar **out, size_t *outlen, size_t *outprespace) { strip_signature (filter, in, len, prespace, out, outlen, outprespace, FALSE); } static void -filter_complete (CamelMimeFilter *filter, char *in, size_t len, size_t prespace, - char **out, size_t *outlen, size_t *outprespace) +filter_complete (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, + gchar **out, size_t *outlen, size_t *outprespace) { strip_signature (filter, in, len, prespace, out, outlen, outprespace, TRUE); } -- cgit v1.2.3 From 433eac7844481b8ceda0bae8bf08f6bb623185b0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 1 Jun 2009 19:09:19 -0400 Subject: More code cleanup. --- em-format/em-stripsig-filter.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'em-format/em-stripsig-filter.c') diff --git a/em-format/em-stripsig-filter.c b/em-format/em-stripsig-filter.c index 1b977e975f..65400027ff 100644 --- a/em-format/em-stripsig-filter.c +++ b/em-format/em-stripsig-filter.c @@ -34,10 +34,10 @@ static void em_stripsig_filter_class_init (EMStripSigFilterClass *klass); static void em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass); -static void filter_filter (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, - gchar **out, size_t *outlen, size_t *outprespace); -static void filter_complete (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, - gchar **out, size_t *outlen, size_t *outprespace); +static void filter_filter (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, + gchar **out, gsize *outlen, gsize *outprespace); +static void filter_complete (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, + gchar **out, gsize *outlen, gsize *outprespace); static void filter_reset (CamelMimeFilter *filter); @@ -83,8 +83,8 @@ em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass) } static void -strip_signature (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, - gchar **out, size_t *outlen, size_t *outprespace, gint flush) +strip_signature (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, + gchar **out, gsize *outlen, gsize *outprespace, gint flush) { EMStripSigFilter *stripsig = (EMStripSigFilter *) filter; register const gchar *inptr = in; @@ -132,15 +132,15 @@ strip_signature (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace } static void -filter_filter (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, - gchar **out, size_t *outlen, size_t *outprespace) +filter_filter (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, + gchar **out, gsize *outlen, gsize *outprespace) { strip_signature (filter, in, len, prespace, out, outlen, outprespace, FALSE); } static void -filter_complete (CamelMimeFilter *filter, gchar *in, size_t len, size_t prespace, - gchar **out, size_t *outlen, size_t *outprespace) +filter_complete (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, + gchar **out, gsize *outlen, gsize *outprespace) { strip_signature (filter, in, len, prespace, out, outlen, outprespace, TRUE); } -- cgit v1.2.3 From b0e26e9c5f13c710c7677959cc457158206befe1 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 5 Jun 2009 14:48:29 +0200 Subject: Fix even more compiler warnings and disable one for format strings --- em-format/em-stripsig-filter.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'em-format/em-stripsig-filter.c') diff --git a/em-format/em-stripsig-filter.c b/em-format/em-stripsig-filter.c index 65400027ff..f4097a1b3d 100644 --- a/em-format/em-stripsig-filter.c +++ b/em-format/em-stripsig-filter.c @@ -34,9 +34,9 @@ static void em_stripsig_filter_class_init (EMStripSigFilterClass *klass); static void em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass); -static void filter_filter (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, +static void filter_filter (CamelMimeFilter *filter, const gchar *in, gsize len, gsize prespace, gchar **out, gsize *outlen, gsize *outprespace); -static void filter_complete (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, +static void filter_complete (CamelMimeFilter *filter, const gchar *in, gsize len, gsize prespace, gchar **out, gsize *outlen, gsize *outprespace); static void filter_reset (CamelMimeFilter *filter); @@ -83,7 +83,7 @@ em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass) } static void -strip_signature (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, +strip_signature (CamelMimeFilter *filter, const gchar *in, gsize len, gsize prespace, gchar **out, gsize *outlen, gsize *outprespace, gint flush) { EMStripSigFilter *stripsig = (EMStripSigFilter *) filter; @@ -126,20 +126,20 @@ strip_signature (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, else if (!start) inptr = inend; - *out = in; + *out = (gchar*)in; *outlen = inptr - in; *outprespace = prespace; } static void -filter_filter (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, +filter_filter (CamelMimeFilter *filter, const gchar *in, gsize len, gsize prespace, gchar **out, gsize *outlen, gsize *outprespace) { strip_signature (filter, in, len, prespace, out, outlen, outprespace, FALSE); } static void -filter_complete (CamelMimeFilter *filter, gchar *in, gsize len, gsize prespace, +filter_complete (CamelMimeFilter *filter, const gchar *in, gsize len, gsize prespace, gchar **out, gsize *outlen, gsize *outprespace) { strip_signature (filter, in, len, prespace, out, outlen, outprespace, TRUE); -- cgit v1.2.3 From dc0ab70f11e998c5d038fe1f078768b8dc071dc7 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 13 Jun 2009 22:06:45 -0400 Subject: Fix coding style. --- em-format/em-stripsig-filter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'em-format/em-stripsig-filter.c') diff --git a/em-format/em-stripsig-filter.c b/em-format/em-stripsig-filter.c index f4097a1b3d..39e6d02dad 100644 --- a/em-format/em-stripsig-filter.c +++ b/em-format/em-stripsig-filter.c @@ -126,7 +126,7 @@ strip_signature (CamelMimeFilter *filter, const gchar *in, gsize len, gsize pres else if (!start) inptr = inend; - *out = (gchar*)in; + *out = (gchar *)in; *outlen = inptr - in; *outprespace = prespace; } -- cgit v1.2.3 From 374bd42f69aca2e132fd854c9619f3d7491f1f96 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 12 Jul 2009 23:33:07 -0400 Subject: Fix excessive whitespace. --- em-format/em-stripsig-filter.c | 5 ----- 1 file changed, 5 deletions(-) (limited to 'em-format/em-stripsig-filter.c') diff --git a/em-format/em-stripsig-filter.c b/em-format/em-stripsig-filter.c index 39e6d02dad..42d824778b 100644 --- a/em-format/em-stripsig-filter.c +++ b/em-format/em-stripsig-filter.c @@ -30,7 +30,6 @@ #include "em-stripsig-filter.h" - static void em_stripsig_filter_class_init (EMStripSigFilterClass *klass); static void em_stripsig_filter_init (EMStripSigFilter *filter, EMStripSigFilterClass *klass); @@ -40,10 +39,8 @@ static void filter_complete (CamelMimeFilter *filter, const gchar *in, gsize len gchar **out, gsize *outlen, gsize *outprespace); static void filter_reset (CamelMimeFilter *filter); - static CamelMimeFilterClass *parent_class = NULL; - CamelType em_stripsig_filter_get_type (void) { @@ -63,7 +60,6 @@ em_stripsig_filter_get_type (void) return type; } - static void em_stripsig_filter_class_init (EMStripSigFilterClass *klass) { @@ -154,7 +150,6 @@ filter_reset (CamelMimeFilter *filter) stripsig->midline = FALSE; } - /** * em_stripsig_filter_new: * -- cgit v1.2.3