void printformat_module_dest_args(const char *module, TEXT_DEST_REC *dest, int formatnum, va_list va) { char *arglist[MAX_FORMAT_PARAMS]; char buffer[DEFAULT_FORMAT_ARGLIST_SIZE]; FORMAT_REC *formats; THEME_REC *theme; char *str; theme = window_get_theme(dest->window); formats = g_hash_table_lookup(default_formats, module); format_read_arglist(va, &formats[formatnum], arglist, sizeof(arglist)/sizeof(char *), buffer, sizeof(buffer)); if (!sending_print_starting) { sending_print_starting = TRUE; signal_emit_id(signal_print_starting, 1, dest); sending_print_starting = FALSE; } signal_emit_id(signal_print_format, 5, theme, module, dest, GINT_TO_POINTER(formatnum), arglist); str = format_get_text_theme_charargs(theme, module, dest, formatnum, arglist); if (str != NULL && *str != '\0') print_line(dest, str); g_free(str); }
static void sig_print_format(THEME_REC *theme, const char *module, TEXT_DEST_REC *dest, void *formatnum, char **args) { char *str, *linestart, *tmp; if (log_theme == NULL) { /* theme isn't loaded for some reason (/reload destroys it), reload it. */ log_theme = theme_load(log_theme_name); if (log_theme == NULL) return; } if (theme == log_theme) return; str = format_get_text_theme_charargs(log_theme, module, dest, GPOINTER_TO_INT(formatnum), args); skip_next_printtext = TRUE; if (*str != '\0') { /* add the line start format */ linestart = format_get_level_tag(log_theme, dest); tmp = str; str = format_add_linestart(tmp, linestart); g_free_not_null(linestart); g_free(tmp); /* strip colors from text, log it. */ log_line(dest, str); } g_free(str); }
void printformat_module_dest_charargs(const char *module, TEXT_DEST_REC *dest, int formatnum, char **arglist) { THEME_REC *theme; char *str; theme = window_get_theme(dest->window); if (!sending_print_starting) { sending_print_starting = TRUE; signal_emit_id(signal_print_starting, 1, dest); sending_print_starting = FALSE; } signal_emit_id(signal_print_format, 5, theme, module, dest, GINT_TO_POINTER(formatnum), arglist); str = format_get_text_theme_charargs(theme, module, dest, formatnum, arglist); if (str != NULL && *str != '\0') print_line(dest, str); g_free(str); }
void printformat_module_gui_args(const char *module, int formatnum, va_list va) { TEXT_DEST_REC dest; char *arglist[MAX_FORMAT_PARAMS]; char buffer[DEFAULT_FORMAT_ARGLIST_SIZE]; FORMAT_REC *formats; char *str; g_return_if_fail(module != NULL); memset(&dest, 0, sizeof(dest)); formats = g_hash_table_lookup(default_formats, module); format_read_arglist(va, &formats[formatnum], arglist, sizeof(arglist)/sizeof(char *), buffer, sizeof(buffer)); str = format_get_text_theme_charargs(window_get_theme(dest.window), module, &dest, formatnum, arglist); if (*str != '\0') format_send_to_gui(&dest, str); g_free(str); }
static char *gui_window_line_get_format(WINDOW_REC *window, LINE_REC *line, GString *raw) { const unsigned char *text; char *module, *format_name, *args[MAX_FORMAT_PARAMS], *ret; TEXT_DEST_REC dest; int formatnum, argcount; text = (const unsigned char *) line->text; /* skip the beginning of the line until we find the format */ g_free(line_read_format(&text)); if (text[1] == LINE_CMD_FORMAT_CONT) { g_string_append_c(raw, '\0'); g_string_append_c(raw, (char)LINE_CMD_FORMAT_CONT); return NULL; } /* read format information */ module = line_read_format(&text); format_name = line_read_format(&text); if (raw != NULL) { g_string_append_c(raw, '\0'); g_string_append_c(raw, (char)LINE_CMD_FORMAT); g_string_append(raw, module); g_string_append_c(raw, '\0'); g_string_append_c(raw, (char)LINE_CMD_FORMAT); g_string_append(raw, format_name); } formatnum = format_find_tag(module, format_name); if (formatnum == -1) ret = NULL; else { argcount = 0; memset(args, 0, sizeof(args)); while (*text != '\0' || text[1] != LINE_CMD_EOL) { args[argcount] = line_read_format(&text); if (raw != NULL) { g_string_append_c(raw, '\0'); g_string_append_c(raw, (char)LINE_CMD_FORMAT); g_string_append(raw, args[argcount]); } argcount++; } /* get the format text */ format_create_dest(&dest, NULL, NULL, line->level, window); ret = format_get_text_theme_charargs(current_theme, module, &dest, formatnum, args); while (argcount > 0) g_free(args[--argcount]); } g_free(module); g_free(format_name); return ret; }