summaryrefslogtreecommitdiff
path: root/src/fe-common
diff options
context:
space:
mode:
Diffstat (limited to 'src/fe-common')
-rw-r--r--src/fe-common/core/formats.c28
-rw-r--r--src/fe-common/core/formats.h3
-rw-r--r--src/fe-common/core/printtext.c13
-rw-r--r--src/fe-common/core/printtext.h3
4 files changed, 34 insertions, 13 deletions
diff --git a/src/fe-common/core/formats.c b/src/fe-common/core/formats.c
index 1799e812..107bc497 100644
--- a/src/fe-common/core/formats.c
+++ b/src/fe-common/core/formats.c
@@ -216,6 +216,34 @@ void format_create_dest(TEXT_DEST_REC *dest,
dest->hilight_bg_color = 0;
}
+int format_get_length(const char *str)
+{
+ GString *tmp;
+ int len;
+
+ tmp = g_string_new(NULL);
+ len = 0;
+ while (*str != '\0') {
+ if (*str == '%' && str[1] != '\0') {
+ str++;
+ if (*str != '%' && format_expand_styles(tmp, *str)) {
+ str++;
+ continue;
+ }
+
+ /* %% or unknown %code, written as-is */
+ if (*str != '%')
+ len++;
+ }
+
+ len++;
+ str++;
+ }
+
+ g_string_free(tmp, TRUE);
+ return len;
+}
+
static char *format_get_text_args(TEXT_DEST_REC *dest,
const char *text, char **arglist)
{
diff --git a/src/fe-common/core/formats.h b/src/fe-common/core/formats.h
index 2e2d6cff..5d136d2f 100644
--- a/src/fe-common/core/formats.h
+++ b/src/fe-common/core/formats.h
@@ -43,6 +43,9 @@ typedef struct {
int format_find_tag(const char *module, const char *tag);
+/* Return length of text part in string (ie. without % codes) */
+int format_get_length(const char *str);
+
char *format_get_text(const char *module, WINDOW_REC *window,
void *server, const char *target,
int formatnum, ...);
diff --git a/src/fe-common/core/printtext.c b/src/fe-common/core/printtext.c
index f1c4d397..7b85e2c7 100644
--- a/src/fe-common/core/printtext.c
+++ b/src/fe-common/core/printtext.c
@@ -348,7 +348,7 @@ void printtext_window(WINDOW_REC *window, int level, const char *text, ...)
va_end(va);
}
-void printtext_gui_args(const char *text, va_list va)
+void printtext_gui(const char *text)
{
TEXT_DEST_REC dest;
char *str;
@@ -357,20 +357,11 @@ void printtext_gui_args(const char *text, va_list va)
memset(&dest, 0, sizeof(dest));
- str = printtext_get_args(&dest, text, va);
+ str = printtext_expand_formats(text);
format_send_to_gui(&dest, str);
g_free(str);
}
-void printtext_gui(const char *text, ...)
-{
- va_list va;
-
- va_start(va, text);
- printtext_gui_args(text, va);
- va_end(va);
-}
-
static void msg_beep_check(SERVER_REC *server, int level)
{
if (level != 0 && (level & MSGLEVEL_NOHILIGHT) == 0 &&
diff --git a/src/fe-common/core/printtext.h b/src/fe-common/core/printtext.h
index 5133fa57..125b6f72 100644
--- a/src/fe-common/core/printtext.h
+++ b/src/fe-common/core/printtext.h
@@ -17,8 +17,7 @@ void printbeep(void);
/* only GUI should call these - used for printing text to somewhere else
than windows */
-void printtext_gui(const char *text, ...);
-void printtext_gui_args(const char *text, va_list va);
+void printtext_gui(const char *text);
void printformat_module_gui(const char *module, int formatnum, ...);
void printformat_module_gui_args(const char *module, int formatnum, va_list va);