diff options
Diffstat (limited to 'src/backend/tsearch/ts_locale.c')
| -rw-r--r-- | src/backend/tsearch/ts_locale.c | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/src/backend/tsearch/ts_locale.c b/src/backend/tsearch/ts_locale.c index a61fd36022e..b2aefa31c26 100644 --- a/src/backend/tsearch/ts_locale.c +++ b/src/backend/tsearch/ts_locale.c @@ -197,92 +197,3 @@ tsearch_readline_callback(void *arg) stp->lineno, stp->filename); } - - -/* - * lowerstr --- fold null-terminated string to lower case - * - * Returned string is palloc'd - */ -char * -lowerstr(const char *str) -{ - return lowerstr_with_len(str, strlen(str)); -} - -/* - * lowerstr_with_len --- fold string to lower case - * - * Input string need not be null-terminated. - * - * Returned string is palloc'd - */ -char * -lowerstr_with_len(const char *str, int len) -{ - char *out; - pg_locale_t mylocale = 0; /* TODO */ - - if (len == 0) - return pstrdup(""); - - /* - * Use wide char code only when max encoding length > 1 and ctype != C. - * Some operating systems fail with multi-byte encodings and a C locale. - * Also, for a C locale there is no need to process as multibyte. From - * backend/utils/adt/oracle_compat.c Teodor - */ - if (pg_database_encoding_max_length() > 1 && !database_ctype_is_c) - { - wchar_t *wstr, - *wptr; - int wlen; - - /* - * alloc number of wchar_t for worst case, len contains number of - * bytes >= number of characters and alloc 1 wchar_t for 0, because - * wchar2char wants zero-terminated string - */ - wptr = wstr = (wchar_t *) palloc(sizeof(wchar_t) * (len + 1)); - - wlen = char2wchar(wstr, len + 1, str, len, mylocale); - Assert(wlen <= len); - - while (*wptr) - { - *wptr = towlower((wint_t) *wptr); - wptr++; - } - - /* - * Alloc result string for worst case + '\0' - */ - len = pg_database_encoding_max_length() * wlen + 1; - out = (char *) palloc(len); - - wlen = wchar2char(out, wstr, len, mylocale); - - pfree(wstr); - - if (wlen < 0) - ereport(ERROR, - (errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE), - errmsg("conversion from wchar_t to server encoding failed: %m"))); - Assert(wlen < len); - } - else - { - const char *ptr = str; - char *outptr; - - outptr = out = (char *) palloc(sizeof(char) * (len + 1)); - while ((ptr - str) < len && *ptr) - { - *outptr++ = tolower(TOUCHAR(ptr)); - ptr++; - } - *outptr = '\0'; - } - - return out; -} |
