From: Colin Leroy Date: Wed, 8 Jun 2005 16:34:12 +0000 (+0000) Subject: 2005-06-08 [colin] 1.9.11cvs49 X-Git-Tag: rel_1_9_12~58 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=a5c2dea2c6ad62ff3cc2390cc4a2c7f8fda56f5e 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. --- diff --git a/ChangeLog-gtk2.claws b/ChangeLog-gtk2.claws index 045b9f80d..fb04d4bc5 100644 --- a/ChangeLog-gtk2.claws +++ b/ChangeLog-gtk2.claws @@ -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 diff --git a/PATCHSETS b/PATCHSETS index 6239d04c5..455fd1dea 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -537,3 +537,4 @@ ( 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 diff --git a/configure.ac b/configure.ac index 83c60a2d2..9d21f875f 100644 --- a/configure.ac +++ b/configure.ac @@ -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= diff --git a/src/common/log.c b/src/common/log.c index bda12aab5..7d7833edc 100644 --- a/src/common/log.c +++ b/src/common/log.c @@ -32,6 +32,15 @@ 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); diff --git a/src/common/log.h b/src/common/log.h index b5b27838f..f62de3edb 100644 --- a/src/common/log.h +++ b/src/common/log.h @@ -41,7 +41,7 @@ typedef struct _LogText LogText; struct _LogText { - const gchar *text; + gchar *text; LogType type; }; diff --git a/src/imap_gtk.c b/src/imap_gtk.c index 00fdf7c35..73cf18385 100644 --- a/src/imap_gtk.c +++ b/src/imap_gtk.c @@ -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; diff --git a/src/procmime.c b/src/procmime.c index 96e94b66f..49bea7b58 100644 --- a/src/procmime.c +++ b/src/procmime.c @@ -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