Esempio n. 1
0
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);
}
Esempio n. 2
0
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);

}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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);
}
Esempio n. 5
0
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;
}