--- src/mime.h	2007-06-30 09:49:30.000000000 +0200
+++ src/mime.h	2007-06-30 10:24:46.000000000 +0200
@@ -32,6 +32,6 @@
 extern int Slrn_Use_Meta_Mail;
 extern char *Slrn_MetaMail_Cmd;
 extern char *Slrn_Fallback_Input_Charset;
-
+extern int Slrn_Usascii_Override;
 
 #endif /* _SLRN_MIME_H */
--- src/startup.c	2007-06-08 19:30:02.000000000 +0200
+++ src/startup.c	2007-06-24 11:26:42.000000000 +0200
@@ -614,6 +614,7 @@
      {"max_queued_groups", &Slrn_Max_Queued_Groups},
      {"use_header_numbers", &Slrn_Use_Header_Numbers},
      {"use_localtime", &Slrn_Use_Localtime},
+     {"usascii_override", &Slrn_Usascii_Override},
 #if SLRN_HAS_SPOILERS
      {"spoiler_char", &Slrn_Spoiler_Char},
      {"spoiler_display_mode", &Slrn_Spoiler_Display_Mode},
--- src/mime.c	2007-06-30 09:48:01.000000000 +0200
+++ src/mime.c	2007-06-30 10:23:28.000000000 +0200
@@ -53,6 +53,7 @@
 int Slrn_Fold_Headers = 1;
 char *Slrn_MetaMail_Cmd;
 char *Slrn_Fallback_Input_Charset = NULL;
+int Slrn_Usascii_Override = 0;
 
 #ifndef SLRNPULL_CODE
 #define CONTENT_TYPE_TEXT		0x01
@@ -818,6 +819,13 @@
 	a->mime.needs_metamail = 1;
 	return;
      }
+
+     if( (slrn_case_strncmp((unsigned char *)"us-ascii", (unsigned char *)a->mime.charset,8) == 0) 
+           && (Slrn_Fallback_Input_Charset != NULL) && (Slrn_Usascii_Override != 0) )
+     {
+       slrn_free(a->mime.charset);
+       a->mime.charset = slrn_safe_strmalloc(Slrn_Fallback_Input_Charset);
+     }
   
    if ((a->mime.needs_metamail == 0) &&
 	     (a->mime.charset == NULL))
--- src/version.c      2007-07-07 13:14:58.000000000 +0200
+++ src/version.c      2007-07-07 13:13:27.000000000 +0200
@@ -83,2 +83,3 @@
 static char *included_patches[] =
 {
+ "usascii_override",
--- src/util.c	2006-10-30 21:14:49.000000000 +0100
+++ src/util.c	2007-07-17 23:15:59.000000000 +0200
@@ -153,19 +153,18 @@
 {
    register unsigned char cha, chb, *bmax;
    
+   if (a == NULL)
+     {
+        if (b == NULL)
+          return 0;
+        else
+          return -1;
+     }
+   if (b == NULL)
+     return 1;
 #if SLANG_VERSION >= 20000
    if (Slrn_UTF8_Mode)
      {
-	if (a == NULL)
-	  {
-	     if (b == NULL)
-	       return 0;
-	     else
-	       return -1;
-	  }
-	if (b == NULL)
-	  return 1;
-	
 	return SLutf8_compare(a, a+strlen(a), b, b+strlen(b), n , 0);
      }
 #endif
@@ -191,19 +190,19 @@
 {
    register unsigned char cha, chb;
    int len_a,len_b,min;
-   
+
+   if (a == NULL)
+     {
+        if (b == NULL)
+          return 0;
+        else
+          return -1;
+     }
+   if (b == NULL)
+     return 1;
 #if SLANG_VERSION >= 20000
    if (Slrn_UTF8_Mode)
      {
-	if (a == NULL)
-	  {
-	     if (b == NULL)
-	       return 0;
-	     else
-	       return -1;
-	  }
-	if (b == NULL)
-	  return 1;
 	len_a=strlen(a);
 	len_b=strlen(b);
 	if (len_a > len_b)

