Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit655dc31

Browse files
committed
Simplify pg_enc2gettext_tbl[] with C99-designated initializer syntax
This commit switches pg_enc2gettext_tbl[] in encnames.c to use aC99-designated initializer syntax.pg_bind_textdomain_codeset() is simplified so as it is possible to doa direct lookup at the gettext() array with a value of the enum pg_encrather than doing a loop through all its elements, as long as theencoding value provided by GetDatabaseEncoding() is in the correct rangeof supported encoding values. Note that PG_MULE_INTERNAL gains a valuein the array, pointing to NULL.Author: Jelte Fennema-NioDiscussion:https://postgr.es/m/CAGECzQT3caUbcCcszNewCCmMbCuyP7XNAm60J3ybd6PN5kH2Dw@mail.gmail.com
1 parentdef0ce3 commit655dc31

File tree

4 files changed

+55
-67
lines changed

4 files changed

+55
-67
lines changed

‎src/backend/utils/mb/mbutils.c

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,24 +1188,18 @@ static bool
11881188
raw_pg_bind_textdomain_codeset(constchar*domainname,intencoding)
11891189
{
11901190
boolelog_ok= (CurrentMemoryContext!=NULL);
1191-
inti;
11921191

1193-
for (i=0;pg_enc2gettext_tbl[i].name!=NULL;i++)
1194-
{
1195-
if (pg_enc2gettext_tbl[i].encoding==encoding)
1196-
{
1197-
if (bind_textdomain_codeset(domainname,
1198-
pg_enc2gettext_tbl[i].name)!=NULL)
1199-
return true;
1192+
if (!PG_VALID_ENCODING(encoding)||pg_enc2gettext_tbl[encoding]==NULL)
1193+
return false;
12001194

1201-
if (elog_ok)
1202-
elog(LOG,"bind_textdomain_codeset failed");
1203-
else
1204-
write_stderr("bind_textdomain_codeset failed");
1195+
if (bind_textdomain_codeset(domainname,
1196+
pg_enc2gettext_tbl[encoding])!=NULL)
1197+
return true;
12051198

1206-
break;
1207-
}
1208-
}
1199+
if (elog_ok)
1200+
elog(LOG,"bind_textdomain_codeset failed");
1201+
else
1202+
write_stderr("bind_textdomain_codeset failed");
12091203

12101204
return false;
12111205
}

‎src/common/encnames.c

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -357,50 +357,50 @@ const pg_enc2name pg_enc2name_tbl[] =
357357
* This covers all encodings except MULE_INTERNAL, which is alien to gettext.
358358
* ----------
359359
*/
360-
constpg_enc2gettextpg_enc2gettext_tbl[]=
360+
constchar*pg_enc2gettext_tbl[]=
361361
{
362-
{PG_SQL_ASCII,"US-ASCII"},
363-
{PG_UTF8,"UTF-8"},
364-
{PG_LATIN1,"LATIN1"},
365-
{PG_LATIN2,"LATIN2"},
366-
{PG_LATIN3,"LATIN3"},
367-
{PG_LATIN4,"LATIN4"},
368-
{PG_ISO_8859_5,"ISO-8859-5"},
369-
{PG_ISO_8859_6,"ISO_8859-6"},
370-
{PG_ISO_8859_7,"ISO-8859-7"},
371-
{PG_ISO_8859_8,"ISO-8859-8"},
372-
{PG_LATIN5,"LATIN5"},
373-
{PG_LATIN6,"LATIN6"},
374-
{PG_LATIN7,"LATIN7"},
375-
{PG_LATIN8,"LATIN8"},
376-
{PG_LATIN9,"LATIN-9"},
377-
{PG_LATIN10,"LATIN10"},
378-
{PG_KOI8R,"KOI8-R"},
379-
{PG_KOI8U,"KOI8-U"},
380-
{PG_WIN1250,"CP1250"},
381-
{PG_WIN1251,"CP1251"},
382-
{PG_WIN1252,"CP1252"},
383-
{PG_WIN1253,"CP1253"},
384-
{PG_WIN1254,"CP1254"},
385-
{PG_WIN1255,"CP1255"},
386-
{PG_WIN1256,"CP1256"},
387-
{PG_WIN1257,"CP1257"},
388-
{PG_WIN1258,"CP1258"},
389-
{PG_WIN866,"CP866"},
390-
{PG_WIN874,"CP874"},
391-
{PG_EUC_CN,"EUC-CN"},
392-
{PG_EUC_JP,"EUC-JP"},
393-
{PG_EUC_KR,"EUC-KR"},
394-
{PG_EUC_TW,"EUC-TW"},
395-
{PG_EUC_JIS_2004,"EUC-JP"},
396-
{PG_SJIS,"SHIFT-JIS"},
397-
{PG_BIG5,"BIG5"},
398-
{PG_GBK,"GBK"},
399-
{PG_UHC,"UHC"},
400-
{PG_GB18030,"GB18030"},
401-
{PG_JOHAB,"JOHAB"},
402-
{PG_SHIFT_JIS_2004,"SHIFT_JISX0213"},
403-
{0,NULL}
362+
[PG_SQL_ASCII]="US-ASCII",
363+
[PG_UTF8]="UTF-8",
364+
[PG_MULE_INTERNAL]=NULL,
365+
[PG_LATIN1]="LATIN1",
366+
[PG_LATIN2]="LATIN2",
367+
[PG_LATIN3]="LATIN3",
368+
[PG_LATIN4]="LATIN4",
369+
[PG_ISO_8859_5]="ISO-8859-5",
370+
[PG_ISO_8859_6]="ISO_8859-6",
371+
[PG_ISO_8859_7]="ISO-8859-7",
372+
[PG_ISO_8859_8]="ISO-8859-8",
373+
[PG_LATIN5]="LATIN5",
374+
[PG_LATIN6]="LATIN6",
375+
[PG_LATIN7]="LATIN7",
376+
[PG_LATIN8]="LATIN8",
377+
[PG_LATIN9]="LATIN-9",
378+
[PG_LATIN10]="LATIN10",
379+
[PG_KOI8R]="KOI8-R",
380+
[PG_KOI8U]="KOI8-U",
381+
[PG_WIN1250]="CP1250",
382+
[PG_WIN1251]="CP1251",
383+
[PG_WIN1252]="CP1252",
384+
[PG_WIN1253]="CP1253",
385+
[PG_WIN1254]="CP1254",
386+
[PG_WIN1255]="CP1255",
387+
[PG_WIN1256]="CP1256",
388+
[PG_WIN1257]="CP1257",
389+
[PG_WIN1258]="CP1258",
390+
[PG_WIN866]="CP866",
391+
[PG_WIN874]="CP874",
392+
[PG_EUC_CN]="EUC-CN",
393+
[PG_EUC_JP]="EUC-JP",
394+
[PG_EUC_KR]="EUC-KR",
395+
[PG_EUC_TW]="EUC-TW",
396+
[PG_EUC_JIS_2004]="EUC-JP",
397+
[PG_SJIS]="SHIFT-JIS",
398+
[PG_BIG5]="BIG5",
399+
[PG_GBK]="GBK",
400+
[PG_UHC]="UHC",
401+
[PG_GB18030]="GB18030",
402+
[PG_JOHAB]="JOHAB",
403+
[PG_SHIFT_JIS_2004]="SHIFT_JISX0213",
404404
};
405405

406406

‎src/include/mb/pg_wchar.h

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,8 @@ typedef unsigned int pg_wchar;
225225
* PostgreSQL encoding identifiers
226226
*
227227
* WARNING: If you add some encoding don't forget to update
228-
*the pg_enc2name_tbl[] array (in src/common/encnames.c) and
228+
*the pg_enc2name_tbl[] array (in src/common/encnames.c),
229+
*the pg_enc2gettext_tbl[] array (in src/common/encnames.c) and
229230
*the pg_wchar_table[] array (in src/common/wchar.c) and to check
230231
*PG_ENCODING_BE_LAST macro.
231232
*
@@ -365,13 +366,7 @@ extern PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[];
365366
/*
366367
* Encoding names for gettext
367368
*/
368-
typedefstructpg_enc2gettext
369-
{
370-
pg_encencoding;
371-
constchar*name;
372-
}pg_enc2gettext;
373-
374-
externPGDLLIMPORTconstpg_enc2gettextpg_enc2gettext_tbl[];
369+
externPGDLLIMPORTconstchar*pg_enc2gettext_tbl[];
375370

376371
/*
377372
* pg_wchar stuff

‎src/tools/pgindent/typedefs.list

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3574,7 +3574,6 @@ pg_cryptohash_errno
35743574
pg_cryptohash_type
35753575
pg_ctype_cache
35763576
pg_enc
3577-
pg_enc2gettext
35783577
pg_enc2name
35793578
pg_encname
35803579
pg_fe_sasl_mech

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp