static int putUnicodeBraille (unsigned char cell, void *data) { Utf8Buffer utf8; size_t utfs = convertWcharToUtf8(cell|UNICODE_BRAILLE_ROW, utf8); fprintf(outputStream, "%.*s", (int)utfs, utf8); return checkOutputStream(data); }
char * usbDecodeString (const UsbStringDescriptor *descriptor) { size_t count = (descriptor->bLength - 2) / sizeof(descriptor->wData[0]); char buffer[(count * UTF8_LEN_MAX) + 1]; const uint16_t *source = descriptor->wData; const uint16_t *end = source + count; char *target = buffer; while (source < end) { size_t length = convertWcharToUtf8(getLittleEndian16(*source++), target); target += length; } *target = 0; { char *string = strdup(buffer); if (!string) logMallocError(); return string; } }
static int writeCharacter (wchar_t character) { Utf8Buffer buffer; size_t count = convertWcharToUtf8(character, buffer); return writeBytes(buffer, count); }