21 lines
418 B
C
21 lines
418 B
C
|
void
|
||
|
iso14755(const Arg *arg)
|
||
|
{
|
||
|
FILE *p;
|
||
|
char *us, *e, codepoint[9], uc[UTF_SIZ];
|
||
|
unsigned long utf32;
|
||
|
|
||
|
if (!(p = popen(ISO14755CMD, "r")))
|
||
|
return;
|
||
|
|
||
|
us = fgets(codepoint, sizeof(codepoint), p);
|
||
|
pclose(p);
|
||
|
|
||
|
if (!us || *us == '\0' || *us == '-' || strlen(us) > 7)
|
||
|
return;
|
||
|
if ((utf32 = strtoul(us, &e, 16)) == ULONG_MAX ||
|
||
|
(*e != '\n' && *e != '\0'))
|
||
|
return;
|
||
|
|
||
|
ttywrite(uc, utf8encode(utf32, uc), 1);
|
||
|
}
|