static int processLine (char *line, void *data) { const char *string = line; size_t length = strlen(string); const char *byte = string; size_t count = length + 1; wchar_t characters[count]; wchar_t *character = characters; convertUtf8ToWchars(&byte, &character, count); length = character - characters; character = characters; while (1) { const wchar_t *end = wmemchr(character, FF, length); if (!end) break; count = end - character; if (!processCharacters(character, count, *end, data)) return 0; count += 1; character += count; length -= count; } if (!processCharacters(character, length, '\n', data)) return 0; if (opt_forceOutput) if (!flushOutputStream(data)) return 0; return 1; }
static int putUtf8String (ListGenerationData *lgd, const char *string) { size_t size = strlen(string) + 1; wchar_t characters[size]; wchar_t *character = characters; convertUtf8ToWchars(&string, &character, size); return putCharacters(lgd, characters, character-characters); }
int addMorseString (MorseObject *morse, const char *string) { size_t size = strlen(string) + 1; wchar_t characters[size]; const char *byte = string; wchar_t *end = characters; convertUtf8ToWchars(&byte, &end, size); return addMorseCharacters(morse, characters, (end - characters)); }