[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mutt-dev
Subject:    [PATCH] Msg file always needs '\n' before EOF (Re: What should go into 1.5.7?)
From:       TAKAHASHI Tamotsu <ttakah () lapis ! plala ! or ! jp>
Date:       2005-01-27 8:40:41
Message-ID: 20050127084041.GC78067 () mutt ! no-ip ! org ! example ! org
[Download RAW message or body]

[bug] Mutt sometimes fails to convert a message file
from $charset to $send_charset.

[detail] If a Japanese message file doesn't end with '\n',
mutt finishes converting it from $charset to $iso-2022-jp
without turning back to US-ASCII.
Mutt should terminate ISO-2022-JP state.

[stability] Many Japanese users have used this patch
(included in JA patch) for yeas.
No side effects have been found so far.

[credit] TAKIZAWA Takashi wrote it.

-- 
tamo

["patch-1.5.6.tt.fix_eof.1" (text/plain)]

EOF must be '\n' in any cases. Otherwise, mutt cannot detect some charset.
This patch makes sure that all messages end with '\n'.


--- mutt-1.5.6.orig/PATCHES	Mon Feb  2 02:42:47 2004
+++ mutt-1.5.6/PATCHES	Sat Feb 14 10:02:10 2004
@@ -0,0 +1 @@
+patch-1.5.6.tt.fix_eof.1

--- mutt-1.5.6.orig/curs_lib.c	Wed Nov  5 18:41:31 2003
+++ mutt-1.5.6/curs_lib.c	Sat Feb 14 10:01:29 2004
@@ -139,6 +139,19 @@
     CLEARLINE (LINES-1);
 }
 
+static void fix_end_of_file (const char *data)
+{
+  FILE *fp;
+  int c;
+  
+  if ((fp = safe_fopen (data, "a+")) == NULL)
+    return;
+  fseek (fp,-1,SEEK_END);
+  if ((c = fgetc(fp)) != '\n')
+    fputc ('\n', fp);
+  safe_fclose (&fp);
+}
+
 void mutt_edit_file (const char *editor, const char *data)
 {
   char cmd[LONG_STRING];
@@ -147,6 +160,7 @@
   mutt_expand_file_fmt (cmd, sizeof (cmd), editor, data);
   if (mutt_system (cmd) == -1)
     mutt_error (_("Error running \"%s\"!"), cmd);
+  fix_end_of_file (data);
   keypad (stdscr, TRUE);
   clearok (stdscr, TRUE);
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic