diff options
Diffstat (limited to 'libutf.c')
| -rw-r--r-- | libutf.c | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/libutf.c b/libutf.c deleted file mode 100644 index 108595e..0000000 --- a/libutf.c +++ /dev/null @@ -1,54 +0,0 @@ -/* libutf8 © 2012-2015 Connor Lane Smith <cls@lubutu.com> */ -#include "util.h" - -#include "libutf.h" - -int -runelen(Rune r) -{ - if(r <= 0x7F) - return 1; - else if(r <= 0x07FF) - return 2; - else if(r <= 0xD7FF) - return 3; - else if(r <= 0xDFFF) - return 0; /* surrogate character */ - else if(r <= 0xFFFD) - return 3; - else if(r <= 0xFFFF) - return 0; /* illegal character */ - else if(r <= Runemax) - return 4; - else - return 0; /* rune too large */ -} - -int -runetochar(char *s, const Rune *p) -{ - Rune r = *p; - - switch(runelen(r)) { - case 1: /* 0aaaaaaa */ - s[0] = r; - return 1; - case 2: /* 00000aaa aabbbbbb */ - s[0] = 0xC0 | ((r & 0x0007C0) >> 6); /* 110aaaaa */ - s[1] = 0x80 | (r & 0x00003F); /* 10bbbbbb */ - return 2; - case 3: /* aaaabbbb bbcccccc */ - s[0] = 0xE0 | ((r & 0x00F000) >> 12); /* 1110aaaa */ - s[1] = 0x80 | ((r & 0x000FC0) >> 6); /* 10bbbbbb */ - s[2] = 0x80 | (r & 0x00003F); /* 10cccccc */ - return 3; - case 4: /* 000aaabb bbbbcccc ccdddddd */ - s[0] = 0xF0 | ((r & 0x1C0000) >> 18); /* 11110aaa */ - s[1] = 0x80 | ((r & 0x03F000) >> 12); /* 10bbbbbb */ - s[2] = 0x80 | ((r & 0x000FC0) >> 6); /* 10cccccc */ - s[3] = 0x80 | (r & 0x00003F); /* 10dddddd */ - return 4; - default: - return 0; /* error */ - } -} |
