Lines Matching refs:ud
303 struct utf8_data *ud;
334 ud = utf8_fromcstr(copy);
336 if (ud[0].size == 0 || ud[1].size != 0) {
337 free(ud);
342 if (utf8proc_mbtowc(&wc, ud[0].data, ud[0].size) <= 0) {
344 if (mbtowc(&wc, (char *)ud[0].data, ud[0].size) <= 0) {
346 free(ud);
350 free(ud);
431 utf8_from_data(const struct utf8_data *ud, utf8_char *uc)
435 if (ud->width > 2)
436 fatalx("invalid UTF-8 width: %u", ud->width);
438 if (ud->size > UTF8_SIZE)
440 if (ud->size <= 3) {
441 index = (((utf8_char)ud->data[2] << 16)|
442 ((utf8_char)ud->data[1] << 8)|
443 ((utf8_char)ud->data[0]));
444 } else if (utf8_put_item(ud->data, ud->size, &index) != 0)
446 *uc = UTF8_SET_SIZE(ud->size)|UTF8_SET_WIDTH(ud->width)|index;
447 log_debug("%s: (%d %d %.*s) -> %08x", __func__, ud->width, ud->size,
448 (int)ud->size, ud->data, *uc);
452 if (ud->width == 0)
454 else if (ud->width == 1)
463 utf8_to_data(utf8_char uc, struct utf8_data *ud)
468 memset(ud, 0, sizeof *ud);
469 ud->size = ud->have = UTF8_GET_SIZE(uc);
470 ud->width = UTF8_GET_WIDTH(uc);
472 if (ud->size <= 3) {
473 ud->data[2] = (uc >> 16);
474 ud->data[1] = ((uc >> 8) & 0xff);
475 ud->data[0] = (uc & 0xff);
479 memset(ud->data, ' ', ud->size);
481 memcpy(ud->data, ui->data, ud->size);
484 log_debug("%s: %08x -> (%d %d %.*s)", __func__, uc, ud->width, ud->size,
485 (int)ud->size, ud->data);
497 utf8_set(struct utf8_data *ud, u_char ch)
501 memcpy(ud, &empty, sizeof *ud);
502 *ud->data = ch;
519 utf8_width(struct utf8_data *ud, int *width)
524 if (utf8_towc(ud, &wc) != UTF8_DONE)
553 utf8_towc(const struct utf8_data *ud, wchar_t *wc)
556 switch (utf8proc_mbtowc(wc, ud->data, ud->size)) {
558 switch (mbtowc(wc, __UNCONST(ud->data), ud->size)) {
561 log_debug("UTF-8 %.*s, mbtowc() %d", (int)ud->size, ud->data,
568 log_debug("UTF-8 %.*s is %05X", (int)ud->size, ud->data, (u_int)*wc);
574 utf8_fromwc(wchar_t wc, struct utf8_data *ud)
579 size = utf8proc_wctomb(ud->data, wc);
581 size = wctomb((char *)ud->data, wc);
590 ud->size = ud->have = size;
591 if (utf8_width(ud, &width) == UTF8_DONE) {
592 ud->width = width;
606 utf8_open(struct utf8_data *ud, u_char ch)
608 memset(ud, 0, sizeof *ud);
610 ud->size = 2;
612 ud->size = 3;
614 ud->size = 4;
617 utf8_append(ud, ch);
623 utf8_append(struct utf8_data *ud, u_char ch)
627 if (ud->have >= ud->size)
629 if (ud->size > sizeof ud->data)
632 if (ud->have != 0 && (ch & 0xc0) != 0x80)
633 ud->width = 0xff;
635 ud->data[ud->have++] = ch;
636 if (ud->have != ud->size)
640 if (ud
642 if (utf8_width(ud, &width) != UTF8_DONE)
644 ud->width = width;
658 struct utf8_data ud;
664 if ((more = utf8_open(&ud, *src)) == UTF8_MORE) {
666 more = utf8_append(&ud, *src);
669 for (i = 0; i < ud.size; i++)
670 *dst++ = ud.data[i];
674 src -= ud.have;
724 struct utf8_data ud;
730 if ((more = utf8_open(&ud, *s)) == UTF8_MORE) {
732 more = utf8_append(&ud, *s);
755 struct utf8_data ud;
760 if ((more = utf8_open(&ud, *src)) == UTF8_MORE) {
762 more = utf8_append(&ud, *src);
764 dst = xreallocarray(dst, n + ud.width,
766 for (i = 0; i < ud.width; i++)
770 src -= ud.have;
926 utf8_cstrhas(const char *s, const struct utf8_data *ud)
933 if (loop->size != ud->size)
935 if (memcmp(loop->data, ud->data, loop->size) == 0) {