Lines Matching defs:ud
302 struct utf8_data *ud;
333 ud = utf8_fromcstr(copy);
335 if (ud[0].size == 0 || ud[1].size != 0) {
336 free(ud);
341 if (utf8proc_mbtowc(&wc, ud[0].data, ud[0].size) <= 0) {
343 if (mbtowc(&wc, ud[0].data, ud[0].size) <= 0) {
345 free(ud);
349 free(ud);
430 utf8_from_data(const struct utf8_data *ud, utf8_char *uc)
434 if (ud->width > 2)
435 fatalx("invalid UTF-8 width: %u", ud->width);
437 if (ud->size > UTF8_SIZE)
439 if (ud->size <= 3) {
440 index = (((utf8_char)ud->data[2] << 16)|
441 ((utf8_char)ud->data[1] << 8)|
442 ((utf8_char)ud->data[0]));
443 } else if (utf8_put_item(ud->data, ud->size, &index) != 0)
445 *uc = UTF8_SET_SIZE(ud->size)|UTF8_SET_WIDTH(ud->width)|index;
446 log_debug("%s: (%d %d %.*s) -> %08x", __func__, ud->width, ud->size,
447 (int)ud->size, ud->data, *uc);
451 if (ud->width == 0)
453 else if (ud->width == 1)
462 utf8_to_data(utf8_char uc, struct utf8_data *ud)
467 memset(ud, 0, sizeof *ud);
468 ud->size = ud->have = UTF8_GET_SIZE(uc);
469 ud->width = UTF8_GET_WIDTH(uc);
471 if (ud->size <= 3) {
472 ud->data[2] = (uc >> 16);
473 ud->data[1] = ((uc >> 8) & 0xff);
474 ud->data[0] = (uc & 0xff);
478 memset(ud->data, ' ', ud->size);
480 memcpy(ud->data, ui->data, ud->size);
483 log_debug("%s: %08x -> (%d %d %.*s)", __func__, uc, ud->width, ud->size,
484 (int)ud->size, ud->data);
496 utf8_set(struct utf8_data *ud, u_char ch)
500 memcpy(ud, &empty, sizeof *ud);
501 *ud->data = ch;
518 utf8_width(struct utf8_data *ud, int *width)
523 if (utf8_towc(ud, &wc) != UTF8_DONE)
548 utf8_towc(const struct utf8_data *ud, wchar_t *wc)
550 switch (mbtowc(wc, ud->data, ud->size)) {
552 log_debug("UTF-8 %.*s, mbtowc() %d", (int)ud->size, ud->data,
559 log_debug("UTF-8 %.*s is %05X", (int)ud->size, ud->data, (u_int)*wc);
565 utf8_fromwc(wchar_t wc, struct utf8_data *ud)
569 size = wctomb(ud->data, wc);
577 ud->size = ud->have = size;
578 if (utf8_width(ud, &width) == UTF8_DONE) {
579 ud->width = width;
593 utf8_open(struct utf8_data *ud, u_char ch)
595 memset(ud, 0, sizeof *ud);
597 ud->size = 2;
599 ud->size = 3;
601 ud->size = 4;
604 utf8_append(ud, ch);
610 utf8_append(struct utf8_data *ud, u_char ch)
614 if (ud->have >= ud->size)
616 if (ud->size > sizeof ud->data)
619 if (ud->have != 0 && (ch & 0xc0) != 0x80)
620 ud->width = 0xff;
622 ud->data[ud->have++] = ch;
623 if (ud->have != ud->size)
627 if (ud->width == 0xff)
629 if (utf8_width(ud, &width) != UTF8_DONE)
631 ud->width = width;
645 struct utf8_data ud;
651 if ((more = utf8_open(&ud, *src)) == UTF8_MORE) {
653 more = utf8_append(&ud, *src);
656 for (i = 0; i < ud.size; i++)
657 *dst++ = ud.data[i];
661 src -= ud.have;
711 struct utf8_data ud;
717 if ((more = utf8_open(&ud, *s)) == UTF8_MORE) {
719 more = utf8_append(&ud, *s);
742 struct utf8_data ud;
747 if ((more = utf8_open(&ud, *src)) == UTF8_MORE) {
749 more = utf8_append(&ud, *src);
751 dst = xreallocarray(dst, n + ud.width,
753 for (i = 0; i < ud.width; i++)
757 src -= ud.have;
913 utf8_cstrhas(const char *s, const struct utf8_data *ud)
920 if (loop->size != ud->size)
922 if (memcmp(loop->data, ud->data, loop->size) == 0) {