forked from PsychoticNinja/irssi
Introduce string_policy().
This commit is contained in:
parent
b0afcc96db
commit
2c8648a9c8
@ -25,6 +25,8 @@
|
|||||||
#include "utf8.h"
|
#include "utf8.h"
|
||||||
#include "module.h"
|
#include "module.h"
|
||||||
#include "wcwidth.c"
|
#include "wcwidth.c"
|
||||||
|
/* Provide is_utf8(): */
|
||||||
|
#include "recode.h"
|
||||||
|
|
||||||
int string_advance(char const **str, gboolean utf8)
|
int string_advance(char const **str, gboolean utf8)
|
||||||
{
|
{
|
||||||
@ -41,3 +43,14 @@ int string_advance(char const **str, gboolean utf8)
|
|||||||
return 1;
|
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);
|
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 unichar_isprint(c) (((c) & ~0x80) >= 32)
|
||||||
#define is_utf8_leading(c) (((c) & 0xc0) != 0x80)
|
#define is_utf8_leading(c) (((c) & 0xc0) != 0x80)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user