summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Bogusz2008-07-25 19:48:56 (GMT)
committercvs2git2012-06-24 12:13:13 (GMT)
commitbd53f416a7d758093f31937591cc5ee2fe8d16be (patch)
treecb57570950e78e5334ca7c76c4355263019cb0a9
parentda232ad4038586f873d2359cfb73e4573491dc55 (diff)
downloadslrn-bd53f416a7d758093f31937591cc5ee2fe8d16be.zip
slrn-bd53f416a7d758093f31937591cc5ee2fe8d16be.tar.gz
- obsolete
Changed files: slrn-config.patch -> 1.9 slrn-iconv.patch -> 1.2 slrn-search-author.patch -> 1.2 slrn-sharedlibs.patch -> 1.2
-rw-r--r--slrn-config.patch11
-rw-r--r--slrn-iconv.patch1055
-rw-r--r--slrn-search-author.patch13
-rw-r--r--slrn-sharedlibs.patch28
4 files changed, 0 insertions, 1107 deletions
diff --git a/slrn-config.patch b/slrn-config.patch
deleted file mode 100644
index 67b20e8..0000000
--- a/slrn-config.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- slrn-0.9.8.0/src/slrnfeat.h.orig 2003-07-30 15:36:32.000000000 +0200
-+++ slrn-0.9.8.0/src/slrnfeat.h 2003-08-26 20:28:32.059105200 +0200
-@@ -162,7 +162,7 @@
- /* The rest of the files apply to slrnpull. */
-
- /* This must be set to an absolute pathname. */
--#define SLRNPULL_ROOT_DIR "/var/spool/news/slrnpull"
-+#define SLRNPULL_ROOT_DIR "/var/spool/slrnpull"
-
- /* The remaing variables are specified as relative names with respect to the
- * SLRNPULL_ROOT_DIR.
diff --git a/slrn-iconv.patch b/slrn-iconv.patch
deleted file mode 100644
index 2b8ec60..0000000
--- a/slrn-iconv.patch
+++ /dev/null
@@ -1,1055 +0,0 @@
-diff -Nur slrn-0.9.8.1pl1.orig/configure.in slrn-0.9.8.1pl1/configure.in
---- slrn-0.9.8.1pl1.orig/configure.in 2005-02-17 20:41:16.000000000 +0100
-+++ slrn-0.9.8.1pl1/configure.in 2006-04-04 21:56:19.000000000 +0200
-@@ -171,6 +171,7 @@
-
- fi
-
-+
- dnl enforce the use of inews
- AH_VERBATIM([SLRN_FORCE_INEWS],
- [/* define if you want to force the use of inews */
-@@ -353,6 +354,35 @@
- AC_DEFINE(SLRN_HAS_SPOOL_SUPPORT, 1)
- fi
-
-+
-+dnl iconv
-+AM_ICONV
-+AH_VERBATIM([SLRN_USE_ICONV],
-+[/* define this if you want to use iconv */
-+#undef SLRN_USE_ICONV])
-+AC_ARG_ENABLE([iconv],
-+ [ --enable-iconv Enable use of iconv library],
-+ AC_DEFINE([SLRN_USE_ICONV])
-+ use_iconv=yes,
-+ use_iconv=no)
-+
-+AH_VERBATIM([USE_ICONV],
-+[/* This is defined if use of iconv is requested _and_ libiconv is available */
-+#undef USE_ICONV])
-+
-+if test "x${use_iconv}" = "xyes";
-+then
-+ if test "x${am_cv_func_iconv}" != "xyes"
-+ then
-+ AC_MSG_FAILURE([Use of libiconv was requested, but the iconv library was not found. Maybe you need to specify --with-libiconv-prefix?]);
-+ fi
-+ AC_MSG_NOTICE([We're using iconv])
-+ AC_DEFINE([USE_ICONV])
-+else
-+ AC_MSG_NOTICE([We're NOT using iconv])
-+fi
-+
-+
- AH_BOTTOM(
- [/* misc settings copied from the original config.hin file */
-
-diff -Nur slrn-0.9.8.1pl1.orig/src/art.c slrn-0.9.8.1pl1/src/art.c
---- slrn-0.9.8.1pl1.orig/src/art.c 2005-01-29 00:26:09.000000000 +0100
-+++ slrn-0.9.8.1pl1/src/art.c 2006-04-04 21:56:19.000000000 +0200
-@@ -79,6 +79,13 @@
- # include "grplens.h"
- #endif
-
-+/* don't use recode for slrnpull */
-+#if defined(SLRNPULL_CODE) && defined(USE_ICONV)
-+# undef USE_ICONV
-+#endif
-+
-+
-+
- /*}}}*/
-
- /*{{{ extern Global variables */
-@@ -616,6 +623,9 @@
- Slrn_Current_Article = NULL;
-
- free_article_lines (a);
-+#ifdef USE_ICONV
-+ slrn_free (a->charset);
-+#endif
- slrn_free ((char *) a);
- }
-
-@@ -2544,8 +2554,8 @@
- #if SLRN_HAS_MIME
- if ((do_mime == 0) && (Slrn_Use_Mime & MIME_DISPLAY))
- {
-- slrn_rfc1522_decode_string (tmp);
-- slrn_rfc1522_decode_string (h->from);
-+ slrn_rfc1522_decode_string (&tmp);
-+ slrn_rfc1522_decode_string (&(h->from));
- }
- #endif
- slrn_free (h->realname);
-@@ -5509,22 +5519,44 @@
- static Slrn_Header_Type *process_xover (Slrn_XOver_Type *xov)
- {
- Slrn_Header_Type *h;
-+ unsigned char *c;
-
- h = (Slrn_Header_Type *) slrn_safe_malloc (sizeof (Slrn_Header_Type));
-
- slrn_map_xover_to_header (xov, h);
- Number_Total++;
-
-+#ifdef USE_ICONV
-+ /* ok, some news client (Outlook Express *sigh*) just put unencoded
-+ * latin1/9 chars in their headers. As we don't know any charset at
-+ * this time, replace those chars by '?' chars */
-+ c = h->subject;
-+ while (*c!='\0' && *c!=0x0a && *c!=0x0d)
-+ {
-+ if (*c>=0x7f) *c = '?'; c++;
-+ }
-+ c = h->from;
-+ while (*c!='\0' && *c!=0x0a && *c!=0x0d)
-+ {
-+ if (*c>=0x7f) *c = '?'; c++;
-+ }
-+#endif /* USE_ICONV */
-+
- #if SLRN_HAS_MIME
- if (Slrn_Use_Mime & MIME_DISPLAY)
- {
-- slrn_rfc1522_decode_string (h->subject);
-- slrn_rfc1522_decode_string (h->from);
-+ slrn_rfc1522_decode_string (&(h->subject));
-+ slrn_rfc1522_decode_string (&(h->from));
- }
- #endif
-
- get_header_real_name (h);
-+#ifdef USE_ICONV
-+ /* TODO: do we translate here, or do we do it
-+ * in slrn_rfc1522_decode_string? */
-+#else /* USE_ICONV */
- slrn_chmap_fix_header (h);
-+#endif /* USE_ICONV */
-
- #if SLRN_HAS_GROUPLENS
- if (Slrn_Use_Group_Lens)
-diff -Nur slrn-0.9.8.1pl1.orig/src/art.h slrn-0.9.8.1pl1/src/art.h
---- slrn-0.9.8.1pl1.orig/src/art.h 2003-08-18 14:36:53.000000000 +0200
-+++ slrn-0.9.8.1pl1/src/art.h 2006-04-04 21:56:19.000000000 +0200
-@@ -195,6 +195,9 @@
- int mime_needs_metamail;
- #endif
- int needs_sync; /* non-zero if line number/current line needs updated */
-+#ifdef USE_ICONV
-+ char * charset; /* charset from content-type header */
-+#endif
- }
- Slrn_Article_Type;
-
-diff -Nur slrn-0.9.8.1pl1.orig/src/chmap.c slrn-0.9.8.1pl1/src/chmap.c
---- slrn-0.9.8.1pl1.orig/src/chmap.c 2004-10-30 20:31:48.000000000 +0200
-+++ slrn-0.9.8.1pl1/src/chmap.c 2006-04-04 21:56:19.000000000 +0200
-@@ -1,4 +1,6 @@
- /* -*- mode: C; mode: fold; -*- */
-+/* vim:ts=8:sw=2:expandtab
-+ */
- /*
- This file is part of SLRN.
-
-@@ -47,15 +49,149 @@
- #include "art.h"
- #include "chmap.h"
-
--#if SLRN_HAS_CHARACTER_MAP
--char *Slrn_Charset;
-+#ifdef USE_ICONV
-+#include <locale.h>
-+#include <langinfo.h>
-+#include <iconv.h>
-+#include <errno.h>
-+#endif
-
--static unsigned char *ChMap_To_Iso_Map;
--static unsigned char *ChMap_From_Iso_Map;
-+/* don't use recode for slrnpull */
-+#if defined(SLRNPULL_CODE) && defined(USE_ICONV)
-+# undef USE_ICONV
-+#endif
-+
-+
-+#if SLRN_HAS_CHARACTER_MAP || defined(USE_ICONV)
-+
-+/* if we use recode, this is set from the environment locale, otherwise it is
-+ * specified by the user in the config file */
-+char *Slrn_Charset;
-
- /* This include file contains static globals */
- # include "charmaps.h"
-
-+#endif /* SLRN_HAS_CHARACTER_MAP || defined(USE_ICONV) */
-+
-+#ifdef USE_ICONV
-+
-+const iconv_t ICONV_FAIL = (iconv_t) -1;
-+
-+/* translate the string *str_ptr from charset cs_from to charset cs_to */
-+/* str_ptr will be freed and reallocated */
-+char * slrn_chmap_translate_string (
-+ char *cs_from, char *cs_to, char **str_ptr)
-+ {
-+ iconv_t cd;
-+ char *retval;
-+ char *cs_to_translit;
-+ char *str = *str_ptr;
-+ size_t in_len, in_left, out_len, out_left;
-+ char *in_start, *in_cursor, *out_start, *out_cursor;
-+ size_t num;
-+
-+
-+ /* make sure the charsets are initialized */
-+ if (cs_from == NULL) cs_from = ICONV_DEFAULT_CHARSET;
-+ if (cs_to == NULL) return *str_ptr;
-+
-+ /* don't translate if from and to charsets are equal */
-+ if (strcasecmp (cs_from, cs_to) == 0)
-+ return 0;
-+
-+ /* concat "//translit" to cs_to */
-+ cs_to_translit = slrn_safe_malloc( strlen (cs_to) + 10 + 1);
-+ sprintf(cs_to_translit, "%s%s", cs_to, "//translit");
-+
-+ /* Initialize new translation description */
-+ /* TODO: cache this and check cs_from and cs_to every time */
-+ cd = iconv_open(cs_to_translit, cs_from);
-+ if (cd == ICONV_FAIL)
-+ {
-+ slrn_error (_("Unsupported translation: %s->%s"), cs_from, cs_to);
-+ return NULL;
-+ }
-+
-+ /* number of bytes left in input/output buffers */
-+ in_left = in_len = strlen (str);
-+ out_left = out_len = 2 * strlen(str);
-+ in_cursor = in_start = str;
-+ out_cursor = out_start = slrn_safe_malloc( out_left + 1 );
-+
-+ /* iterate until the entire line is translated */
-+ while (1)
-+ {
-+ /* stop if there is nothing left to translate */
-+ if (in_left == 0)
-+ {
-+ break;
-+ }
-+
-+ /* do the conversion */
-+ num = iconv(cd, &in_cursor, &in_left, &out_cursor, &out_left);
-+
-+ /* the entire line was translated, we're done */
-+ if (num>=0)
-+ {
-+ break;
-+ }
-+
-+ /* otherwise, an error occured */
-+ switch (errno) /* these are the only error that can occur */
-+ {
-+ case EILSEQ: /* invalid byte sequence at pos in_cursor */
-+ /* skip the invalid byte and continue */
-+ if (in_left>0) /* otherwise we're done anyway */
-+ {
-+ in_left--;
-+ in_cursor++;
-+ }
-+ break;
-+ case E2BIG: /* output buff is full */
-+ /* realloc the output buffer (make it 2 times as large) */
-+ slrn_realloc(out_cursor, 2*out_len, 1);
-+ out_left = out_len;
-+ out_len *= 2;
-+ break;
-+ case EINVAL: /* incomplete byte sequence at end of string*/
-+ /* just skip the rest of the line */
-+ in_left = 0;
-+ break;
-+ case EBADF: /* cd is invalid */
-+ slrn_error(_("Internal error while translating string"));
-+ in_left = 0;
-+ break;
-+ default: /* never reached */
-+ slrn_error(_("A unknown error occurred. This should not happen."));
-+ in_left = 0;
-+ break;
-+ }
-+ }
-+
-+ /* make sure string ends in a \0 */
-+ *out_cursor = '\0';
-+
-+ /* now copy the output buffer to a newly allocated string */
-+ retval = slrn_safe_strmalloc (out_start);
-+
-+ /* free the old input string, and set it to the new result */
-+ slrn_free (str);
-+ *str_ptr = retval;
-+
-+ /* free variables */
-+ slrn_free (out_start);
-+ slrn_free (cs_to_translit);
-+ iconv_close (cd);
-+
-+ return retval;
-+ }
-+
-+#else /* USE_ICONV */
-+# if SLRN_HAS_CHARACTER_MAP
-+
-+static unsigned char *ChMap_To_Iso_Map;
-+static unsigned char *ChMap_From_Iso_Map;
-+
- static void chmap_map_string (char *str, unsigned char *map)
- {
- unsigned char ch;
-@@ -69,11 +205,11 @@
-
- static void chmap_map_string_from_iso (char *str)
- {
--# if SLANG_VERSION >= 20000
-+# if SLANG_VERSION >= 20000
- /* fixme */
- if (Slrn_UTF8_Mode)
- return;
--#endif
-+# endif
- chmap_map_string (str, ChMap_From_Iso_Map);
- }
-
-@@ -87,13 +223,17 @@
- chmap_map_string (str, ChMap_To_Iso_Map);
- }
-
--#endif
-+# endif /* SLRN_HAS_CHARACTER_MAP */
-+
-+#endif /* USE_ICONV */
-
- /* Fix a single header; the rest of the header lines are dealt with
- * later in hide_art_headers() */
-+#ifndef USE_ICONV /* recode handles the translation directly while
-+ decoding the rfc1522 */
- void slrn_chmap_fix_header (Slrn_Header_Type *h)
- {
--#if SLRN_HAS_CHARACTER_MAP
-+#if SLRN_HAS_CHARACTER_MAP
- if ((h->flags & HEADER_CHMAP_PROCESSED) == 0)
- {
- chmap_map_string_from_iso (h->subject);
-@@ -101,32 +241,62 @@
- chmap_map_string_from_iso (h->realname);
- h->flags |= HEADER_CHMAP_PROCESSED;
- }
--#endif
-+#endif /* SLRN_HAS_CHARACTER_MAP */
- }
-
-+#endif
-+
- void slrn_chmap_fix_body (Slrn_Article_Type *a, int revert)
- {
--#if SLRN_HAS_CHARACTER_MAP
-+#if SLRN_HAS_CHARACTER_MAP || USE_ICONV
- Slrn_Article_Line_Type *l;
-+ char * charset;
-
- if (a == NULL)
- return;
-+
-+#ifdef USE_ICONV
-+ /* check if we need to translate */
-+ if (a->charset == NULL)
-+ charset = ICONV_DEFAULT_CHARSET;
-+ else
-+ charset = a->charset;
-+
-+ if (strcasecmp (Slrn_Charset, charset) == 0)
-+ return;
-+#endif
-+
- l = a->lines;
-
- while (l != NULL)
- {
-- if (revert)
-- chmap_map_string_to_iso (l->buf);
-- else
-- chmap_map_string_from_iso (l->buf);
-- l = l->next;
-+# ifdef USE_ICONV
-+ /* don't process headers */
-+ if (l->flags & HEADER_LINE)
-+ {
-+ l = l->next;
-+ continue;
-+ }
-+
-+ if (revert)
-+ slrn_chmap_translate_string (Slrn_Charset, charset, &(l->buf));
-+ else
-+ slrn_chmap_translate_string (charset, Slrn_Charset, &(l->buf));
-+# else /* USE_ICONV */
-+ if (revert)
-+ chmap_map_string_to_iso (l->buf);
-+ else
-+ chmap_map_string_from_iso (l->buf);
-+# endif /* USE_ICONV */
-+
-+ l = l->next;
- }
- #endif
- }
-
- int slrn_chmap_fix_file (char *file, int reverse)
- {
--#if SLRN_HAS_CHARACTER_MAP
-+#if SLRN_HAS_CHARACTER_MAP
- FILE *fp, *tmpfp;
- char buf [4096];
- char tmp_file [SLRN_MAX_PATH_LEN];
-@@ -170,8 +340,11 @@
- ret = 0;
- while (NULL != fgets (buf, sizeof (buf), fp))
- {
-+#ifdef USE_ICONV
-+#else
- if (reverse) chmap_map_string_from_iso (buf);
- else chmap_map_string_to_iso (buf);
-+#endif
- if (EOF == fputs (buf, tmpfp))
- {
- slrn_error (_("Write Error. Disk Full? --- message not posted."));
-@@ -219,8 +392,39 @@
- }
- #endif
-
-+
-+
- int slrn_set_charset (char *name)
- {
-+#if USE_ICONV
-+ iconv_t cd;
-+
-+ /* use environenment for locale */
-+ setlocale (LC_ALL, "");
-+
-+ /* get charset of current locale */
-+ Slrn_Charset = slrn_safe_strmalloc (nl_langinfo (CODESET));
-+
-+ /* TODO: check that we don't have any UCS2 and UCS4 charsets, as those
-+ * can't be handled at all. Slrn works with 0-terminated strings, which
-+ * is totally incompatible with these charsets. Luckily those are extremely
-+ * uncommon anyway on usenet. */
-+
-+ /* initialize recode engine to check if Slrn_Charset is valid */
-+ cd = iconv_open ("UTF-8", Slrn_Charset);
-+ if (cd == ICONV_FAIL)
-+ {
-+ slrn_error (_("Unsupport character set: %s"), Slrn_Charset);
-+ return -1;
-+ }
-+
-+ /* free variables */
-+ iconv_close (cd);
-+
-+ return 0;
-+
-+#else /* USE_ICONV */
-+
- #if SLRN_HAS_CHARACTER_MAP
- CharMap_Type *map;
- unsigned int i;
-@@ -254,4 +458,5 @@
- (void) name;
- return -1;
- #endif
-+#endif /* USE_ICONV */
- }
-diff -Nur slrn-0.9.8.1pl1.orig/src/chmap.h slrn-0.9.8.1pl1/src/chmap.h
---- slrn-0.9.8.1pl1.orig/src/chmap.h 2002-03-13 14:03:18.000000000 +0100
-+++ slrn-0.9.8.1pl1/src/chmap.h 2006-04-04 21:56:19.000000000 +0200
-@@ -20,8 +20,20 @@
- */
- #ifndef _SLRN_CHMAP_H
- #define _SLRN_CHMAP_H
-+
-+/* don't use recode for slrnpull */
-+#if defined(SLRNPULL_CODE) && defined(USE_ICONV)
-+# undef USE_ICONV
-+#endif
-+
-+#define ICONV_DEFAULT_CHARSET "iso-8859-15"
-+
- extern int slrn_set_charset (char *);
- extern int slrn_chmap_fix_file (char *, int);
-+#ifdef USE_ICONV
-+extern char * slrn_chmap_translate_string (
-+ char *, char *, char **);
-+#endif
- extern void slrn_chmap_fix_body (Slrn_Article_Type *, int);
- extern void slrn_chmap_fix_header (Slrn_Header_Type *);
-
-diff -Nur slrn-0.9.8.1pl1.orig/src/config.h.in slrn-0.9.8.1pl1/src/config.h.in
---- slrn-0.9.8.1pl1.orig/src/config.h.in 2005-02-17 20:43:06.000000000 +0100
-+++ slrn-0.9.8.1pl1/src/config.h.in 2006-04-04 21:56:19.000000000 +0200
-@@ -167,6 +167,9 @@
- /* Define to 1 if you have the `vsnprintf' function. */
- #undef HAVE_VSNPRINTF
-
-+/* Define as const if the declaration of iconv() needs const. */
-+#undef ICONV_CONST
-+
- /* Define the directory where your locales are */
- #undef LOCALEDIR
-
-@@ -263,9 +266,15 @@
- /* sendmail command */
- #undef SLRN_SENDMAIL_COMMAND
-
-+/* define this if you want to use iconv */
-+#undef SLRN_USE_ICONV
-+
- /* Define to 1 if you have the ANSI C header files. */
- #undef STDC_HEADERS
-
-+/* This is defined if use of iconv is requested _and_ libiconv is available */
-+#undef USE_ICONV
-+
- /* define if you have va_copy() in stdarg.h */
- #undef VA_COPY
-
-diff -Nur slrn-0.9.8.1pl1.orig/src/mime.c slrn-0.9.8.1pl1/src/mime.c
---- slrn-0.9.8.1pl1.orig/src/mime.c 2004-10-30 20:31:49.000000000 +0200
-+++ slrn-0.9.8.1pl1/src/mime.c 2006-04-04 21:56:19.000000000 +0200
-@@ -1,4 +1,6 @@
- /* -*- mode: C; mode: fold -*- */
-+/* vim:ts=8:expandtab:
-+ */
- /* MIME handling routines.
- *
- * Author: Michael Elkins <elkins@aero.org>
-@@ -46,8 +48,15 @@
- #include "util.h"
- #include "server.h"
- #include "snprintf.h"
-+#include "chmap.h"
- #include "mime.h"
-
-+/* don't use recode for slrnpull */
-+#if defined(SLRNPULL_CODE) && defined(USE_ICONV)
-+# undef USE_ICONV
-+#endif
-+
-+
- #if ! SLRN_HAS_MIME
- int Slrn_Use_Mime = 0;
- #else /* rest of file in this ifdef */
-@@ -60,6 +69,12 @@
-
- char *Slrn_Mime_Display_Charset;
-
-+#ifdef USE_ICONV
-+static char *Compatible_Charsets[] =
-+{
-+ "US-ASCII", /* This MUST be zeroth element */
-+};
-+#else /* USE_ICONV */
- /* These are all supersets of US-ASCII. Only the first N characters are
- * matched, where N is the length of the table entry.
- */
-@@ -73,6 +88,7 @@
- "utf-8", /* we now have a function to decode this */
- NULL
- };
-+#endif /* USE_ICONV */
-
- #ifndef SLRNPULL_CODE
- static char *Char_Set;
-@@ -120,6 +136,7 @@
-
- int slrn_set_compatible_charsets (char *charsets)
- {
-+#ifndef USE_ICONV
- static char* buf;
- char *p;
- char **pp;
-@@ -166,10 +183,12 @@
-
- *pp = NULL;
-
-+#endif /* USE_ICONV */
- return 0;
- }
- #endif /* NOT SLRNPULL_CODE */
-
-+#ifndef USE_ICONV
- static char *_find_compatible_charset (char **compat_charset, char *cs,
- unsigned int len)
- {
-@@ -187,9 +206,14 @@
- }
- return NULL;
- }
-+#endif /* USE_RECOEE */
-
- static char *find_compatible_charset (char *cs, unsigned int len)
- {
-+#ifdef USE_ICONV
-+ return slrn_strnmalloc (cs, len, 1);
-+#else /* USE_ICONV */
-+
- char *retval;
-
- if ((NULL == (retval = _find_compatible_charset (Compatible_Charsets, cs,
-@@ -198,6 +222,7 @@
- retval = _find_compatible_charset (Custom_Compatible_Charsets, cs, len);
-
- return retval;
-+#endif /* USE_ICONV */
- }
-
- #ifndef SLRNPULL_CODE
-@@ -291,13 +316,18 @@
- len = b - charset;
-
- Char_Set = find_compatible_charset (charset, len);
-- return 0;
-+ goto END; /* EVIL */
- }
- line = line->next;
- }
- while ((line != NULL)
- && (line->flags & HEADER_LINE)
- && ((*(b = line->buf) == ' ') || (*b == '\t')));
-+
-+END:
-+#ifdef USE_ICONV
-+ a->charset = slrn_strmalloc (Char_Set, 1);
-+#endif
-
- return 0;
- }
-@@ -413,6 +443,7 @@
- return dest;
- }
-
-+#ifndef USE_ICONV
- static char *utf_to_unicode (int *out, char *in, char *srcmax)
- {
- int mask = 0;
-@@ -495,15 +526,21 @@
-
- return dest;
- }
-+#endif /* USE_ICONV */
-
--int slrn_rfc1522_decode_string (char *s)
-+int slrn_rfc1522_decode_string (char **str_ptr)
- {
-+ char *s = *str_ptr;
- char *s1, *s2, ch;
- char *charset, method, *txt;
- char *after_last_encoded_word;
- char *after_whitespace;
- unsigned int count;
- unsigned int len;
-+#ifdef USE_ICONV
-+ char *buff, *begin_of_encoded_part, *new_str;
-+ char *output;
-+#endif
-
- count = 0;
- after_whitespace = NULL;
-@@ -512,10 +549,14 @@
- /* Even if some user agents still send raw 8bit, it is safe to call
- * decode_utf8() -- if it finds 8bit chars that are not valid UTF-8, it
- * will set ch to 1 and we can leave the line untouched. */
--#if SLANG_VERSION >= 20000
-+#ifdef USE_ICONV
-+ output = slrn_safe_strmalloc ( *str_ptr );
-+ s = output;
-+#else
-+# if SLANG_VERSION >= 20000
- if (Slrn_UTF8_Mode == 0)
- {
--#endif
-+# endif
- len = strlen (s);
- s1 = slrn_safe_malloc(len + 1);
-
-@@ -525,9 +566,10 @@
- if (ch == 0)
- strcpy (s, s1); /* safe */
- slrn_free (s1);
--#if SLANG_VERSION >= 20000
-+# if SLANG_VERSION >= 20000
- }
--#endif
-+# endif
-+#endif /* USE_ICONV */
-
- while (1)
- {
-@@ -536,6 +578,9 @@
- if (s == NULL) break;
-
- s1 = s;
-+#ifdef USE_ICONV
-+ begin_of_encoded_part = s1;
-+#endif
- charset = s = s1 + 2;
- while (((ch = *s) != 0)
- && (ch != '?') && (ch != ' ') && (ch != '\t') && (ch != '\n'))
-@@ -592,17 +637,67 @@
- /* Note: these functions return a pointer to the END of the decoded
- * text.
- */
-+
-+#ifdef USE_ICONV
-+ /* decoded stuff is always shorter than encoded, so this size
-+ * is safe */
-+ /* TODO: I don't think this is always true, specifically consider
-+ * UTF8 encoded 4-byte characters */
-+ //buff = (char *) slrn_safe_malloc( strlen(txt) + 10 );
-+ len = strlen(txt) + 10;
-+ buff = (char *) calloc( len, sizeof(char) );
-+ s1 = buff;
-+#endif
-+
- s2 = s1;
-
- if (method == 'B')
- s1 = decode_base64 (s1, txt, s);
-- else s1 = decode_quoted_printable (s1, txt, s, 1, 0);
--
-+ else
-+ s1 = decode_quoted_printable (s1, txt, s, 1, 0);
-+
-+#ifdef USE_ICONV
-+ /* ok, now the decoded string is in buff, now translate it */
-+ slrn_chmap_translate_string( charset, Slrn_Charset, &buff );
-+
-+ /* now we have to improvise a bit, because the translated string
-+ * could, in principle be longer than the space that's available in
-+ * the original string.
-+ * So, we allocate a _new_ string to replace it, and copy everything
-+ * in there */
-+ /* skip the final '?=', if the string doesn't end prematurely */
-+ if (*s!='\0' && *(s+1)!='\0') s+=2;
-+ len = begin_of_encoded_part - output /* part that is done already */
-+ + strlen (buff) /* part we just translated */
-+ + strlen (s) /* part that's yet to be translated */
-+ + 10; /* to be on the save side */
-+ new_str = (char *) slrn_safe_malloc( len * sizeof(char) );
-+ s1 = new_str;
-+ memcpy (s1, output, begin_of_encoded_part - output); /* old part */
-+ s1 += begin_of_encoded_part - output;
-+ memcpy (s1, buff, strlen (buff)); /* current part */
-+ s1 += strlen (buff);
-+ memcpy (s1, s, strlen (s) + 1 ); /* todo part, including final \0 */
-+
-+ /* now free the old string and set it to the new one */
-+ memset(output, 'x', strlen(output));
-+ slrn_free (output);
-+ output = new_str;
-+
-+ /* and free the buffer */
-+ slrn_free(buff);
-+ buff = NULL;
-+
-+ /* set s to the position where we need to continue on the next
-+ * iteration */
-+ s = s1;
-+
-+#else /* USE_ICONV */
- if ((slrn_case_strncmp((unsigned char *)"utf-8",
- (unsigned char *)charset, 5) == 0)
--#if SLANG_VERSION >= 20000
-+# if SLANG_VERSION >= 20000
- && (Slrn_UTF8_Mode == 0)
--#endif
-+# endif
- )
- s1 = decode_utf8 (s2, s2, s1, NULL);
-
-@@ -611,6 +706,7 @@
- s = s1; /* start from here next loop */
- while ((ch = *s2++) != 0) *s1++ = ch;
- *s1 = 0;
-+#endif
-
- count++;
-
-@@ -618,6 +714,12 @@
- s = slrn_skip_whitespace (s);
- after_whitespace = s;
- }
-+
-+#ifdef USE_ICONV
-+ // slrn_free( *str_ptr );
-+ *str_ptr = output;
-+#endif
-+
- return count;
- }
-
-@@ -627,6 +729,14 @@
- static void rfc1522_decode_headers (Slrn_Article_Type *a)
- {
- Slrn_Article_Line_Type *line;
-+
-+#ifdef USE_ICONV
-+ /* make sure we have a charset available */
-+ if (a->charset==NULL)
-+ {
-+ a->charset = slrn_safe_strmalloc(ICONV_DEFAULT_CHARSET);
-+ }
-+#endif /* USE_ICONV */
-
- if (a == NULL)
- return;
-@@ -638,12 +748,26 @@
- if (slrn_case_strncmp ((unsigned char *)line->buf,
- (unsigned char *)"Newsgroups:", 11) &&
- slrn_case_strncmp ((unsigned char *)line->buf,
-- (unsigned char *)"Followup-To:", 12) &&
-- slrn_rfc1522_decode_string (line->buf))
-- {
-- a->is_modified = 1;
-- a->mime_was_modified = 1;
-- }
-+ (unsigned char *)"Followup-To:", 12)
-+ )
-+ {
-+ /* ok, some news client (Outlook Express *sigh*) just put
-+ * unencoded latin1/9/window1252 chars in their headers. Try to
-+ * decode this */
-+ if (slrn_chmap_translate_string(a->charset , Slrn_Charset,
-+ &(line->buf)))
-+ {
-+ a->is_modified = 1;
-+ a->mime_was_modified = 1;
-+ }
-+
-+ /* now do the usual rfc 1522 decoding */
-+ if (slrn_rfc1522_decode_string (&(line->buf)))
-+ {
-+ a->is_modified = 1;
-+ a->mime_was_modified = 1;
-+ }
-+ }
- line = line->next;
- }
- }
-@@ -845,6 +969,7 @@
- }
- }
-
-+#ifndef USE_ICONV
- static void decode_mime_utf8 (Slrn_Article_Type *a)
- {
- Slrn_Article_Line_Type *line;
-@@ -879,6 +1004,7 @@
- line = line->next;
- }
- }
-+#endif /* USE_ICONV */
-
- void slrn_mime_article_init (Slrn_Article_Type *a)
- {
-@@ -894,8 +1020,6 @@
-
- a->mime_was_parsed = 1; /* or will be */
-
-- rfc1522_decode_headers (a);
--
- /* Is there a reason to use the following line? */
- /* if (NULL == find_header_line (a, "Mime-Version:")) return;*/
- if ((-1 == parse_content_type_line (a))
-@@ -904,6 +1028,8 @@
- a->mime_needs_metamail = 1;
- return;
- }
-+
-+ rfc1522_decode_headers (a);
-
- switch (Encoding_Method)
- {
-@@ -926,14 +1052,16 @@
- return;
- }
-
-+#ifndef USE_ICONV
- if ((a->mime_needs_metamail == 0) &&
--#if SLANG_VERSION >= 20000
-+# if SLANG_VERSION >= 20000
- (Slrn_UTF8_Mode == 0) &&
--#endif
-+# endif
- (Char_Set != NULL) &&
- (slrn_case_strncmp((unsigned char *)"utf-8",
- (unsigned char *)Char_Set, 5) == 0))
- decode_mime_utf8 (a);
-+#endif /* USE_ICONV */
- }
-
- #ifndef MAXPATHLEN
-@@ -1525,6 +1653,10 @@
- if (Mime_Posting_Charset == NULL)
- Mime_Posting_Charset = "us-ascii";
-
-+ /* TODO: check that a charset header isn't already present */
-+ /* so: (1) extract possible charset header and use it to override
-+ * Mime_Posting_Charset here; (2) remove possible duplicate headers
-+ * that we are going to add; (3) add headers as below */
- switch (Mime_Posting_Encoding)
- {
- default:
-diff -Nur slrn-0.9.8.1pl1.orig/src/mime.h slrn-0.9.8.1pl1/src/mime.h
---- slrn-0.9.8.1pl1.orig/src/mime.h 2004-08-14 23:43:17.000000000 +0200
-+++ slrn-0.9.8.1pl1/src/mime.h 2006-04-04 21:56:19.000000000 +0200
-@@ -1,6 +1,11 @@
- #ifndef _SLRN_MIME_H
- #define _SLRN_MIME_H
-
-+/* don't use recode for slrnpull */
-+#if defined(SLRNPULL_CODE) && defined(USE_ICONV)
-+# undef USE_ICONV
-+#endif
-+
- #include "vfile.h"
-
- extern int Slrn_Use_Mime;
-@@ -11,7 +16,7 @@
-
- # if SLRN_HAS_MIME /* rest of file in this if */
- extern int slrn_set_compatible_charsets (char *);
--extern int slrn_rfc1522_decode_string (char *);
-+extern int slrn_rfc1522_decode_string (char **);
-
- extern VFILE *slrn_mime_encode (VFILE *);
- extern void slrn_mime_header_encode (char *, unsigned int);
-diff -Nur slrn-0.9.8.1pl1.orig/src/slrn.c slrn-0.9.8.1pl1/src/slrn.c
---- slrn-0.9.8.1pl1.orig/src/slrn.c 2005-02-11 23:20:42.000000000 +0100
-+++ slrn-0.9.8.1pl1/src/slrn.c 2006-04-04 21:56:19.000000000 +0200
-@@ -107,8 +107,15 @@
- # include <windows.h>
- #endif
-
-+/* don't use recode for slrnpull */
-+#if defined(SLRNPULL_CODE) && defined(USE_ICONV)
-+# undef USE_ICONV
-+#endif
-+
-+
- /*}}}*/
-
-+
- /*{{{ Global Variables */
-
- #if SLANG_VERSION >= 20000
-@@ -1219,7 +1226,7 @@
- if (Slrn_Post_Id == 0) Slrn_Post_Id = Slrn_Default_Post_Obj;
- if (no_new_groups) Slrn_Check_New_Groups = 0;
-
--#if SLRN_HAS_CHARACTER_MAP
-+#if SLRN_HAS_CHARACTER_MAP || defined(USE_ICONV)
- if (-1 == slrn_set_charset (Slrn_Charset))
- {
- slrn_chmap_show_supported ();
-@@ -1227,10 +1234,13 @@
- }
- #endif
-
--#if SLRN_HAS_MIME
-+#ifdef USE_ICONV
-+ Slrn_Mime_Display_Charset = slrn_safe_strmalloc (Slrn_Charset);
-+#else /* USE_ICONV */
-+# if SLRN_HAS_MIME
- if (NULL == Slrn_Mime_Display_Charset)
-- {
--# if SLRN_HAS_CHARACTER_MAP
-+ {
-+# if SLRN_HAS_CHARACTER_MAP
- if (NULL != Slrn_Charset)
- {
- if (0 == slrn_case_strcmp ((unsigned char *)Slrn_Charset,
-@@ -1247,10 +1257,11 @@
- Slrn_Mime_Display_Charset = slrn_safe_strmalloc ("iso-8859-7");
- }
- if (NULL == Slrn_Mime_Display_Charset)
--# endif
-+# endif
- Slrn_Mime_Display_Charset = slrn_safe_strmalloc ("iso-8859-1");
-+# endif
- }
--#endif
-+#endif /* USE_ICONV */
-
- #ifdef SIGINT
- if (Slrn_TT_Initialized == 0)
-diff -Nur slrn-0.9.8.1pl1.orig/src/slrnpull.c slrn-0.9.8.1pl1/src/slrnpull.c
---- slrn-0.9.8.1pl1.orig/src/slrnpull.c 2004-11-28 15:48:09.000000000 +0100
-+++ slrn-0.9.8.1pl1/src/slrnpull.c 2006-04-04 21:56:19.000000000 +0200
-@@ -1335,8 +1335,8 @@
- h.from = slrn_safe_strmalloc (xov->from);
- if (Slrn_Use_Mime)
- {
-- slrn_rfc1522_decode_string (h.subject);
-- slrn_rfc1522_decode_string (h.from);
-+ slrn_rfc1522_decode_string (&(h.subject));
-+ slrn_rfc1522_decode_string (&(h.from));
- }
- #endif
-
-diff -Nur slrn-0.9.8.1pl1.orig/src/startup.c slrn-0.9.8.1pl1/src/startup.c
---- slrn-0.9.8.1pl1.orig/src/startup.c 2004-10-31 15:16:25.000000000 +0100
-+++ slrn-0.9.8.1pl1/src/startup.c 2006-04-04 21:56:19.000000000 +0200
-@@ -61,6 +61,13 @@
- #ifdef VMS
- # include "vms.h"
- #endif
-+
-+/* don't use recode for slrnpull */
-+#if defined(SLRNPULL_CODE) && defined(USE_ICONV)
-+# undef USE_ICONV
-+#endif
-+
-+
- /*}}}*/
-
- /*{{{ Forward Function Declarations */
-@@ -692,13 +699,15 @@
- },
-
- #if SLRN_HAS_MIME
-+# ifndef USE_ICONV /* this is fetched from the current locale */
- {"mime_charset", &Slrn_Mime_Display_Charset},
-+# endif /* USE_ICONV */
- {"metamail_command", &Slrn_MetaMail_Cmd},
- #else
- {"mime_charset", NULL},
- {"metamail_command", NULL},
- #endif
--#if SLRN_HAS_CHARACTER_MAP
-+#if SLRN_HAS_CHARACTER_MAP && !defined(USE_ICONV)
- {"charset", &Slrn_Charset},
- #else
- {"charset", NULL},
-diff -Nur slrn-0.9.8.1pl1.orig/src/xover.c slrn-0.9.8.1pl1/src/xover.c
---- slrn-0.9.8.1pl1.orig/src/xover.c 2003-07-29 15:05:37.000000000 +0200
-+++ slrn-0.9.8.1pl1/src/xover.c 2006-04-04 21:56:19.000000000 +0200
-@@ -155,7 +155,7 @@
- (unsigned char *)"Newsgroups") &&
- slrn_case_strcmp ((unsigned char *)h,
- (unsigned char *)"Followup-To"))
-- slrn_rfc1522_decode_string (colon);
-+ slrn_rfc1522_decode_string (&colon);
- #endif
- addh->value = colon;
- break;
diff --git a/slrn-search-author.patch b/slrn-search-author.patch
deleted file mode 100644
index dbf1590..0000000
--- a/slrn-search-author.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- slrn-0.9.8.1pl1/src/art.c.orig 2005-01-29 00:26:09.000000000 +0100
-+++ slrn-0.9.8.1pl1/src/art.c 2006-03-07 20:32:04.375072500 +0100
-@@ -5064,8 +5064,8 @@
- (unsigned char *) l->from + strlen (l->from),
- &st))
- #else
-- && (NULL != SLsearch_forward (st, (SLuchar_Type *) l->subject,
-- (SLuchar_Type *) l->subject + strlen (l->subject)))
-+ && (NULL != SLsearch_forward (st, (SLuchar_Type *) l->from,
-+ (SLuchar_Type *) l->from + strlen (l->from)))
- #endif
- )
- break;
diff --git a/slrn-sharedlibs.patch b/slrn-sharedlibs.patch
deleted file mode 100644
index 8c5aa23..0000000
--- a/slrn-sharedlibs.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- slrn-0.9.8.0/configure.in.orig 2003-08-26 20:46:39.000000000 +0200
-+++ slrn-0.9.8.0/configure.in 2003-08-26 20:52:14.005936424 +0200
-@@ -63,12 +63,12 @@
- AH_VERBATIM([SLRN_HAS_UUDEVIEW],
- [/* define if you want uudeview support */
- #define SLRN_HAS_UUDEVIEW 0])
--CF_WITH_OPT_LIB(uudeview, UULIB, UUINC, libuu.a, -luu, uudeview.h,
-+CF_WITH_OPT_LIB(uudeview, UULIB, UUINC, libuu, -luu, uudeview.h,
- [SLRN_HAS_UUDEVIEW], [ --with-uudeview[=DIR] For uudeview library support])
- AH_VERBATIM([SLRN_HAS_CANLOCK],
- [/* define if you want cancel lock support using libcanlock */
- #define SLRN_HAS_CANLOCK 0])
--CF_WITH_OPT_LIB(canlock, LOCKLIB, LOCKINC, libcanlock.a, -lcanlock, canlock.h,
-+CF_WITH_OPT_LIB(canlock, LOCKLIB, LOCKINC, libcanlock, -lcanlock, canlock.h,
- [SLRN_HAS_CANLOCK], [ --with-canlock[=DIR] For cancel-lock library support])
-
- dnl SLRN_LIB_DIR: directory for the global newsgroups.dsc
---- slrn-0.9.8.0/autoconf/acinclude.m4.orig 2002-11-01 13:32:26.000000000 +0100
-+++ slrn-0.9.8.0/autoconf/acinclude.m4 2003-08-26 20:51:52.018279056 +0200
-@@ -586,7 +586,7 @@
- fi
-
- for candidate in $opt_library_dirs; do
-- if test -r "$candidate/$4" ; then
-+ if test -r "$candidate/$4.so" -o -r "$candidate/$4.a" ; then
- ac_opt_library="$candidate"
- break
- fi