2005-06-08 [colin] 1.9.11cvs49
authorColin Leroy <colin@colino.net>
Wed, 8 Jun 2005 16:34:12 +0000 (16:34 +0000)
committerColin Leroy <colin@colino.net>
Wed, 8 Jun 2005 16:34:12 +0000 (16:34 +0000)
* src/imap_gtk.c
Warning fix
* src/procmime.c
Apply patch from gentoo to use /usr/share/mime/globs if
available, after un-breaking it
* src/common/log.c
* src/common/log.h
Use g_timeout for invoking hooks that possibly use gtk
calls. This should leave gtk calls in the main thread.

ChangeLog-gtk2.claws
PATCHSETS
configure.ac
src/common/log.c
src/common/log.h
src/imap_gtk.c
src/procmime.c

index 045b9f8..fb04d4b 100644 (file)
@@ -1,3 +1,15 @@
+2005-06-08 [colin]     1.9.11cvs49
+
+       * src/imap_gtk.c
+               Warning fix
+       * src/procmime.c
+               Apply patch from gentoo to use /usr/share/mime/globs if 
+               available, after un-breaking it
+       * src/common/log.c
+       * src/common/log.h
+               Use g_timeout for invoking hooks that possibly use gtk
+               calls. This should leave gtk calls in the main thread.
+
 2005-06-08 [paul]      1.9.11cvs48
 
        * src/codeconv.c
index 6239d04..455fd1d 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.65.2.29 -r 1.65.2.30 src/codeconv.c;  cvs diff -u -r 1.15.2.7 -r 1.15.2.8 src/codeconv.h;  cvs diff -u -r 1.382.2.127 -r 1.382.2.128 src/compose.c;  cvs diff -u -r 1.274.2.41 -r 1.274.2.42 src/mainwindow.c;  cvs diff -u -r 1.94.2.53 -r 1.94.2.54 src/messageview.c;  cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/prefs_send.c;  cvs diff -u -r 1.9.2.12 -r 1.9.2.13 src/sourcewindow.c;  ) > 1.9.11cvs46.patchset
 ( cvs diff -u -r 1.382.2.128 -r 1.382.2.129 src/compose.c;  ) > 1.9.11cvs47.patchset
 ( cvs diff -u -r 1.65.2.30 -r 1.65.2.31 src/codeconv.c;  cvs diff -u -r 1.382.2.129 -r 1.382.2.130 src/compose.c;  cvs diff -u -r 1.50.2.8 -r 1.50.2.9 src/compose.h;  ) > 1.9.11cvs48.patchset
+( cvs diff -u -r 1.1.2.8 -r 1.1.2.9 src/imap_gtk.c;  cvs diff -u -r 1.49.2.45 -r 1.49.2.46 src/procmime.c;  cvs diff -u -r 1.6 -r 1.7 src/common/log.c;  cvs diff -u -r 1.4 -r 1.5 src/common/log.h;  ) > 1.9.11cvs49.patchset
index 83c60a2..9d21f87 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=9
 MICRO_VERSION=11
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=48
+EXTRA_VERSION=49
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index bda12aa..7d7833e 100644 (file)
 
 static FILE *log_fp = NULL;
 
+gboolean invoke_hook_cb (gpointer data)
+{
+       LogText *logtext = (LogText *)data;
+       hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, logtext);
+       g_free(logtext->text);
+       g_free(logtext);
+       return FALSE;
+}
+
 void set_log_file(const gchar *filename)
 {
        if (log_fp)
@@ -65,8 +74,8 @@ void log_print(const gchar *format, ...)
        va_list args;
        gchar buf[BUFFSIZE + LOG_TIME_LEN];
        time_t t;
-       LogText logtext;
-
+       LogText *logtext = g_new0(LogText, 1);
+       
        time(&t);
        strftime(buf, LOG_TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
 
@@ -75,9 +84,12 @@ void log_print(const gchar *format, ...)
        va_end(args);
 
        if (debug_get_mode()) fputs(buf, stdout);
-       logtext.text = buf;
-       logtext.type = LOG_NORMAL;
-       hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
+
+       logtext->text = g_strdup(buf);
+       logtext->type = LOG_NORMAL;
+       
+       g_timeout_add(0, invoke_hook_cb, logtext);
+       
        if (log_fp) {
                fputs(buf, log_fp);
                fflush(log_fp);
@@ -89,7 +101,7 @@ void log_message(const gchar *format, ...)
        va_list args;
        gchar buf[BUFFSIZE + LOG_TIME_LEN];
        time_t t;
-       LogText logtext;
+       LogText *logtext = g_new0(LogText, 1);
 
        time(&t);
        strftime(buf, LOG_TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
@@ -99,9 +111,11 @@ void log_message(const gchar *format, ...)
        va_end(args);
 
        if (debug_get_mode()) g_message("%s", buf + LOG_TIME_LEN);
-       logtext.text = buf + LOG_TIME_LEN;
-       logtext.type = LOG_MSG;
-       hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
+       logtext->text = g_strdup(buf + LOG_TIME_LEN);
+       logtext->type = LOG_MSG;
+       
+       g_timeout_add(0, invoke_hook_cb, logtext);
+
        if (log_fp) {
                fwrite(buf, LOG_TIME_LEN, 1, log_fp);
                fputs("* message: ", log_fp);
@@ -115,7 +129,7 @@ void log_warning(const gchar *format, ...)
        va_list args;
        gchar buf[BUFFSIZE + LOG_TIME_LEN];
        time_t t;
-       LogText logtext;
+       LogText *logtext = g_new0(LogText, 1);
 
        time(&t);
        strftime(buf, LOG_TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
@@ -125,9 +139,11 @@ void log_warning(const gchar *format, ...)
        va_end(args);
 
        g_warning("%s", buf);
-       logtext.text = buf + LOG_TIME_LEN;
-       logtext.type = LOG_WARN;
-       hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
+       logtext->text = g_strdup(buf + LOG_TIME_LEN);
+       logtext->type = LOG_WARN;
+       
+       g_timeout_add(0, invoke_hook_cb, logtext);
+
        if (log_fp) {
                fwrite(buf, LOG_TIME_LEN, 1, log_fp);
                fputs("** warning: ", log_fp);
@@ -141,7 +157,7 @@ void log_error(const gchar *format, ...)
        va_list args;
        gchar buf[BUFFSIZE + LOG_TIME_LEN];
        time_t t;
-       LogText logtext;
+       LogText *logtext = g_new0(LogText, 1);
 
        time(&t);
        strftime(buf, LOG_TIME_LEN + 1, "[%H:%M:%S] ", localtime(&t));
@@ -151,9 +167,11 @@ void log_error(const gchar *format, ...)
        va_end(args);
 
        g_warning("%s", buf);
-       logtext.text = buf + LOG_TIME_LEN;
-       logtext.type = LOG_ERROR;
-       hooks_invoke(LOG_APPEND_TEXT_HOOKLIST, &logtext);
+       logtext->text = g_strdup(buf + LOG_TIME_LEN);
+       logtext->type = LOG_ERROR;
+       
+       g_timeout_add(0, invoke_hook_cb, logtext);
+
        if (log_fp) {
                fwrite(buf, LOG_TIME_LEN, 1, log_fp);
                fputs("*** error: ", log_fp);
index b5b2783..f62de3e 100644 (file)
@@ -41,7 +41,7 @@ typedef struct _LogText LogText;
 
 struct _LogText
 {
-       const gchar     *text;
+       gchar           *text;
        LogType          type;  
 };
 
index 00fdf7c..73cf183 100644 (file)
@@ -397,7 +397,7 @@ static void download_cb(FolderView *folderview, guint action,
 
 gboolean imap_gtk_should_override(void)
 {
-       static time_t overridden = NULL;
+       static time_t overridden = 0;
        if (prefs_common.work_offline) {
                if (time(NULL) - overridden < 600)
                         return TRUE;
index 96e94b6..49bea7b 100644 (file)
@@ -434,7 +434,7 @@ gboolean procmime_encode_content(MimeInfo *mimeinfo, EncodingType encoding)
        }
 
        if (encoding == ENC_BASE64) {
-               gchar inbuf[B64_LINE_SIZE], outbuf[B64_BUFFSIZE];
+               gchar inbuf[B64_LINE_SIZE+1], outbuf[B64_BUFFSIZE];
                FILE *tmp_fp = infp;
                gchar *tmp_file = NULL;
 
@@ -1015,14 +1015,20 @@ GList *procmime_get_mime_type_list(void)
        guchar *p;
        gchar *delim;
        MimeType *mime_type;
+       gboolean fp_is_glob_file = TRUE;
 
        if (mime_type_list) 
                return mime_type_list;
-
-       if ((fp = fopen("/etc/mime.types", "rb")) == NULL) {
-               if ((fp = fopen(SYSCONFDIR "/mime.types", "rb")) == NULL) {
-                       FILE_OP_ERROR(SYSCONFDIR "/mime.types", "fopen");
-                       return NULL;
+       
+       if ((fp = fopen("/usr/share/mime/globs", "rb")) == NULL) {
+               fp_is_glob_file = FALSE;
+               if ((fp = fopen("/etc/mime.types", "rb")) == NULL) {
+                       if ((fp = fopen(SYSCONFDIR "/mime.types", "rb")) 
+                               == NULL) {
+                               FILE_OP_ERROR(SYSCONFDIR "/mime.types", 
+                                       "fopen");
+                               return NULL;
+                       }
                }
        }
 
@@ -1032,7 +1038,13 @@ GList *procmime_get_mime_type_list(void)
                g_strstrip(buf);
 
                p = buf;
-               while (*p && !isspace(*p)) p++;
+               
+               if (fp_is_glob_file) {
+                       while (*p && !isspace(*p) && (*p!=':')) p++;
+               } else {
+                       while (*p && !isspace(*p)) p++;
+               }
+
                if (*p) {
                        *p = '\0';
                        p++;
@@ -1045,7 +1057,12 @@ GList *procmime_get_mime_type_list(void)
                mime_type->type = g_strdup(buf);
                mime_type->sub_type = g_strdup(delim + 1);
 
-               while (*p && isspace(*p)) p++;
+               if (fp_is_glob_file) {
+                       while (*p && (isspace(*p)||(*p=='*')||(*p=='.'))) p++;
+               } else {
+                       while (*p && isspace(*p)) p++;
+               }
+
                if (*p)
                        mime_type->extension = g_strdup(p);
                else