Added SILC Thread Queue API
[crypto.git] / apps / irssi / src / fe-common / core / printtext.c
index 2f6c19ea80b6c601f1c260ce303050e4805eec62..a3d34a22ace243ba688cbd56e154ee3d035bda6d 100644 (file)
@@ -70,7 +70,7 @@ void printformat_module_dest_args(const char *module, TEXT_DEST_REC *dest,
 
        str = format_get_text_theme_charargs(theme, module, dest,
                                             formatnum, arglist);
-       if (*str != '\0') print_line(dest, str);
+       if (str != NULL && *str != '\0') print_line(dest, str);
        g_free(str);
 }
 
@@ -158,15 +158,18 @@ void printformat_module_gui(const char *module, int formatnum, ...)
 
 static void print_line(TEXT_DEST_REC *dest, const char *text)
 {
+        THEME_REC *theme;
        char *str, *tmp, *stripped;
 
        g_return_if_fail(dest != NULL);
        g_return_if_fail(text != NULL);
-
-       tmp = format_get_level_tag(window_get_theme(dest->window), dest);
-       str = format_add_linestart(text, tmp);
+       
+        theme = window_get_theme(dest->window);
+       tmp = format_get_level_tag(theme, dest);
+       str = !theme->info_eol ? format_add_linestart(text, tmp) :
+               format_add_lineend(text, tmp);
        g_free_not_null(tmp);
-
+       
        /* send both the formatted + stripped (for logging etc.) */
        stripped = strip_codes(str);
        signal_emit_id(signal_print_text, 3, dest, str, stripped);
@@ -408,12 +411,19 @@ static void msg_beep_check(TEXT_DEST_REC *dest)
 
 static void sig_print_text(TEXT_DEST_REC *dest, const char *text)
 {
+        THEME_REC *theme;
        char *str, *tmp;
 
        g_return_if_fail(dest != NULL);
-       g_return_if_fail(dest->window != NULL);
        g_return_if_fail(text != NULL);
 
+       if (dest->window == NULL) {
+                str = strip_codes(text);
+               printf("NO WINDOWS: %s\n", str);
+                g_free(str);
+                return;
+       }
+
        msg_beep_check(dest);
 
         if ((dest->level & MSGLEVEL_NEVER) == 0)
@@ -421,9 +431,11 @@ static void sig_print_text(TEXT_DEST_REC *dest, const char *text)
 
        /* add timestamp/server tag here - if it's done in print_line()
           it would be written to log files too */
-       tmp = format_get_line_start(window_get_theme(dest->window),
-                                   dest, time(NULL));
-       str = format_add_linestart(text, tmp);
+        theme = window_get_theme(dest->window);
+       tmp = format_get_line_start(theme, dest, time(NULL));
+       str = !theme->info_eol ? format_add_linestart(text, tmp) :
+               format_add_lineend(text, tmp);
+
        g_free_not_null(tmp);
 
        format_send_to_gui(dest, str);
@@ -462,7 +474,7 @@ static void sig_gui_dialog(const char *type, const char *text)
 
 static void read_settings(void)
 {
-       beep_msg_level = level2bits(settings_get_str("beep_msg_level"));
+       beep_msg_level = settings_get_level("beep_msg_level");
        beep_when_away = settings_get_bool("beep_when_away");
         beep_when_window_active = settings_get_bool("beep_when_window_active");
 }