Rationalize code placement between wchar.c, encnames.c, and mbutils.c.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 16 Jan 2020 23:08:21 +0000 (18:08 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 16 Jan 2020 23:08:21 +0000 (18:08 -0500)
commit5afaa2e42655811461044c4216e2f821cadc766d
tree7d1dbcc69d29a163117d4c953395708da53069c4
parent3d4cb5d6c180e38ebf84f6403cfa18c09d0b738e
Rationalize code placement between wchar.c, encnames.c, and mbutils.c.

Move all the backend-only code that'd crept into wchar.c and encnames.c
into mbutils.c.

To remove the last few #ifdef dependencies from wchar.c and encnames.c,
also make the following changes:

* Adjust get_encoding_name_for_icu to return NULL, not throw an error,
for unsupported encodings.  Its sole caller can perfectly well throw an
error instead.  (While at it, I also made this function and its sibling
is_encoding_supported_by_icu proof against out-of-range encoding IDs.)

* Remove the overlength-name error condition from pg_char_to_encoding.
It's completely silly not to treat that just like any other
the-name-is-not-in-the-table case.

Also, get rid of pg_mic_mblen --- there's no obvious reason why
conv.c shouldn't call pg_mule_mblen instead.

Other than that, this is just code movement and comment-polishing with
no functional changes.  Notably, I reordered declarations in pg_wchar.h
to show which functions are frontend-accessible and which are not.

Discussion: https://postgr.es/m/CA+TgmoYO8oq-iy8E02rD8eX25T-9SmyxKWqqks5OMHxKvGXpXQ@mail.gmail.com
src/backend/utils/adt/pg_locale.c
src/backend/utils/mb/conv.c
src/backend/utils/mb/mbutils.c
src/common/encnames.c
src/common/wchar.c
src/include/mb/pg_wchar.h