X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbasic%2Fextract-word.c;h=de56168909c9405d4e66c14965527ffad91befd3;hb=076d998b73bf53e6652ea3ae4bed169e57423741;hp=a03bb92861231dba9c6a16935827f4e51ccff89c;hpb=b96ed50e3493103d075ff2ce4c3fbad8f26b2e22;p=elogind.git diff --git a/src/basic/extract-word.c b/src/basic/extract-word.c index a03bb9286..de5616890 100644 --- a/src/basic/extract-word.c +++ b/src/basic/extract-word.c @@ -98,8 +98,9 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra if (flags & EXTRACT_CUNESCAPE) { uint32_t u; + bool eight_bit = false; - r = cunescape_one(*p, (size_t) -1, &c, &u); + r = cunescape_one(*p, (size_t) -1, &u, &eight_bit); if (r < 0) { if (flags & EXTRACT_CUNESCAPE_RELAX) { s[sz++] = '\\'; @@ -109,10 +110,10 @@ int extract_first_word(const char **p, char **ret, const char *separators, Extra } else { (*p) += r - 1; - if (c != 0) - s[sz++] = c; /* normal explicit char */ + if (eight_bit) + s[sz++] = u; else - sz += utf8_encode_unichar(s + sz, u); /* unicode chars we'll encode as utf8 */ + sz += utf8_encode_unichar(s + sz, u); } } else s[sz++] = c; @@ -190,8 +191,7 @@ finish_force_next: return 1; } -/// UNNEEDED by elogind -#if 0 +#if 0 /// UNNEEDED by elogind int extract_first_word_and_warn( const char **p, char **ret,