|
@ -41,7 +41,7 @@ |
|
|
#define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f) || (c) == '\177') |
|
|
#define ISCONTROLC0(c) (BETWEEN(c, 0, 0x1f) || (c) == '\177') |
|
|
#define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f)) |
|
|
#define ISCONTROLC1(c) (BETWEEN(c, 0x80, 0x9f)) |
|
|
#define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c)) |
|
|
#define ISCONTROL(c) (ISCONTROLC0(c) || ISCONTROLC1(c)) |
|
|
#define ISDELIM(u) (utf8strchr(worddelimiters, u) != NULL) |
|
|
|
|
|
|
|
|
#define ISDELIM(u) (u != 0 && wcschr(worddelimiters, u) != NULL) |
|
|
|
|
|
|
|
|
enum term_mode { |
|
|
enum term_mode { |
|
|
MODE_WRAP = 1 << 0, |
|
|
MODE_WRAP = 1 << 0, |
|
@ -210,7 +210,6 @@ static void selsnap(int *, int *, int); |
|
|
static size_t utf8decode(const char *, Rune *, size_t); |
|
|
static size_t utf8decode(const char *, Rune *, size_t); |
|
|
static Rune utf8decodebyte(char, size_t *); |
|
|
static Rune utf8decodebyte(char, size_t *); |
|
|
static char utf8encodebyte(Rune, size_t); |
|
|
static char utf8encodebyte(Rune, size_t); |
|
|
static char *utf8strchr(char *, Rune); |
|
|
|
|
|
static size_t utf8validate(Rune *, size_t); |
|
|
static size_t utf8validate(Rune *, size_t); |
|
|
|
|
|
|
|
|
static char *base64dec(const char *); |
|
|
static char *base64dec(const char *); |
|
@ -337,23 +336,6 @@ utf8encodebyte(Rune u, size_t i) |
|
|
return utfbyte[i] | (u & ~utfmask[i]); |
|
|
return utfbyte[i] | (u & ~utfmask[i]); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
char * |
|
|
|
|
|
utf8strchr(char *s, Rune u) |
|
|
|
|
|
{ |
|
|
|
|
|
Rune r; |
|
|
|
|
|
size_t i, j, len; |
|
|
|
|
|
|
|
|
|
|
|
len = strlen(s); |
|
|
|
|
|
for (i = 0, j = 0; i < len; i += j) { |
|
|
|
|
|
if (!(j = utf8decode(&s[i], &r, len - i))) |
|
|
|
|
|
break; |
|
|
|
|
|
if (r == u) |
|
|
|
|
|
return &(s[i]); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return NULL; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
size_t |
|
|
size_t |
|
|
utf8validate(Rune *u, size_t i) |
|
|
utf8validate(Rune *u, size_t i) |
|
|
{ |
|
|
{ |
|
|