1
0
mirror of https://github.com/irssi/irssi.git synced 2024-12-04 14:46:39 -05:00

Move advance() from fe-common/core to core.

This commit is contained in:
Xavier G 2016-05-13 01:39:14 +02:00
parent 5538578820
commit 5c74a3bb88
3 changed files with 20 additions and 16 deletions

View File

@ -26,3 +26,18 @@
#include "module.h" #include "module.h"
#include "wcwidth.c" #include "wcwidth.c"
int advance(char const **str, gboolean utf8)
{
if (utf8) {
gunichar c;
c = g_utf8_get_char(*str);
*str = g_utf8_next_char(*str);
return unichar_isprint(c) ? mk_wcwidth(c) : 1;
} else {
*str += 1;
return 1;
}
}

View File

@ -14,6 +14,11 @@ typedef guint32 unichar;
/* Returns width for character (0-2). */ /* Returns width for character (0-2). */
int mk_wcwidth(unichar c); int mk_wcwidth(unichar c);
/* Advance the str pointer one character further; return the number of columns
* occupied by the skipped character.
*/
int advance(char const **str, gboolean utf8);
#define unichar_isprint(c) (((c) & ~0x80) >= 32) #define unichar_isprint(c) (((c) & ~0x80) >= 32)
#define is_utf8_leading(c) (((c) & 0xc0) != 0x80) #define is_utf8_leading(c) (((c) & 0xc0) != 0x80)

View File

@ -420,22 +420,6 @@ void format_create_dest_tag(TEXT_DEST_REC *dest, void *server,
window_find_closest(server, target, level); window_find_closest(server, target, level);
} }
static int advance (char const **str, gboolean utf8)
{
if (utf8) {
gunichar c;
c = g_utf8_get_char(*str);
*str = g_utf8_next_char(*str);
return unichar_isprint(c) ? mk_wcwidth(c) : 1;
} else {
*str += 1;
return 1;
}
}
/* Return length of text part in string (ie. without % codes) */ /* Return length of text part in string (ie. without % codes) */
int format_get_length(const char *str) int format_get_length(const char *str)
{ {