mirror of
https://github.com/irssi/irssi.git
synced 2024-11-03 04:27:19 -05:00
Introduce string_policy().
This commit is contained in:
parent
b0afcc96db
commit
2c8648a9c8
@ -25,6 +25,8 @@
|
||||
#include "utf8.h"
|
||||
#include "module.h"
|
||||
#include "wcwidth.c"
|
||||
/* Provide is_utf8(): */
|
||||
#include "recode.h"
|
||||
|
||||
int string_advance(char const **str, gboolean utf8)
|
||||
{
|
||||
@ -41,3 +43,14 @@ int string_advance(char const **str, gboolean utf8)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int string_policy(const char *str)
|
||||
{
|
||||
if (is_utf8()) {
|
||||
if (!str || g_utf8_validate(str, -1, NULL)) {
|
||||
/* No string provided or valid UTF-8 string: treat as UTF-8: */
|
||||
return TREAT_STRING_AS_UTF8;
|
||||
}
|
||||
}
|
||||
return TREAT_STRING_AS_BYTES;
|
||||
}
|
||||
|
@ -19,6 +19,20 @@ int mk_wcwidth(unichar c);
|
||||
*/
|
||||
int string_advance(char const **str, gboolean utf8);
|
||||
|
||||
/* TREAT_STRING_AS_BYTES means strings are to be treated using strncpy,
|
||||
* strnlen, etc.
|
||||
* TREAT_STRING_AS_UTF8 means strings are to be treated using g_utf8_*
|
||||
* functions.
|
||||
*/
|
||||
#define TREAT_STRING_AS_BYTES 0
|
||||
#define TREAT_STRING_AS_UTF8 1
|
||||
|
||||
/* Return how the str string ought to be treated: TREAT_STRING_AS_UTF8 if the
|
||||
* terminal handles UTF-8 and if the string appears to be a valid UTF-8 string;
|
||||
* TREAT_STRING_AS_BYTES otherwise.
|
||||
*/
|
||||
int string_policy(const char *str);
|
||||
|
||||
#define unichar_isprint(c) (((c) & ~0x80) >= 32)
|
||||
#define is_utf8_leading(c) (((c) & 0xc0) != 0x80)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user