diff options
Diffstat (limited to 'src/core/wee-utf8.c')
-rw-r--r-- | src/core/wee-utf8.c | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/src/core/wee-utf8.c b/src/core/wee-utf8.c index 176fee797..c7b8596d3 100644 --- a/src/core/wee-utf8.c +++ b/src/core/wee-utf8.c @@ -16,7 +16,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* utf8.c: UTF-8 string functions for WeeChat */ +/* wee-utf8.c: UTF-8 string functions for WeeChat */ #ifdef HAVE_CONFIG_H @@ -27,9 +27,9 @@ #include <string.h> #include "weechat.h" -#include "utf8.h" -#include "util.h" -#include "weeconfig.h" +#include "wee-utf8.h" +#include "wee-config.h" +#include "wee-string.h" int local_utf8 = 0; @@ -41,7 +41,7 @@ int local_utf8 = 0; void utf8_init () { - local_utf8 = (ascii_strcasecmp (local_charset, "UTF-8") == 0); + local_utf8 = (string_strcasecmp (local_charset, "UTF-8") == 0); } /* @@ -260,7 +260,7 @@ utf8_strlen (char *string) } /* - * utf8_strnlen: return length of an UTF-8 string, for N bytes + * utf8_strnlen: return length of an UTF-8 string, for N bytes max in string */ int @@ -283,11 +283,12 @@ utf8_strnlen (char *string, int bytes) } /* - * utf8_width_screen: return number of chars needed on screen to display UTF-8 string + * utf8_strlen_screen: return number of chars needed on screen to display + * UTF-8 string */ int -utf8_width_screen (char *string) +utf8_strlen_screen (char *string) { int length, num_char; wchar_t *wstring; @@ -315,6 +316,30 @@ utf8_width_screen (char *string) } /* + * utf8_char_size_screen: return number of chars needed on screen to display + * UTF-8 char + */ + +int +utf8_char_size_screen (char *string) +{ + int char_size; + char utf_char[16]; + + if (!string) + return 0; + + char_size = utf8_char_size (string); + if (char_size == 0) + return 0; + + memcpy (utf_char, string, char_size); + utf_char[char_size] = '\0'; + + return utf8_strlen_screen (utf_char); +} + +/* * utf8_add_offset: moves forward N chars in an UTF-8 string */ @@ -386,11 +411,11 @@ utf8_pos (char *string, int real_pos) } /* - * utf8_get_wc: get wide char from string (first char) + * utf8_get_wide_char: get wide char from string (first char) */ wint_t -utf8_get_wc (char *string) +utf8_get_wide_char (char *string) { int char_size; wint_t result; |