summaryrefslogtreecommitdiffstats
path: root/src/interfaces/libpq
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/libpq')
-rw-r--r--src/interfaces/libpq/fe-connect.c16
-rw-r--r--src/interfaces/libpq/fe-misc.c39
-rw-r--r--src/interfaces/libpq/fe-secure-openssl.c45
-rw-r--r--src/interfaces/libpq/po/ru.po84
-rw-r--r--src/interfaces/libpq/po/uk.po1652
-rw-r--r--src/interfaces/libpq/pthread-win32.c26
6 files changed, 1066 insertions, 796 deletions
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index a8584d2..6bce6f6 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -7785,24 +7785,8 @@ static void
default_threadlock(int acquire)
{
#ifdef ENABLE_THREAD_SAFETY
-#ifndef WIN32
static pthread_mutex_t singlethread_lock = PTHREAD_MUTEX_INITIALIZER;
-#else
- static pthread_mutex_t singlethread_lock = NULL;
- static long mutex_initlock = 0;
- if (singlethread_lock == NULL)
- {
- while (InterlockedExchange(&mutex_initlock, 1) == 1)
- /* loop, another thread own the lock */ ;
- if (singlethread_lock == NULL)
- {
- if (pthread_mutex_init(&singlethread_lock, NULL))
- Assert(false);
- }
- InterlockedExchange(&mutex_initlock, 0);
- }
-#endif
if (acquire)
{
if (pthread_mutex_lock(&singlethread_lock))
diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c
index 660cdec..488f7d6 100644
--- a/src/interfaces/libpq/fe-misc.c
+++ b/src/interfaces/libpq/fe-misc.c
@@ -1225,13 +1225,14 @@ static void
libpq_binddomain(void)
{
/*
- * If multiple threads come through here at about the same time, it's okay
- * for more than one of them to call bindtextdomain(). But it's not okay
- * for any of them to return to caller before bindtextdomain() is
- * complete, so don't set the flag till that's done. Use "volatile" just
- * to be sure the compiler doesn't try to get cute.
+ * At least on Windows, there are gettext implementations that fail if
+ * multiple threads call bindtextdomain() concurrently. Use a mutex and
+ * flag variable to ensure that we call it just once per process. It is
+ * not known that similar bugs exist on non-Windows platforms, but we
+ * might as well do it the same way everywhere.
*/
static volatile bool already_bound = false;
+ static pthread_mutex_t binddomain_mutex = PTHREAD_MUTEX_INITIALIZER;
if (!already_bound)
{
@@ -1241,14 +1242,26 @@ libpq_binddomain(void)
#else
int save_errno = errno;
#endif
- const char *ldir;
-
- /* No relocatable lookup here because the binary could be anywhere */
- ldir = getenv("PGLOCALEDIR");
- if (!ldir)
- ldir = LOCALEDIR;
- bindtextdomain(PG_TEXTDOMAIN("libpq"), ldir);
- already_bound = true;
+
+ (void) pthread_mutex_lock(&binddomain_mutex);
+
+ if (!already_bound)
+ {
+ const char *ldir;
+
+ /*
+ * No relocatable lookup here because the calling executable could
+ * be anywhere
+ */
+ ldir = getenv("PGLOCALEDIR");
+ if (!ldir)
+ ldir = LOCALEDIR;
+ bindtextdomain(PG_TEXTDOMAIN("libpq"), ldir);
+ already_bound = true;
+ }
+
+ (void) pthread_mutex_unlock(&binddomain_mutex);
+
#ifdef WIN32
SetLastError(save_errno);
#else
diff --git a/src/interfaces/libpq/fe-secure-openssl.c b/src/interfaces/libpq/fe-secure-openssl.c
index 25569e6..a44d7d3 100644
--- a/src/interfaces/libpq/fe-secure-openssl.c
+++ b/src/interfaces/libpq/fe-secure-openssl.c
@@ -94,12 +94,7 @@ static bool ssl_lib_initialized = false;
#ifdef ENABLE_THREAD_SAFETY
static long crypto_open_connections = 0;
-#ifndef WIN32
static pthread_mutex_t ssl_config_mutex = PTHREAD_MUTEX_INITIALIZER;
-#else
-static pthread_mutex_t ssl_config_mutex = NULL;
-static long win32_ssl_create_mutex = 0;
-#endif
#endif /* ENABLE_THREAD_SAFETY */
static PQsslKeyPassHook_OpenSSL_type PQsslKeyPassHook = NULL;
@@ -783,20 +778,6 @@ int
pgtls_init(PGconn *conn, bool do_ssl, bool do_crypto)
{
#ifdef ENABLE_THREAD_SAFETY
-#ifdef WIN32
- /* Also see similar code in fe-connect.c, default_threadlock() */
- if (ssl_config_mutex == NULL)
- {
- while (InterlockedExchange(&win32_ssl_create_mutex, 1) == 1)
- /* loop, another thread own the lock */ ;
- if (ssl_config_mutex == NULL)
- {
- if (pthread_mutex_init(&ssl_config_mutex, NULL))
- return -1;
- }
- InterlockedExchange(&win32_ssl_create_mutex, 0);
- }
-#endif
if (pthread_mutex_lock(&ssl_config_mutex))
return -1;
@@ -887,7 +868,6 @@ static void
destroy_ssl_system(void)
{
#if defined(ENABLE_THREAD_SAFETY) && defined(HAVE_CRYPTO_LOCK)
- /* Mutex is created in pgtls_init() */
if (pthread_mutex_lock(&ssl_config_mutex))
return;
@@ -935,7 +915,6 @@ initialize_SSL(PGconn *conn)
bool have_homedir;
bool have_cert;
bool have_rootcert;
- EVP_PKEY *pkey = NULL;
/*
* We'll need the home directory if any of the relevant parameters are
@@ -1285,6 +1264,7 @@ initialize_SSL(PGconn *conn)
/* Colon, but not in second character, treat as engine:key */
char *engine_str = strdup(conn->sslkey);
char *engine_colon;
+ EVP_PKEY *pkey;
if (engine_str == NULL)
{
@@ -1695,10 +1675,11 @@ pgtls_close(PGconn *conn)
* Obtain reason string for passed SSL errcode
*
* ERR_get_error() is used by caller to get errcode to pass here.
+ * The result must be freed after use, using SSLerrfree.
*
- * Some caution is needed here since ERR_reason_error_string will
- * return NULL if it doesn't recognize the error code. We don't
- * want to return NULL ever.
+ * Some caution is needed here since ERR_reason_error_string will return NULL
+ * if it doesn't recognize the error code, or (in OpenSSL >= 3) if the code
+ * represents a system errno value. We don't want to return NULL ever.
*/
static char ssl_nomem[] = "out of memory allocating error description";
@@ -1724,6 +1705,22 @@ SSLerrmessage(unsigned long ecode)
strlcpy(errbuf, errreason, SSL_ERR_LEN);
return errbuf;
}
+
+ /*
+ * In OpenSSL 3.0.0 and later, ERR_reason_error_string randomly refuses to
+ * map system errno values. We can cover that shortcoming with this bit
+ * of code. Older OpenSSL versions don't have the ERR_SYSTEM_ERROR macro,
+ * but that's okay because they don't have the shortcoming either.
+ */
+#ifdef ERR_SYSTEM_ERROR
+ if (ERR_SYSTEM_ERROR(ecode))
+ {
+ strlcpy(errbuf, strerror(ERR_GET_REASON(ecode)), SSL_ERR_LEN);
+ return errbuf;
+ }
+#endif
+
+ /* No choice but to report the numeric ecode */
snprintf(errbuf, SSL_ERR_LEN, libpq_gettext("SSL error code %lu"), ecode);
return errbuf;
}
diff --git a/src/interfaces/libpq/po/ru.po b/src/interfaces/libpq/po/ru.po
index 1cf3b28..5fa1387 100644
--- a/src/interfaces/libpq/po/ru.po
+++ b/src/interfaces/libpq/po/ru.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libpq (PostgreSQL current)\n"
"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2024-02-02 18:10+0300\n"
+"POT-Creation-Date: 2024-05-04 16:29+0300\n"
"PO-Revision-Date: 2023-08-30 15:09+0300\n"
"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
"Language-Team: Russian <pgsql-ru-general@postgresql.org>\n"
@@ -86,7 +86,7 @@ msgstr "не удалось сгенерировать разовый код"
#: fe-lobj.c:870 fe-protocol3.c:204 fe-protocol3.c:228 fe-protocol3.c:251
#: fe-protocol3.c:268 fe-protocol3.c:348 fe-protocol3.c:715 fe-protocol3.c:954
#: fe-protocol3.c:1765 fe-protocol3.c:2165 fe-secure-common.c:110
-#: fe-secure-gssapi.c:496 fe-secure-openssl.c:440 fe-secure-openssl.c:1291
+#: fe-secure-gssapi.c:496 fe-secure-openssl.c:435 fe-secure-openssl.c:1271
#, c-format
msgid "out of memory"
msgstr "нехватка памяти"
@@ -1054,7 +1054,7 @@ msgstr "функция pqPutInt не поддерживает integer разме
msgid "connection not open"
msgstr "соединение не открыто"
-#: fe-misc.c:751 fe-secure-openssl.c:215 fe-secure-openssl.c:321
+#: fe-misc.c:751 fe-secure-openssl.c:210 fe-secure-openssl.c:316
#: fe-secure.c:259 fe-secure.c:426
#, c-format
msgid ""
@@ -1334,92 +1334,92 @@ msgstr "ошибка проверки размера в GSSAPI"
msgid "GSSAPI context establishment error"
msgstr "ошибка установления контекста в GSSAPI"
-#: fe-secure-openssl.c:219 fe-secure-openssl.c:325 fe-secure-openssl.c:1538
+#: fe-secure-openssl.c:214 fe-secure-openssl.c:320 fe-secure-openssl.c:1518
#, c-format
msgid "SSL SYSCALL error: %s"
msgstr "ошибка SSL SYSCALL: %s"
-#: fe-secure-openssl.c:225 fe-secure-openssl.c:331 fe-secure-openssl.c:1541
+#: fe-secure-openssl.c:220 fe-secure-openssl.c:326 fe-secure-openssl.c:1521
#, c-format
msgid "SSL SYSCALL error: EOF detected"
msgstr "ошибка SSL SYSCALL: конец файла (EOF)"
-#: fe-secure-openssl.c:235 fe-secure-openssl.c:341 fe-secure-openssl.c:1549
+#: fe-secure-openssl.c:230 fe-secure-openssl.c:336 fe-secure-openssl.c:1529
#, c-format
msgid "SSL error: %s"
msgstr "ошибка SSL: %s"
-#: fe-secure-openssl.c:249 fe-secure-openssl.c:355
+#: fe-secure-openssl.c:244 fe-secure-openssl.c:350
#, c-format
msgid "SSL connection has been closed unexpectedly"
msgstr "SSL-соединение было неожиданно закрыто"
-#: fe-secure-openssl.c:254 fe-secure-openssl.c:360 fe-secure-openssl.c:1596
+#: fe-secure-openssl.c:249 fe-secure-openssl.c:355 fe-secure-openssl.c:1576
#, c-format
msgid "unrecognized SSL error code: %d"
msgstr "нераспознанный код ошибки SSL: %d"
-#: fe-secure-openssl.c:403
+#: fe-secure-openssl.c:398
#, c-format
msgid "could not determine server certificate signature algorithm"
msgstr "не удалось определить алгоритм подписи сертификата сервера"
-#: fe-secure-openssl.c:423
+#: fe-secure-openssl.c:418
#, c-format
msgid "could not find digest for NID %s"
msgstr "не удалось найти алгоритм хеширования по NID %s"
-#: fe-secure-openssl.c:432
+#: fe-secure-openssl.c:427
#, c-format
msgid "could not generate peer certificate hash"
msgstr "не удалось сгенерировать хеш сертификата сервера"
-#: fe-secure-openssl.c:515
+#: fe-secure-openssl.c:510
#, c-format
msgid "SSL certificate's name entry is missing"
msgstr "в SSL-сертификате отсутствует запись имени"
-#: fe-secure-openssl.c:549
+#: fe-secure-openssl.c:544
#, c-format
msgid "SSL certificate's address entry is missing"
msgstr "в SSL-сертификате отсутствует запись адреса"
-#: fe-secure-openssl.c:966
+#: fe-secure-openssl.c:945
#, c-format
msgid "could not create SSL context: %s"
msgstr "не удалось создать контекст SSL: %s"
-#: fe-secure-openssl.c:1008
+#: fe-secure-openssl.c:987
#, c-format
msgid "invalid value \"%s\" for minimum SSL protocol version"
msgstr "неверное значение \"%s\" для минимальной версии протокола SSL"
-#: fe-secure-openssl.c:1018
+#: fe-secure-openssl.c:997
#, c-format
msgid "could not set minimum SSL protocol version: %s"
msgstr "не удалось задать минимальную версию протокола SSL: %s"
-#: fe-secure-openssl.c:1034
+#: fe-secure-openssl.c:1013
#, c-format
msgid "invalid value \"%s\" for maximum SSL protocol version"
msgstr "неверное значение \"%s\" для максимальной версии протокола SSL"
-#: fe-secure-openssl.c:1044
+#: fe-secure-openssl.c:1023
#, c-format
msgid "could not set maximum SSL protocol version: %s"
msgstr "не удалось задать максимальную версию протокола SSL: %s"
-#: fe-secure-openssl.c:1082
+#: fe-secure-openssl.c:1061
#, c-format
msgid "could not load system root certificate paths: %s"
msgstr "не удалось выбрать системные пути для корневых сертификатов: %s"
-#: fe-secure-openssl.c:1099
+#: fe-secure-openssl.c:1078
#, c-format
msgid "could not read root certificate file \"%s\": %s"
msgstr "не удалось прочитать файл корневых сертификатов \"%s\": %s"
-#: fe-secure-openssl.c:1151
+#: fe-secure-openssl.c:1130
#, c-format
msgid ""
"could not get home directory to locate root certificate file\n"
@@ -1432,7 +1432,7 @@ msgstr ""
"(sslrootcert=system) или отключите проверку сертификата сервера, изменив "
"sslmode."
-#: fe-secure-openssl.c:1154
+#: fe-secure-openssl.c:1133
#, c-format
msgid ""
"root certificate file \"%s\" does not exist\n"
@@ -1445,62 +1445,62 @@ msgstr ""
"(sslrootcert=system) или отключите проверку сертификата сервера, изменив "
"sslmode."
-#: fe-secure-openssl.c:1189
+#: fe-secure-openssl.c:1168
#, c-format
msgid "could not open certificate file \"%s\": %s"
msgstr "не удалось открыть файл сертификата \"%s\": %s"
-#: fe-secure-openssl.c:1207
+#: fe-secure-openssl.c:1186
#, c-format
msgid "could not read certificate file \"%s\": %s"
msgstr "не удалось прочитать файл сертификата \"%s\": %s"
-#: fe-secure-openssl.c:1231
+#: fe-secure-openssl.c:1210
#, c-format
msgid "could not establish SSL connection: %s"
msgstr "не удалось установить SSL-соединение: %s"
-#: fe-secure-openssl.c:1263
+#: fe-secure-openssl.c:1242
#, c-format
msgid "could not set SSL Server Name Indication (SNI): %s"
msgstr "не удалось задать SNI (Server Name Indication) для SSL-подключения: %s"
-#: fe-secure-openssl.c:1306
+#: fe-secure-openssl.c:1286
#, c-format
msgid "could not load SSL engine \"%s\": %s"
msgstr "не удалось загрузить модуль SSL ENGINE \"%s\": %s"
-#: fe-secure-openssl.c:1317
+#: fe-secure-openssl.c:1297
#, c-format
msgid "could not initialize SSL engine \"%s\": %s"
msgstr "не удалось инициализировать модуль SSL ENGINE \"%s\": %s"
-#: fe-secure-openssl.c:1332
+#: fe-secure-openssl.c:1312
#, c-format
msgid "could not read private SSL key \"%s\" from engine \"%s\": %s"
msgstr "не удалось прочитать закрытый ключ SSL \"%s\" из модуля \"%s\": %s"
-#: fe-secure-openssl.c:1345
+#: fe-secure-openssl.c:1325
#, c-format
msgid "could not load private SSL key \"%s\" from engine \"%s\": %s"
msgstr "не удалось загрузить закрытый ключ SSL \"%s\" из модуля \"%s\": %s"
-#: fe-secure-openssl.c:1382
+#: fe-secure-openssl.c:1362
#, c-format
msgid "certificate present, but not private key file \"%s\""
msgstr "при наличии сертификата отсутствует файл закрытого ключа \"%s\""
-#: fe-secure-openssl.c:1385
+#: fe-secure-openssl.c:1365
#, c-format
msgid "could not stat private key file \"%s\": %m"
msgstr "не удалось получить информацию о файле закрытого ключа \"%s\": %m"
-#: fe-secure-openssl.c:1393
+#: fe-secure-openssl.c:1373
#, c-format
msgid "private key file \"%s\" is not a regular file"
msgstr "файл закрытого ключа \"%s\" - не обычный файл"
-#: fe-secure-openssl.c:1426
+#: fe-secure-openssl.c:1406
#, c-format
msgid ""
"private key file \"%s\" has group or world access; file must have "
@@ -1512,22 +1512,22 @@ msgstr ""
"текущему пользователю, либо u=rw,g=r (0640) или более строгие, если он "
"принадлежит root"
-#: fe-secure-openssl.c:1450
+#: fe-secure-openssl.c:1430
#, c-format
msgid "could not load private key file \"%s\": %s"
msgstr "не удалось загрузить файл закрытого ключа \"%s\": %s"
-#: fe-secure-openssl.c:1466
+#: fe-secure-openssl.c:1446
#, c-format
msgid "certificate does not match private key file \"%s\": %s"
msgstr "сертификат не соответствует файлу закрытого ключа \"%s\": %s"
-#: fe-secure-openssl.c:1535
+#: fe-secure-openssl.c:1515
#, c-format
msgid "SSL error: certificate verify failed: %s"
msgstr "ошибка SSL: не удалось проверить сертификат: %s"
-#: fe-secure-openssl.c:1580
+#: fe-secure-openssl.c:1560
#, c-format
msgid ""
"This may indicate that the server does not support any SSL protocol version "
@@ -1536,22 +1536,22 @@ msgstr ""
"Это может указывать на то, что сервер не поддерживает ни одну версию "
"протокола SSL между %s и %s."
-#: fe-secure-openssl.c:1613
+#: fe-secure-openssl.c:1593
#, c-format
msgid "certificate could not be obtained: %s"
msgstr "не удалось получить сертификат: %s"
-#: fe-secure-openssl.c:1718
+#: fe-secure-openssl.c:1699
#, c-format
msgid "no SSL error reported"
msgstr "нет сообщения об ошибке SSL"
-#: fe-secure-openssl.c:1727
+#: fe-secure-openssl.c:1724
#, c-format
msgid "SSL error code %lu"
msgstr "код ошибки SSL: %lu"
-#: fe-secure-openssl.c:2017
+#: fe-secure-openssl.c:2014
#, c-format
msgid "WARNING: sslpassword truncated\n"
msgstr "ПРЕДУПРЕЖДЕНИЕ: значение sslpassword усечено\n"
diff --git a/src/interfaces/libpq/po/uk.po b/src/interfaces/libpq/po/uk.po
index de5d8f2..4d5cdf1 100644
--- a/src/interfaces/libpq/po/uk.po
+++ b/src/interfaces/libpq/po/uk.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: postgresql\n"
"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
-"POT-Creation-Date: 2021-08-17 08:39+0000\n"
-"PO-Revision-Date: 2021-08-17 11:25\n"
+"POT-Creation-Date: 2024-02-09 18:10+0000\n"
+"PO-Revision-Date: 2024-02-11 16:35\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"Language: uk_UA\n"
@@ -14,1185 +14,1455 @@ msgstr ""
"X-Crowdin-Project: postgresql\n"
"X-Crowdin-Project-ID: 324573\n"
"X-Crowdin-Language: uk\n"
-"X-Crowdin-File: /REL_14_DEV/libpq.pot\n"
-"X-Crowdin-File-ID: 774\n"
-
-#: fe-auth-scram.c:213
-msgid "malformed SCRAM message (empty message)\n"
-msgstr "неправильне повідомлення SCRAM (пусте повідомлення)\n"
-
-#: fe-auth-scram.c:219
-msgid "malformed SCRAM message (length mismatch)\n"
-msgstr "неправильне повідомлення SCRAM (невідповідність довжини)\n"
-
-#: fe-auth-scram.c:263
-msgid "could not verify server signature\n"
-msgstr "не вдалося перевірити підпис сервера\n"
-
-#: fe-auth-scram.c:270
-msgid "incorrect server signature\n"
-msgstr "невірний підпис сервера\n"
-
-#: fe-auth-scram.c:279
-msgid "invalid SCRAM exchange state\n"
-msgstr "неприпустимий стан обміну SCRAM\n"
-
-#: fe-auth-scram.c:306
-#, c-format
-msgid "malformed SCRAM message (attribute \"%c\" expected)\n"
-msgstr "неправильне повідомлення SCRAM (очікувався атрибут \"%c\")\n"
-
-#: fe-auth-scram.c:315
-#, c-format
-msgid "malformed SCRAM message (expected character \"=\" for attribute \"%c\")\n"
-msgstr "неправильне повідомлення SCRAM (очікувався символ \"=\" для атрибута \"%c\")\n"
-
-#: fe-auth-scram.c:356
-msgid "could not generate nonce\n"
-msgstr "не вдалося згенерувати одноразовий ідентифікатор\n"
-
-#: fe-auth-scram.c:366 fe-auth-scram.c:441 fe-auth-scram.c:595
-#: fe-auth-scram.c:616 fe-auth-scram.c:642 fe-auth-scram.c:657
-#: fe-auth-scram.c:707 fe-auth-scram.c:746 fe-auth.c:290 fe-auth.c:362
-#: fe-auth.c:398 fe-auth.c:615 fe-auth.c:774 fe-auth.c:1132 fe-auth.c:1282
-#: fe-connect.c:911 fe-connect.c:1455 fe-connect.c:1624 fe-connect.c:2976
-#: fe-connect.c:4657 fe-connect.c:4918 fe-connect.c:5037 fe-connect.c:5289
-#: fe-connect.c:5370 fe-connect.c:5469 fe-connect.c:5725 fe-connect.c:5754
-#: fe-connect.c:5826 fe-connect.c:5850 fe-connect.c:5868 fe-connect.c:5969
-#: fe-connect.c:5978 fe-connect.c:6336 fe-connect.c:6486 fe-connect.c:6752
-#: fe-exec.c:686 fe-exec.c:876 fe-exec.c:1223 fe-exec.c:3043 fe-exec.c:3226
-#: fe-exec.c:3999 fe-exec.c:4164 fe-gssapi-common.c:111 fe-lobj.c:881
-#: fe-protocol3.c:975 fe-protocol3.c:990 fe-protocol3.c:1023
-#: fe-protocol3.c:1731 fe-secure-common.c:110 fe-secure-gssapi.c:504
-#: fe-secure-openssl.c:440 fe-secure-openssl.c:1133
-msgid "out of memory\n"
-msgstr "недостатньо пам'яті\n"
+"X-Crowdin-File: /REL_16_STABLE/libpq.pot\n"
+"X-Crowdin-File-ID: 971\n"
+
+#: ../../port/thread.c:50 ../../port/thread.c:86
+#, c-format
+msgid "could not look up local user ID %d: %s"
+msgstr "не вдалося знайти локального користувача з ідентифікатором %d: %s"
+
+#: ../../port/thread.c:55 ../../port/thread.c:91
+#, c-format
+msgid "local user with ID %d does not exist"
+msgstr "локального користувача з ідентифікатором %d не існує"
+
+#: fe-auth-scram.c:227
+#, c-format
+msgid "malformed SCRAM message (empty message)"
+msgstr "неправильне повідомлення SCRAM (пусте повідомлення)"
+
+#: fe-auth-scram.c:232
+#, c-format
+msgid "malformed SCRAM message (length mismatch)"
+msgstr "неправильне повідомлення SCRAM (невідповідність довжини)"
+
+#: fe-auth-scram.c:275
+#, c-format
+msgid "could not verify server signature: %s"
+msgstr "не вдалося перевірити підпис сервера: %s"
-#: fe-auth-scram.c:374
-msgid "could not encode nonce\n"
-msgstr "не вдалося закодувати одноразовий ідентифікатор\n"
+#: fe-auth-scram.c:281
+#, c-format
+msgid "incorrect server signature"
+msgstr "невірний підпис сервера"
+
+#: fe-auth-scram.c:290
+#, c-format
+msgid "invalid SCRAM exchange state"
+msgstr "неприпустимий стан обміну SCRAM"
+
+#: fe-auth-scram.c:317
+#, c-format
+msgid "malformed SCRAM message (attribute \"%c\" expected)"
+msgstr "неправильне повідомлення SCRAM (очікувався атрибут \"%c\")"
+
+#: fe-auth-scram.c:326
+#, c-format
+msgid "malformed SCRAM message (expected character \"=\" for attribute \"%c\")"
+msgstr "неправильне повідомлення SCRAM (очікувався символ \"=\" для атрибута \"%c\")"
-#: fe-auth-scram.c:563
-msgid "could not calculate client proof\n"
-msgstr "не вдалося обчислити підтвердження клієнта\n"
+#: fe-auth-scram.c:366
+#, c-format
+msgid "could not generate nonce"
+msgstr "не вдалося згенерувати одноразовий ідентифікатор"
-#: fe-auth-scram.c:579
-msgid "could not encode client proof\n"
-msgstr "не вдалося закодувати підтвердження клієнта\n"
+#: fe-auth-scram.c:375 fe-auth-scram.c:448 fe-auth-scram.c:600
+#: fe-auth-scram.c:620 fe-auth-scram.c:644 fe-auth-scram.c:658
+#: fe-auth-scram.c:704 fe-auth-scram.c:740 fe-auth-scram.c:914 fe-auth.c:296
+#: fe-auth.c:369 fe-auth.c:403 fe-auth.c:618 fe-auth.c:729 fe-auth.c:1210
+#: fe-auth.c:1375 fe-connect.c:925 fe-connect.c:1759 fe-connect.c:1921
+#: fe-connect.c:3291 fe-connect.c:4496 fe-connect.c:5161 fe-connect.c:5416
+#: fe-connect.c:5534 fe-connect.c:5781 fe-connect.c:5861 fe-connect.c:5959
+#: fe-connect.c:6210 fe-connect.c:6237 fe-connect.c:6313 fe-connect.c:6336
+#: fe-connect.c:6360 fe-connect.c:6395 fe-connect.c:6481 fe-connect.c:6489
+#: fe-connect.c:6846 fe-connect.c:6996 fe-exec.c:527 fe-exec.c:1323
+#: fe-exec.c:3132 fe-exec.c:4100 fe-exec.c:4264 fe-gssapi-common.c:109
+#: fe-lobj.c:870 fe-protocol3.c:204 fe-protocol3.c:228 fe-protocol3.c:251
+#: fe-protocol3.c:268 fe-protocol3.c:348 fe-protocol3.c:715 fe-protocol3.c:954
+#: fe-protocol3.c:1765 fe-protocol3.c:2165 fe-secure-common.c:110
+#: fe-secure-gssapi.c:496 fe-secure-openssl.c:435 fe-secure-openssl.c:1271
+#, c-format
+msgid "out of memory"
+msgstr "недостатньо пам'яті"
-#: fe-auth-scram.c:634
-msgid "invalid SCRAM response (nonce mismatch)\n"
-msgstr "неприпустима відповідь SCRAM (невідповідність одноразового ідентифікатора)\n"
+#: fe-auth-scram.c:382
+#, c-format
+msgid "could not encode nonce"
+msgstr "не вдалося закодувати одноразовий ідентифікатор"
+
+#: fe-auth-scram.c:570
+#, c-format
+msgid "could not calculate client proof: %s"
+msgstr "не вдалося обчислити підтвердження клієнта: %s"
+
+#: fe-auth-scram.c:585
+#, c-format
+msgid "could not encode client proof"
+msgstr "не вдалося закодувати підтвердження клієнта"
+
+#: fe-auth-scram.c:637
+#, c-format
+msgid "invalid SCRAM response (nonce mismatch)"
+msgstr "неприпустима відповідь SCRAM (невідповідність одноразового ідентифікатора)"
#: fe-auth-scram.c:667
-msgid "malformed SCRAM message (invalid salt)\n"
-msgstr "неправильне повідомлення SCRAM (неприпустима сіль)\n"
+#, c-format
+msgid "malformed SCRAM message (invalid salt)"
+msgstr "неправильне повідомлення SCRAM (неприпустима сіль)"
+
+#: fe-auth-scram.c:680
+#, c-format
+msgid "malformed SCRAM message (invalid iteration count)"
+msgstr "неправильне повідомлення SCRAM (неприпустима кількість ітерацій)"
-#: fe-auth-scram.c:681
-msgid "malformed SCRAM message (invalid iteration count)\n"
-msgstr "неправильне повідомлення SCRAM (неприпустима кількість ітерацій)\n"
+#: fe-auth-scram.c:685
+#, c-format
+msgid "malformed SCRAM message (garbage at end of server-first-message)"
+msgstr "неправильне повідомлення SCRAM (сміття в кінці першого повідомлення сервера)"
-#: fe-auth-scram.c:687
-msgid "malformed SCRAM message (garbage at end of server-first-message)\n"
-msgstr "неправильне повідомлення SCRAM (сміття в кінці першого повідомлення сервера)\n"
+#: fe-auth-scram.c:719
+#, c-format
+msgid "error received from server in SCRAM exchange: %s"
+msgstr "отримано помилку від сервера під час обміну SCRAM: %s"
-#: fe-auth-scram.c:723
+#: fe-auth-scram.c:734
#, c-format
-msgid "error received from server in SCRAM exchange: %s\n"
-msgstr "отримано помилку від сервера під час обміну SCRAM: %s\n"
+msgid "malformed SCRAM message (garbage at end of server-final-message)"
+msgstr "неправильне повідомлення SCRAM (сміття в кінці останнього повідомлення сервера)"
-#: fe-auth-scram.c:739
-msgid "malformed SCRAM message (garbage at end of server-final-message)\n"
-msgstr "неправильне повідомлення SCRAM (сміття в кінці останнього повідомлення сервера)\n"
+#: fe-auth-scram.c:751
+#, c-format
+msgid "malformed SCRAM message (invalid server signature)"
+msgstr "неправильне повідомлення SCRAM (неприпустимий підпис сервера)"
-#: fe-auth-scram.c:758
-msgid "malformed SCRAM message (invalid server signature)\n"
-msgstr "неправильне повідомлення SCRAM (неприпустимий підпис сервера)\n"
+#: fe-auth-scram.c:923
+msgid "could not generate random salt"
+msgstr "не вдалося згенерувати випадкову сіль"
-#: fe-auth.c:76
+#: fe-auth.c:77
#, c-format
-msgid "out of memory allocating GSSAPI buffer (%d)\n"
-msgstr "недостатньо пам'яті для буфера GSSAPI (%d)\n"
+msgid "out of memory allocating GSSAPI buffer (%d)"
+msgstr "недостатньо пам'яті для буфера GSSAPI (%d)"
-#: fe-auth.c:131
+#: fe-auth.c:138
msgid "GSSAPI continuation error"
msgstr "Помилка продовження у GSSAPI"
-#: fe-auth.c:158 fe-auth.c:391 fe-gssapi-common.c:98 fe-secure-common.c:98
-msgid "host name must be specified\n"
-msgstr "потрібно вказати ім’я хоста\n"
+#: fe-auth.c:168 fe-auth.c:397 fe-gssapi-common.c:97 fe-secure-common.c:99
+#: fe-secure-common.c:173
+#, c-format
+msgid "host name must be specified"
+msgstr "необхідно вказати ім'я хосту"
-#: fe-auth.c:165
-msgid "duplicate GSS authentication request\n"
-msgstr "дублікат запиту автентифікації GSS\n"
+#: fe-auth.c:174
+#, c-format
+msgid "duplicate GSS authentication request"
+msgstr "дублікат запиту автентифікації GSS"
-#: fe-auth.c:230
+#: fe-auth.c:238
#, c-format
-msgid "out of memory allocating SSPI buffer (%d)\n"
-msgstr "недостатньо пам'яті для буфера SSPI (%d)\n"
+msgid "out of memory allocating SSPI buffer (%d)"
+msgstr "недостатньо пам'яті для буфера SSPI (%d)"
-#: fe-auth.c:278
+#: fe-auth.c:285
msgid "SSPI continuation error"
msgstr "Помилка продовження SSPI"
-#: fe-auth.c:351
-msgid "duplicate SSPI authentication request\n"
-msgstr "дублікат запиту автентифікації SSPI\n"
+#: fe-auth.c:359
+#, c-format
+msgid "duplicate SSPI authentication request"
+msgstr "дублікат запиту автентифікації SSPI"
-#: fe-auth.c:377
+#: fe-auth.c:384
msgid "could not acquire SSPI credentials"
msgstr "не вдалось отримати облікові дані SSPI"
-#: fe-auth.c:433
-msgid "channel binding required, but SSL not in use\n"
-msgstr "необхідно зв’язування каналів, але SSL не використовується\n"
+#: fe-auth.c:437
+#, c-format
+msgid "channel binding required, but SSL not in use"
+msgstr "необхідно зв’язування каналів, але SSL не використовується"
-#: fe-auth.c:440
-msgid "duplicate SASL authentication request\n"
-msgstr "дублікат запиту автентифікації SASL\n"
+#: fe-auth.c:443
+#, c-format
+msgid "duplicate SASL authentication request"
+msgstr "дублікат запиту автентифікації SASL"
-#: fe-auth.c:496
-msgid "channel binding is required, but client does not support it\n"
-msgstr "потрібно зв'язування каналів, але клієнт не підтримує його\n"
+#: fe-auth.c:501
+#, c-format
+msgid "channel binding is required, but client does not support it"
+msgstr "потрібно зв'язування каналів, але клієнт не підтримує його"
-#: fe-auth.c:513
-msgid "server offered SCRAM-SHA-256-PLUS authentication over a non-SSL connection\n"
-msgstr "сервер запропонував автентифікацію SCRAM-SHA-256-PLUS через підключення без SSL\n"
+#: fe-auth.c:517
+#, c-format
+msgid "server offered SCRAM-SHA-256-PLUS authentication over a non-SSL connection"
+msgstr "сервер запропонував автентифікацію SCRAM-SHA-256-PLUS через підключення без SSL"
-#: fe-auth.c:525
-msgid "none of the server's SASL authentication mechanisms are supported\n"
-msgstr "жоден з серверних механізмів автентифікації SASL не підтримується\n"
+#: fe-auth.c:531
+#, c-format
+msgid "none of the server's SASL authentication mechanisms are supported"
+msgstr "жоден з серверних механізмів автентифікації SASL не підтримується"
-#: fe-auth.c:533
-msgid "channel binding is required, but server did not offer an authentication method that supports channel binding\n"
-msgstr "потрібно зв'язування каналів, але сервер не запропонував метод аутентифікації, який підтримує зв’язування каналів\n"
+#: fe-auth.c:538
+#, c-format
+msgid "channel binding is required, but server did not offer an authentication method that supports channel binding"
+msgstr "потрібно зв'язування каналів, але сервер не запропонував метод аутентифікації, який підтримує зв’язування каналів"
-#: fe-auth.c:639
+#: fe-auth.c:641
#, c-format
-msgid "out of memory allocating SASL buffer (%d)\n"
-msgstr "недостатньо пам'яті для буфера SASL (%d)\n"
+msgid "out of memory allocating SASL buffer (%d)"
+msgstr "недостатньо пам'яті для буфера SASL (%d)"
-#: fe-auth.c:664
-msgid "AuthenticationSASLFinal received from server, but SASL authentication was not completed\n"
-msgstr "Від сервера отримано AuthenticationSASLFinal, але автентифікація SASL не була завершена\n"
+#: fe-auth.c:665
+#, c-format
+msgid "AuthenticationSASLFinal received from server, but SASL authentication was not completed"
+msgstr "Від сервера отримано AuthenticationSASLFinal, але автентифікація SASL не була завершена"
-#: fe-auth.c:741
-msgid "SCM_CRED authentication method not supported\n"
-msgstr "Спосіб автентифікації SCM_CRED не підтримується\n"
+#: fe-auth.c:675
+#, c-format
+msgid "no client response found after SASL exchange success"
+msgstr "після успішного обміну SASL немає відповіді клієнта"
-#: fe-auth.c:836
-msgid "channel binding required, but server authenticated client without channel binding\n"
-msgstr "потрібно зв'язування каналів, але сервер автентифікував клієнта без зв’язування каналів\n"
+#: fe-auth.c:738 fe-auth.c:745 fe-auth.c:1358 fe-auth.c:1369
+#, c-format
+msgid "could not encrypt password: %s"
+msgstr "не вдалося зашифрувати пароль: %s"
+
+#: fe-auth.c:773
+msgid "server requested a cleartext password"
+msgstr "сервер надіслав запит на пароль простим текстом"
+
+#: fe-auth.c:775
+msgid "server requested a hashed password"
+msgstr "сервер надіслав запит на хешований пароль"
+
+#: fe-auth.c:778
+msgid "server requested GSSAPI authentication"
+msgstr "сервер запросив автентифікацію GSSAPI"
+
+#: fe-auth.c:780
+msgid "server requested SSPI authentication"
+msgstr "сервер запросив автентифікацію SSPI"
+
+#: fe-auth.c:784
+msgid "server requested SASL authentication"
+msgstr "сервер запросив автентифікацію SASL"
+
+#: fe-auth.c:787
+msgid "server requested an unknown authentication type"
+msgstr "сервер надіслав запит невідомого типу автентифікації"
+
+#: fe-auth.c:820
+#, c-format
+msgid "server did not request an SSL certificate"
+msgstr "сервер не запитував SSL-сертифікат"
+
+#: fe-auth.c:825
+#, c-format
+msgid "server accepted connection without a valid SSL certificate"
+msgstr "сервер приймає підключення без дійсного SSL-сертифікату"
+
+#: fe-auth.c:879
+msgid "server did not complete authentication"
+msgstr "сервер не пройшов автентифікацію"
-#: fe-auth.c:842
-msgid "channel binding required but not supported by server's authentication request\n"
-msgstr "потрібно зв'язування каналів, але не підтримується запитом на аутентифікацію сервера\n"
+#: fe-auth.c:913
+#, c-format
+msgid "authentication method requirement \"%s\" failed: %s"
+msgstr "помилка вимоги \"%s\" методу автентифікації: %s"
+
+#: fe-auth.c:936
+#, c-format
+msgid "channel binding required, but server authenticated client without channel binding"
+msgstr "потрібно зв'язування каналів, але сервер автентифікував клієнта без зв’язування каналів"
+
+#: fe-auth.c:941
+#, c-format
+msgid "channel binding required but not supported by server's authentication request"
+msgstr "потрібно зв'язування каналів, але не підтримується запитом на аутентифікацію сервера"
+
+#: fe-auth.c:975
+#, c-format
+msgid "Kerberos 4 authentication not supported"
+msgstr "Автентифікація Kerberos 4 не підтримується"
+
+#: fe-auth.c:979
+#, c-format
+msgid "Kerberos 5 authentication not supported"
+msgstr "Автентифікація Kerberos 5 не підтримується"
+
+#: fe-auth.c:1049
+#, c-format
+msgid "GSSAPI authentication not supported"
+msgstr "Автентифікація GSSAPI не підтримується"
-#: fe-auth.c:877
-msgid "Kerberos 4 authentication not supported\n"
-msgstr "Автентифікація Kerberos 4 не підтримується\n"
+#: fe-auth.c:1080
+#, c-format
+msgid "SSPI authentication not supported"
+msgstr "Автентифікація SSPI не підтримується"
-#: fe-auth.c:882
-msgid "Kerberos 5 authentication not supported\n"
-msgstr "Автентифікація Kerberos 5 не підтримується\n"
+#: fe-auth.c:1087
+#, c-format
+msgid "Crypt authentication not supported"
+msgstr "Автентифікація Crypt не підтримується"
-#: fe-auth.c:953
-msgid "GSSAPI authentication not supported\n"
-msgstr "Автентифікація GSSAPI не підтримується\n"
+#: fe-auth.c:1151
+#, c-format
+msgid "authentication method %u not supported"
+msgstr "спосіб автентифікації %u не підтримується"
-#: fe-auth.c:985
-msgid "SSPI authentication not supported\n"
-msgstr "Автентифікація SSPI не підтримується\n"
+#: fe-auth.c:1197
+#, c-format
+msgid "user name lookup failure: error code %lu"
+msgstr "невдала підстановка імені користувача: код помилки %lu"
-#: fe-auth.c:993
-msgid "Crypt authentication not supported\n"
-msgstr "Автентифікація Crypt не підтримується\n"
+#: fe-auth.c:1321
+#, c-format
+msgid "unexpected shape of result set returned for SHOW"
+msgstr "неочікувана форма набору результатів повернулася для SHOW"
-#: fe-auth.c:1060
+#: fe-auth.c:1329
#, c-format
-msgid "authentication method %u not supported\n"
-msgstr "спосіб автентифікації %u не підтримується\n"
+msgid "password_encryption value too long"
+msgstr "занадто довге значення password_encryption"
-#: fe-auth.c:1107
+#: fe-auth.c:1379
#, c-format
-msgid "user name lookup failure: error code %lu\n"
-msgstr "невдала підстановка імені користувача: код помилки %lu\n"
+msgid "unrecognized password encryption algorithm \"%s\""
+msgstr "нерозпізнаний алгоритм шифрування пароля \"%s\""
-#: fe-auth.c:1117 fe-connect.c:2851
+#: fe-connect.c:1132
#, c-format
-msgid "could not look up local user ID %d: %s\n"
-msgstr "не вдалося знайти локального користувача за ідентифікатором: %d: %s\n"
+msgid "could not match %d host names to %d hostaddr values"
+msgstr "не вдалося зіставити імена хостів %d для значень %d hostaddr"
-#: fe-auth.c:1122 fe-connect.c:2856
+#: fe-connect.c:1212
#, c-format
-msgid "local user with ID %d does not exist\n"
-msgstr "локального користувача з ідентифікатором %d не існує\n"
+msgid "could not match %d port numbers to %d hosts"
+msgstr "не вдалося зіставити %d номерів портів з %d хостами"
-#: fe-auth.c:1226
-msgid "unexpected shape of result set returned for SHOW\n"
-msgstr "неочікувану форму набору результатів повернуто для SHOW\n"
+#: fe-connect.c:1337
+#, c-format
+msgid "negative require_auth method \"%s\" cannot be mixed with non-negative methods"
+msgstr "від'ємний метод require_auth \"%s\" не може бути змішаний з позитивними методами"
-#: fe-auth.c:1235
-msgid "password_encryption value too long\n"
-msgstr "занадто довге значення password_encryption \n"
+#: fe-connect.c:1350
+#, c-format
+msgid "require_auth method \"%s\" cannot be mixed with negative methods"
+msgstr "метод require_auth \"%s\" не може бути змішаний з негативними методами"
-#: fe-auth.c:1275
+#: fe-connect.c:1410 fe-connect.c:1461 fe-connect.c:1503 fe-connect.c:1559
+#: fe-connect.c:1567 fe-connect.c:1598 fe-connect.c:1644 fe-connect.c:1684
+#: fe-connect.c:1705
#, c-format
-msgid "unrecognized password encryption algorithm \"%s\"\n"
-msgstr "нерозпізнаний алгоритм шифрування пароля \"%s\"\n"
+msgid "invalid %s value: \"%s\""
+msgstr "неприпустиме значення %s: \"%s\""
-#: fe-connect.c:1094
+#: fe-connect.c:1443
#, c-format
-msgid "could not match %d host names to %d hostaddr values\n"
-msgstr "не вдалося зіставити %d імен хостів зі %d значеннями hostaddr\n"
+msgid "require_auth method \"%s\" is specified more than once"
+msgstr "require_auth метод \"%s\" вказаний неодноразово"
-#: fe-connect.c:1175
+#: fe-connect.c:1484 fe-connect.c:1523 fe-connect.c:1606
#, c-format
-msgid "could not match %d port numbers to %d hosts\n"
-msgstr "не вдалося зіставити %d номерів портів з %d хостами\n"
+msgid "%s value \"%s\" invalid when SSL support is not compiled in"
+msgstr "%s значення \"%s\" неприпустиме, якщо підтримку протоколу SSL не скомпільовано"
-#: fe-connect.c:1268 fe-connect.c:1294 fe-connect.c:1336 fe-connect.c:1345
-#: fe-connect.c:1378 fe-connect.c:1422
+#: fe-connect.c:1546
#, c-format
-msgid "invalid %s value: \"%s\"\n"
-msgstr "неприпустиме значення %s : \"%s\"\n"
+msgid "weak sslmode \"%s\" may not be used with sslrootcert=system (use \"verify-full\")"
+msgstr "слабкий sslmode \"%s\" не може використовуватися з sslrootcert=system (використайте \"verify-full\")"
-#: fe-connect.c:1315
+#: fe-connect.c:1584
#, c-format
-msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n"
-msgstr "значення sslmode \"%s\" неприпустиме, якщо підтримку протоколу SSL не скомпільовано\n"
+msgid "invalid SSL protocol version range"
+msgstr "неприпустимий діапазон версії протоколу SSL"
-#: fe-connect.c:1363
-msgid "invalid SSL protocol version range\n"
-msgstr "неприпустимий діапазон версії протоколу SSL\n"
+#: fe-connect.c:1621
+#, c-format
+msgid "%s value \"%s\" is not supported (check OpenSSL version)"
+msgstr "%s значення \"%s\" не підтримується (перевірте версію OpenSSL)"
-#: fe-connect.c:1388
+#: fe-connect.c:1651
#, c-format
-msgid "gssencmode value \"%s\" invalid when GSSAPI support is not compiled in\n"
-msgstr "значення gssencmode \"%s\" неприпустиме, якщо підтримку протоколу GSSAPI не скомпільовано\n"
+msgid "gssencmode value \"%s\" invalid when GSSAPI support is not compiled in"
+msgstr "значення gssencmode \"%s\" неприпустиме, якщо підтримку протоколу GSSAPI не скомпільовано"
-#: fe-connect.c:1648
+#: fe-connect.c:1944
#, c-format
-msgid "could not set socket to TCP no delay mode: %s\n"
-msgstr "не вдалося встановити сокет у TCP-режим без затримки: %s\n"
+msgid "could not set socket to TCP no delay mode: %s"
+msgstr "не вдалося встановити сокет у TCP-режим без затримки: %s"
-#: fe-connect.c:1710
+#: fe-connect.c:2003
#, c-format
msgid "connection to server on socket \"%s\" failed: "
msgstr "помилка при з'єднанні з сервером через сокет \"%s\": "
-#: fe-connect.c:1737
+#: fe-connect.c:2029
#, c-format
msgid "connection to server at \"%s\" (%s), port %s failed: "
msgstr "підключення до серверу \"%s\" (%s), порт %s провалено: "
-#: fe-connect.c:1742
+#: fe-connect.c:2034
#, c-format
msgid "connection to server at \"%s\", port %s failed: "
msgstr "підключення до серверу \"%s\", порт %s провалено: "
-#: fe-connect.c:1767
-msgid "\tIs the server running locally and accepting connections on that socket?\n"
-msgstr "\tЧи працює сервер локально і приймає підключення до цього сокету?\n"
+#: fe-connect.c:2057
+#, c-format
+msgid "\tIs the server running locally and accepting connections on that socket?"
+msgstr "\tЧи працює сервер локально і приймає підключення до цього сокету?"
-#: fe-connect.c:1771
-msgid "\tIs the server running on that host and accepting TCP/IP connections?\n"
-msgstr "\tЧи працює сервер на цьому хості і приймає TCP/IP підключення?\n"
+#: fe-connect.c:2059
+#, c-format
+msgid "\tIs the server running on that host and accepting TCP/IP connections?"
+msgstr "\tЧи працює сервер на цьому хості і приймає TCP/IP підключення?"
-#: fe-connect.c:1835
+#: fe-connect.c:2122
#, c-format
-msgid "invalid integer value \"%s\" for connection option \"%s\"\n"
-msgstr "неприпустиме ціле значення \"%s\" для параметра з'єднання \"%s\"\n"
+msgid "invalid integer value \"%s\" for connection option \"%s\""
+msgstr "неприпустиме ціле значення \"%s\" для параметра з'єднання \"%s\""
-#: fe-connect.c:1865 fe-connect.c:1900 fe-connect.c:1936 fe-connect.c:2025
-#: fe-connect.c:2639
+#: fe-connect.c:2151 fe-connect.c:2185 fe-connect.c:2220 fe-connect.c:2318
+#: fe-connect.c:2973
#, c-format
-msgid "%s(%s) failed: %s\n"
-msgstr "%s(%s) помилка: %s\n"
+msgid "%s(%s) failed: %s"
+msgstr "%s(%s) помилка: %s"
-#: fe-connect.c:1990
+#: fe-connect.c:2284
#, c-format
-msgid "%s(%s) failed: error code %d\n"
-msgstr "%s(%s) помилка: код помилки %d\n"
+msgid "%s(%s) failed: error code %d"
+msgstr "%s(%s) помилка: код помилки %d"
-#: fe-connect.c:2305
-msgid "invalid connection state, probably indicative of memory corruption\n"
-msgstr "неприпустимий стан підключення, можливо, пошкоджена пам'ять\n"
+#: fe-connect.c:2597
+#, c-format
+msgid "invalid connection state, probably indicative of memory corruption"
+msgstr "неприпустимий стан підключення, можливо, пошкоджена пам'ять"
-#: fe-connect.c:2384
+#: fe-connect.c:2676
#, c-format
-msgid "invalid port number: \"%s\"\n"
-msgstr "неприпустимий номер порту: \"%s\"\n"
+msgid "invalid port number: \"%s\""
+msgstr "неприпустимий номер порту: \"%s\""
-#: fe-connect.c:2400
+#: fe-connect.c:2690
#, c-format
-msgid "could not translate host name \"%s\" to address: %s\n"
-msgstr "не вдалося перекласти ім’я хоста \"%s\" в адресу: %s\n"
+msgid "could not translate host name \"%s\" to address: %s"
+msgstr "не вдалося перекласти ім’я хоста \"%s\" в адресу: %s"
-#: fe-connect.c:2413
+#: fe-connect.c:2702
#, c-format
-msgid "could not parse network address \"%s\": %s\n"
-msgstr "не вдалося проаналізувати адресу мережі \"%s\": %s\n"
+msgid "could not parse network address \"%s\": %s"
+msgstr "не вдалося проаналізувати адресу мережі \"%s\": %s"
-#: fe-connect.c:2426
+#: fe-connect.c:2713
#, c-format
-msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n"
-msgstr "Шлях Unix-сокету \"%s\" занадто довгий (максимум %d байтів)\n"
+msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)"
+msgstr "Шлях Unix-сокету \"%s\" занадто довгий (максимум %d байтів)"
-#: fe-connect.c:2441
+#: fe-connect.c:2727
#, c-format
-msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n"
-msgstr "не вдалося перекласти шлях Unix-сокету \"%s\" в адресу: %s\n"
+msgid "could not translate Unix-domain socket path \"%s\" to address: %s"
+msgstr "не вдалося перекласти шлях Unix-сокету \"%s\" в адресу: %s"
-#: fe-connect.c:2567
+#: fe-connect.c:2901
#, c-format
-msgid "could not create socket: %s\n"
-msgstr "не вдалося створити сокет: %s\n"
+msgid "could not create socket: %s"
+msgstr "не вдалося створити сокет: %s"
-#: fe-connect.c:2598
+#: fe-connect.c:2932
#, c-format
-msgid "could not set socket to nonblocking mode: %s\n"
-msgstr "не вдалося встановити сокет у режим без блокування: %s\n"
+msgid "could not set socket to nonblocking mode: %s"
+msgstr "не вдалося встановити сокет у режим без блокування: %s"
-#: fe-connect.c:2608
+#: fe-connect.c:2943
#, c-format
-msgid "could not set socket to close-on-exec mode: %s\n"
-msgstr "не вдалося встановити сокет у режим закриття по виконанню: %s\n"
+msgid "could not set socket to close-on-exec mode: %s"
+msgstr "не вдалося встановити сокет у режим закриття по виконанню: %s"
-#: fe-connect.c:2626
-msgid "keepalives parameter must be an integer\n"
-msgstr "параметр keepalives має бути цілим числом\n"
+#: fe-connect.c:2961
+#, c-format
+msgid "keepalives parameter must be an integer"
+msgstr "параметр keepalives має бути цілим числом"
-#: fe-connect.c:2767
+#: fe-connect.c:3100
#, c-format
-msgid "could not get socket error status: %s\n"
-msgstr "не вдалося отримати статус помилки сокету: %s\n"
+msgid "could not get socket error status: %s"
+msgstr "не вдалося отримати статус помилки сокету: %s"
-#: fe-connect.c:2795
+#: fe-connect.c:3127
#, c-format
-msgid "could not get client address from socket: %s\n"
-msgstr "не вдалося отримати адресу клієнта з сокету: %s\n"
+msgid "could not get client address from socket: %s"
+msgstr "не вдалося отримати адресу клієнта з сокету: %s"
-#: fe-connect.c:2837
-msgid "requirepeer parameter is not supported on this platform\n"
-msgstr "параметр requirepeer не підтримується на цій платформі\n"
+#: fe-connect.c:3165
+#, c-format
+msgid "requirepeer parameter is not supported on this platform"
+msgstr "параметр requirepeer не підтримується на цій платформі"
-#: fe-connect.c:2840
+#: fe-connect.c:3167
#, c-format
-msgid "could not get peer credentials: %s\n"
-msgstr "не вдалося отримати облікові дані сервера: %s\n"
+msgid "could not get peer credentials: %s"
+msgstr "не вдалось отримати облікові дані учасника: %s"
-#: fe-connect.c:2864
+#: fe-connect.c:3180
#, c-format
-msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n"
-msgstr "requirepeer вказує на \"%s\", але фактичне ім'я вузла \"%s\"\n"
+msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\""
+msgstr "requirepeer вказує на \"%s\", але фактичне ім'я вузла \"%s\""
-#: fe-connect.c:2904
+#: fe-connect.c:3221
#, c-format
-msgid "could not send GSSAPI negotiation packet: %s\n"
-msgstr "не вдалося передати пакет узгодження протоколу GSSAPI: %s\n"
+msgid "could not send GSSAPI negotiation packet: %s"
+msgstr "не вдалося передати пакет узгодження протоколу GSSAPI: %s"
-#: fe-connect.c:2916
-msgid "GSSAPI encryption required but was impossible (possibly no credential cache, no server support, or using a local socket)\n"
-msgstr "вимагалося шифрування GSSAPI, але не було неможливим (можливо, без кешу облікових даних, підтримки сервера, або використання локального сокета)\n"
+#: fe-connect.c:3233
+#, c-format
+msgid "GSSAPI encryption required but was impossible (possibly no credential cache, no server support, or using a local socket)"
+msgstr "вимагалося шифрування GSSAPI, але не було неможливим (можливо, без кешу облікових даних, підтримки сервера, або використання локального сокета)"
-#: fe-connect.c:2958
+#: fe-connect.c:3274
#, c-format
-msgid "could not send SSL negotiation packet: %s\n"
-msgstr "не вдалося передати пакет узгодження протоколу SSL: %s\n"
+msgid "could not send SSL negotiation packet: %s"
+msgstr "не вдалося передати пакет узгодження протоколу SSL: %s"
-#: fe-connect.c:2989
+#: fe-connect.c:3303
#, c-format
-msgid "could not send startup packet: %s\n"
-msgstr "не вдалося передати стартовий пакет: %s\n"
+msgid "could not send startup packet: %s"
+msgstr "не вдалося передати стартовий пакет: %s"
-#: fe-connect.c:3065
-msgid "server does not support SSL, but SSL was required\n"
-msgstr "сервер не підтримує протокол SSL, але протокол SSL вимагається\n"
+#: fe-connect.c:3378
+#, c-format
+msgid "server does not support SSL, but SSL was required"
+msgstr "сервер не підтримує протокол SSL, але протокол SSL вимагається"
-#: fe-connect.c:3092
+#: fe-connect.c:3404
#, c-format
-msgid "received invalid response to SSL negotiation: %c\n"
-msgstr "отримано неприпустиму відповідь на узгодження SSL: %c\n"
+msgid "received invalid response to SSL negotiation: %c"
+msgstr "отримано неприпустиму відповідь на узгодження SSL: %c"
-#: fe-connect.c:3181
-msgid "server doesn't support GSSAPI encryption, but it was required\n"
-msgstr "сервер не підтримує шифрування GSSAPI, але це було необхідно\n"
+#: fe-connect.c:3424
+#, c-format
+msgid "received unencrypted data after SSL response"
+msgstr "отримані незашифровані дані після відповіді SSL"
-#: fe-connect.c:3193
+#: fe-connect.c:3504
#, c-format
-msgid "received invalid response to GSSAPI negotiation: %c\n"
-msgstr "отримано неприпустиму відповідь на узгодження GSSAPI: %c\n"
+msgid "server doesn't support GSSAPI encryption, but it was required"
+msgstr "сервер не підтримує шифрування GSSAPI, але це було необхідно"
-#: fe-connect.c:3259 fe-connect.c:3284
+#: fe-connect.c:3515
#, c-format
-msgid "expected authentication request from server, but received %c\n"
-msgstr "очікувався запит автентифікації від сервера, але отримано %c\n"
+msgid "received invalid response to GSSAPI negotiation: %c"
+msgstr "отримано неприпустиму відповідь на узгодження GSSAPI: %c"
-#: fe-connect.c:3491
-msgid "unexpected message from server during startup\n"
-msgstr "неочікуване повідомлення від сервера під час запуску\n"
+#: fe-connect.c:3533
+#, c-format
+msgid "received unencrypted data after GSSAPI encryption response"
+msgstr "отримані незашифровані дані після відповіді шифрування GSSAPI"
-#: fe-connect.c:3583
-msgid "session is read-only\n"
-msgstr "сесія доступна тільки для читання\n"
+#: fe-connect.c:3598
+#, c-format
+msgid "expected authentication request from server, but received %c"
+msgstr "очікувався запит автентифікації від сервера, але отримано %c"
-#: fe-connect.c:3586
-msgid "session is not read-only\n"
-msgstr "сесія доступна не лише для читання\n"
+#: fe-connect.c:3625 fe-connect.c:3794
+#, c-format
+msgid "received invalid authentication request"
+msgstr "отримано неприпустимий запит на аутентифікацію"
-#: fe-connect.c:3640
-msgid "server is in hot standby mode\n"
-msgstr "сервер знаходиться у режимі hot standby\n"
+#: fe-connect.c:3630 fe-connect.c:3779
+#, c-format
+msgid "received invalid protocol negotiation message"
+msgstr "отримано неприпустиме повідомлення узгодження протоколу"
-#: fe-connect.c:3643
-msgid "server is not in hot standby mode\n"
-msgstr "сервер не в режимі hot standby\n"
+#: fe-connect.c:3648 fe-connect.c:3702
+#, c-format
+msgid "received invalid error message"
+msgstr "отримано неприпустиме повідомлення про помилку"
-#: fe-connect.c:3754 fe-connect.c:3806
+#: fe-connect.c:3865
#, c-format
-msgid "\"%s\" failed\n"
-msgstr "\"%s\" помилка\n"
+msgid "unexpected message from server during startup"
+msgstr "неочікуване повідомлення від сервера під час запуску"
-#: fe-connect.c:3820
+#: fe-connect.c:3956
#, c-format
-msgid "invalid connection state %d, probably indicative of memory corruption\n"
-msgstr "неприпустимий стан підключення %d, можливо, пошкоджена пам'ять\n"
+msgid "session is read-only"
+msgstr "сесія доступна тільки для читання"
-#: fe-connect.c:4266 fe-connect.c:4326
+#: fe-connect.c:3958
#, c-format
-msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n"
-msgstr "Помилка у PGEventProc \"%s\" під час події PGEVT_CONNRESET\n"
+msgid "session is not read-only"
+msgstr "сесія доступна не лише для читання"
-#: fe-connect.c:4670
+#: fe-connect.c:4011
#, c-format
-msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n"
-msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": схема має бути ldap://\n"
+msgid "server is in hot standby mode"
+msgstr "сервер знаходиться у режимі hot standby"
-#: fe-connect.c:4685
+#: fe-connect.c:4013
#, c-format
-msgid "invalid LDAP URL \"%s\": missing distinguished name\n"
-msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутнє унікальне ім'я\n"
+msgid "server is not in hot standby mode"
+msgstr "сервер не в режимі hot standby"
-#: fe-connect.c:4697 fe-connect.c:4755
+#: fe-connect.c:4129 fe-connect.c:4179
#, c-format
-msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n"
-msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": має бути лише один атрибут\n"
+msgid "\"%s\" failed"
+msgstr "\"%s\" помилка"
-#: fe-connect.c:4709 fe-connect.c:4771
+#: fe-connect.c:4193
#, c-format
-msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n"
-msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутня область пошуку (base/one/sub)\n"
+msgid "invalid connection state %d, probably indicative of memory corruption"
+msgstr "неприпустимий стан підключення %d, можливо, пошкоджена пам'ять"
-#: fe-connect.c:4721
+#: fe-connect.c:5174
#, c-format
-msgid "invalid LDAP URL \"%s\": no filter\n"
-msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутній фільтр\n"
+msgid "invalid LDAP URL \"%s\": scheme must be ldap://"
+msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": схема має бути ldap://"
-#: fe-connect.c:4743
+#: fe-connect.c:5189
#, c-format
-msgid "invalid LDAP URL \"%s\": invalid port number\n"
-msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": неприпустимий номер порту\n"
+msgid "invalid LDAP URL \"%s\": missing distinguished name"
+msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутнє унікальне ім'я"
-#: fe-connect.c:4781
-msgid "could not create LDAP structure\n"
-msgstr "не вдалося створити структуру протоколу LDAP\n"
+#: fe-connect.c:5201 fe-connect.c:5259
+#, c-format
+msgid "invalid LDAP URL \"%s\": must have exactly one attribute"
+msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": має бути лише один атрибут"
-#: fe-connect.c:4857
+#: fe-connect.c:5213 fe-connect.c:5275
#, c-format
-msgid "lookup on LDAP server failed: %s\n"
-msgstr "помилка підстановки на сервері протоколу LDAP: %s\n"
+msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)"
+msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутня область пошуку (base/one/sub)"
-#: fe-connect.c:4868
-msgid "more than one entry found on LDAP lookup\n"
-msgstr "знайдено більше одного входження при підстановці протоколу LDAP\n"
+#: fe-connect.c:5225
+#, c-format
+msgid "invalid LDAP URL \"%s\": no filter"
+msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": відсутній фільтр"
-#: fe-connect.c:4869 fe-connect.c:4881
-msgid "no entry found on LDAP lookup\n"
-msgstr "не знайдено входження при підстановці протоколу LDAP\n"
+#: fe-connect.c:5247
+#, c-format
+msgid "invalid LDAP URL \"%s\": invalid port number"
+msgstr "неприпустима URL-адреса протоколу LDAP \"%s\": неприпустимий номер порту"
+
+#: fe-connect.c:5284
+#, c-format
+msgid "could not create LDAP structure"
+msgstr "не вдалось створити структуру LDAP"
+
+#: fe-connect.c:5359
+#, c-format
+msgid "lookup on LDAP server failed: %s"
+msgstr "помилка підстановки на сервері протоколу LDAP: %s"
+
+#: fe-connect.c:5369
+#, c-format
+msgid "more than one entry found on LDAP lookup"
+msgstr "знайдено більше одного входження при підстановці протоколу LDAP"
+
+#: fe-connect.c:5371 fe-connect.c:5382
+#, c-format
+msgid "no entry found on LDAP lookup"
+msgstr "не знайдено входження при підстановці протоколу LDAP"
-#: fe-connect.c:4892 fe-connect.c:4905
-msgid "attribute has no values on LDAP lookup\n"
-msgstr "атрибут не має значення при підстановці протоколу LDAP\n"
+#: fe-connect.c:5392 fe-connect.c:5404
+#, c-format
+msgid "attribute has no values on LDAP lookup"
+msgstr "атрибут не має значення при підстановці протоколу LDAP"
-#: fe-connect.c:4957 fe-connect.c:4976 fe-connect.c:5508
+#: fe-connect.c:5455 fe-connect.c:5474 fe-connect.c:5998
#, c-format
-msgid "missing \"=\" after \"%s\" in connection info string\n"
-msgstr "відсутній \"=\" після \"%s\" у рядку інформації про підключення\n"
+msgid "missing \"=\" after \"%s\" in connection info string"
+msgstr "відсутній \"=\" після \"%s\" у рядку інформації про підключення"
-#: fe-connect.c:5049 fe-connect.c:5693 fe-connect.c:6469
+#: fe-connect.c:5545 fe-connect.c:6181 fe-connect.c:6979
#, c-format
-msgid "invalid connection option \"%s\"\n"
-msgstr "неприпустимий параметр підключення \"%s\"\n"
+msgid "invalid connection option \"%s\""
+msgstr "неприпустимий параметр підключення \"%s\""
-#: fe-connect.c:5065 fe-connect.c:5557
-msgid "unterminated quoted string in connection info string\n"
-msgstr "відкриті лапки у рядку інформації про підключення\n"
+#: fe-connect.c:5560 fe-connect.c:6046
+#, c-format
+msgid "unterminated quoted string in connection info string"
+msgstr "відкриті лапки у рядку інформації про підключення"
-#: fe-connect.c:5146
+#: fe-connect.c:5640
#, c-format
-msgid "definition of service \"%s\" not found\n"
-msgstr "не знайдено визначення сервера \"%s\"\n"
+msgid "definition of service \"%s\" not found"
+msgstr "не знайдено визначення сервера \"%s\""
-#: fe-connect.c:5172
+#: fe-connect.c:5666
#, c-format
-msgid "service file \"%s\" not found\n"
-msgstr "не знайдено сервісний файл \"%s\"\n"
+msgid "service file \"%s\" not found"
+msgstr "не знайдено сервісний файл \"%s\""
-#: fe-connect.c:5186
+#: fe-connect.c:5679
#, c-format
-msgid "line %d too long in service file \"%s\"\n"
-msgstr "рядок %d занадто довгий у сервісному файлі \"%s\"\n"
+msgid "line %d too long in service file \"%s\""
+msgstr "рядок %d занадто довгий у сервісному файлі \"%s\""
-#: fe-connect.c:5257 fe-connect.c:5301
+#: fe-connect.c:5750 fe-connect.c:5793
#, c-format
-msgid "syntax error in service file \"%s\", line %d\n"
-msgstr "синтаксична помилка у сервісному файлі \"%s\", рядок %d\n"
+msgid "syntax error in service file \"%s\", line %d"
+msgstr "синтаксична помилка у сервісному файлі \"%s\", рядок %d"
-#: fe-connect.c:5268
+#: fe-connect.c:5761
#, c-format
-msgid "nested service specifications not supported in service file \"%s\", line %d\n"
-msgstr "вкладені сервісні специфікації не підтримуються у сервісному файлі \"%s\", рядок %d\n"
+msgid "nested service specifications not supported in service file \"%s\", line %d"
+msgstr "вкладені сервісні специфікації не підтримуються у сервісному файлі \"%s\", рядок %d"
-#: fe-connect.c:5989
+#: fe-connect.c:6500
#, c-format
-msgid "invalid URI propagated to internal parser routine: \"%s\"\n"
-msgstr "у внутрішню процедуру аналізу рядка передано помилковий URI: \"%s\"\n"
+msgid "invalid URI propagated to internal parser routine: \"%s\""
+msgstr "у внутрішню процедуру аналізу рядка передано помилковий URI: \"%s\""
-#: fe-connect.c:6066
+#: fe-connect.c:6577
#, c-format
-msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\"\n"
-msgstr "досягнуто кінця рядка під час пошуку відповідного \"]\" в адресі IPv6 URI: \"%s\"\n"
+msgid "end of string reached when looking for matching \"]\" in IPv6 host address in URI: \"%s\""
+msgstr "досягнуто кінця рядка під час пошуку відповідного \"]\" в адресі IPv6 URI: \"%s\""
-#: fe-connect.c:6073
+#: fe-connect.c:6584
#, c-format
-msgid "IPv6 host address may not be empty in URI: \"%s\"\n"
-msgstr "IPv6, що знаходиться в URI, не може бути пустим: \"%s\"\n"
+msgid "IPv6 host address may not be empty in URI: \"%s\""
+msgstr "IPv6 адреса хоста не може бути порожньою в URI: \"%s\""
-#: fe-connect.c:6088
+#: fe-connect.c:6599
#, c-format
-msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\"\n"
-msgstr "неочікуваний символ \"%c\" на позиції %d в URI (очікувалося \":\" або \"/\"): \"%s\"\n"
+msgid "unexpected character \"%c\" at position %d in URI (expected \":\" or \"/\"): \"%s\""
+msgstr "неочікуваний символ \"%c\" на позиції %d в URI (очікувалося \":\" або \"/\"): \"%s\""
-#: fe-connect.c:6218
+#: fe-connect.c:6728
#, c-format
-msgid "extra key/value separator \"=\" in URI query parameter: \"%s\"\n"
-msgstr "зайвий розділювач ключа/значення \"=\" в параметрі запиту URI: \"%s\"\n"
+msgid "extra key/value separator \"=\" in URI query parameter: \"%s\""
+msgstr "зайвий розділювач ключа/значення \"=\" в параметрі запиту URI: \"%s\""
-#: fe-connect.c:6238
+#: fe-connect.c:6748
#, c-format
-msgid "missing key/value separator \"=\" in URI query parameter: \"%s\"\n"
-msgstr "відсутній розділювач ключа/значення \"=\" у параметрі запиту URI: \"%s\"\n"
+msgid "missing key/value separator \"=\" in URI query parameter: \"%s\""
+msgstr "відсутній розділювач ключа/значення \"=\" у параметрі запиту URI: \"%s\""
-#: fe-connect.c:6290
+#: fe-connect.c:6800
#, c-format
-msgid "invalid URI query parameter: \"%s\"\n"
-msgstr "неприпустимий параметр запиту URI: \"%s\"\n"
+msgid "invalid URI query parameter: \"%s\""
+msgstr "неприпустимий параметр запиту URI: \"%s\""
-#: fe-connect.c:6364
+#: fe-connect.c:6874
#, c-format
-msgid "invalid percent-encoded token: \"%s\"\n"
-msgstr "неприпустимий токен, закодований відсотками: \"%s\"\n"
+msgid "invalid percent-encoded token: \"%s\""
+msgstr "неприпустимий токен, закодований відсотками: \"%s\""
-#: fe-connect.c:6374
+#: fe-connect.c:6884
#, c-format
-msgid "forbidden value %%00 in percent-encoded value: \"%s\"\n"
-msgstr "неприпустиме значення %%00 для значення, закодованого відсотками: \"%s\"\n"
+msgid "forbidden value %%00 in percent-encoded value: \"%s\""
+msgstr "неприпустиме значення %%00 в відсотковому значенні: \"%s\""
-#: fe-connect.c:6744
+#: fe-connect.c:7248
msgid "connection pointer is NULL\n"
msgstr "нульове значення вказівника підключення \n"
-#: fe-connect.c:7032
+#: fe-connect.c:7256 fe-exec.c:710 fe-exec.c:972 fe-exec.c:3321
+#: fe-protocol3.c:969 fe-protocol3.c:1002
+msgid "out of memory\n"
+msgstr "недостатньо пам'яті\n"
+
+#: fe-connect.c:7547
#, c-format
msgid "WARNING: password file \"%s\" is not a plain file\n"
msgstr "ПОПЕРЕДЖЕННЯ: файл паролів \"%s\" не є простим файлом\n"
-#: fe-connect.c:7041
+#: fe-connect.c:7556
#, c-format
msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n"
msgstr "ПОПЕРЕДЖЕННЯ: до файлу паролів \"%s\" мають доступ група або всі; дозволи мають бути u=rw (0600) або менше\n"
-#: fe-connect.c:7149
+#: fe-connect.c:7663
#, c-format
-msgid "password retrieved from file \"%s\"\n"
-msgstr "пароль отримано з файлу \"%s\"\n"
+msgid "password retrieved from file \"%s\""
+msgstr "пароль отримано з файлу \"%s\""
-#: fe-exec.c:449 fe-exec.c:3300
+#: fe-exec.c:466 fe-exec.c:3395
#, c-format
msgid "row number %d is out of range 0..%d"
msgstr "число рядків %d поза діапазоном 0..%d"
-#: fe-exec.c:510 fe-protocol3.c:219 fe-protocol3.c:244 fe-protocol3.c:273
-#: fe-protocol3.c:291 fe-protocol3.c:371 fe-protocol3.c:743
-msgid "out of memory"
-msgstr "недостатньо пам'яті"
-
-#: fe-exec.c:511 fe-protocol3.c:1939
+#: fe-exec.c:528 fe-protocol3.c:1971
#, c-format
msgid "%s"
msgstr "%s"
-#: fe-exec.c:792
-msgid "write to server failed\n"
-msgstr "записати на сервер не вдалося\n"
+#: fe-exec.c:831
+#, c-format
+msgid "write to server failed"
+msgstr "не вдалося записати на сервер"
-#: fe-exec.c:864
+#: fe-exec.c:871
+#, c-format
+msgid "no error text available"
+msgstr "немає доступного тексту помилки"
+
+#: fe-exec.c:960
msgid "NOTICE"
msgstr "ПОВІДОМЛЕННЯ"
-#: fe-exec.c:922
+#: fe-exec.c:1018
msgid "PGresult cannot support more than INT_MAX tuples"
msgstr "PGresult не може підтримувати більше ніж INT_MAX кортежів"
-#: fe-exec.c:934
+#: fe-exec.c:1030
msgid "size_t overflow"
msgstr "переповнення size_t"
-#: fe-exec.c:1349 fe-exec.c:1454 fe-exec.c:1503
-msgid "command string is a null pointer\n"
-msgstr "рядок команди є нульовим вказівником\n"
+#: fe-exec.c:1446 fe-exec.c:1515 fe-exec.c:1561
+#, c-format
+msgid "command string is a null pointer"
+msgstr "рядок команди є нульовим вказівником"
-#: fe-exec.c:1460 fe-exec.c:1509 fe-exec.c:1605
+#: fe-exec.c:1452 fe-exec.c:2883
#, c-format
-msgid "number of parameters must be between 0 and %d\n"
-msgstr "кількість параметрів має бути між 0 і %d\n"
+msgid "%s not allowed in pipeline mode"
+msgstr "%s не дозволено в режимі конвеєра"
-#: fe-exec.c:1497 fe-exec.c:1599
-msgid "statement name is a null pointer\n"
-msgstr "ім’я оператора є пустим вказівником\n"
+#: fe-exec.c:1520 fe-exec.c:1566 fe-exec.c:1660
+#, c-format
+msgid "number of parameters must be between 0 and %d"
+msgstr "кількість параметрів має бути між 0 і %d"
-#: fe-exec.c:1641 fe-exec.c:3153
-msgid "no connection to the server\n"
-msgstr "немає підключення до сервера\n"
+#: fe-exec.c:1556 fe-exec.c:1655
+#, c-format
+msgid "statement name is a null pointer"
+msgstr "ім’я оператора є пустим вказівником"
-#: fe-exec.c:1650 fe-exec.c:3162
-msgid "another command is already in progress\n"
-msgstr "інша команда уже в прогресі\n"
+#: fe-exec.c:1697 fe-exec.c:3241
+#, c-format
+msgid "no connection to the server"
+msgstr "немає з'єднання з сервером"
-#: fe-exec.c:1679
-msgid "cannot queue commands during COPY\n"
-msgstr "не можна поставити в чергу команди під час COPY\n"
+#: fe-exec.c:1705 fe-exec.c:3249
+#, c-format
+msgid "another command is already in progress"
+msgstr "інша команда вже виконується"
-#: fe-exec.c:1797
-msgid "length must be given for binary parameter\n"
-msgstr "для бінарного параметра має бути надана довжина\n"
+#: fe-exec.c:1735
+#, c-format
+msgid "cannot queue commands during COPY"
+msgstr "не можна поставити в чергу команди під час COPY"
-#: fe-exec.c:2117
+#: fe-exec.c:1852
#, c-format
-msgid "unexpected asyncStatus: %d\n"
-msgstr "неочікуваний asyncStatus: %d\n"
+msgid "length must be given for binary parameter"
+msgstr "для бінарного параметра має бути надана довжина"
-#: fe-exec.c:2137
+#: fe-exec.c:2166
#, c-format
-msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n"
-msgstr "Помилка у PGEventProc \"%s\" під час події PGEVT_RESULTCREAT\n"
+msgid "unexpected asyncStatus: %d"
+msgstr "неочікуваний asyncStatus: %d"
-#: fe-exec.c:2285
-msgid "synchronous command execution functions are not allowed in pipeline mode\n"
-msgstr "функції синхронного виконання команд заборонені в режимі конвеєра\n"
+#: fe-exec.c:2322
+#, c-format
+msgid "synchronous command execution functions are not allowed in pipeline mode"
+msgstr "функції синхронного виконання команд заборонені в режимі конвеєра"
-#: fe-exec.c:2307
+#: fe-exec.c:2339
msgid "COPY terminated by new PQexec"
msgstr "COPY завершено новим PQexec"
-#: fe-exec.c:2324
-msgid "PQexec not allowed during COPY BOTH\n"
-msgstr "PQexec не дозволяється під час COPY BOTH\n"
+#: fe-exec.c:2355
+#, c-format
+msgid "PQexec not allowed during COPY BOTH"
+msgstr "PQexec не дозволяється під час COPY BOTH"
-#: fe-exec.c:2552 fe-exec.c:2608 fe-exec.c:2677 fe-protocol3.c:1870
-msgid "no COPY in progress\n"
-msgstr "Немає COPY у процесі\n"
+#: fe-exec.c:2581 fe-exec.c:2636 fe-exec.c:2704 fe-protocol3.c:1902
+#, c-format
+msgid "no COPY in progress"
+msgstr "немає COPY у процесі"
-#: fe-exec.c:2854
-msgid "PQfn not allowed in pipeline mode\n"
-msgstr "PQfn заборонено в режимі конвеєра\n"
+#: fe-exec.c:2890
+#, c-format
+msgid "connection in wrong state"
+msgstr "підключення у неправильному стані"
-#: fe-exec.c:2862
-msgid "connection in wrong state\n"
-msgstr "підключення у неправильному стані\n"
+#: fe-exec.c:2933
+#, c-format
+msgid "cannot enter pipeline mode, connection not idle"
+msgstr "не можна увійти в режим конвеєра, підключення не в очікуванні"
-#: fe-exec.c:2906
-msgid "cannot enter pipeline mode, connection not idle\n"
-msgstr "не можна увійти в режим конвеєра, підключення не в очікуванні\n"
+#: fe-exec.c:2969 fe-exec.c:2990
+#, c-format
+msgid "cannot exit pipeline mode with uncollected results"
+msgstr "не можна вийти з режиму конвеєра з незібраними результатами"
-#: fe-exec.c:2940 fe-exec.c:2957
-msgid "cannot exit pipeline mode with uncollected results\n"
-msgstr "не можна вийти з режиму конвеєра з незібраними результатами\n"
+#: fe-exec.c:2973
+#, c-format
+msgid "cannot exit pipeline mode while busy"
+msgstr "не можна вийти з режиму конвеєра, коли зайнято"
-#: fe-exec.c:2945
-msgid "cannot exit pipeline mode while busy\n"
-msgstr "не можна вийти з режиму конвеєра, коли зайнято\n"
+#: fe-exec.c:2984
+#, c-format
+msgid "cannot exit pipeline mode while in COPY"
+msgstr "не можна вийти з режиму конвеєра під час COPY"
-#: fe-exec.c:3087
-msgid "cannot send pipeline when not in pipeline mode\n"
-msgstr "неможливо скористатися конвеєром не у режимі конвеєра\n"
+#: fe-exec.c:3175
+#, c-format
+msgid "cannot send pipeline when not in pipeline mode"
+msgstr "неможливо скористатися конвеєром не у режимі конвеєра"
-#: fe-exec.c:3189
+#: fe-exec.c:3284
msgid "invalid ExecStatusType code"
msgstr "неприпустимий код ExecStatusType"
-#: fe-exec.c:3216
+#: fe-exec.c:3311
msgid "PGresult is not an error result\n"
msgstr "PGresult не є помилковим результатом\n"
-#: fe-exec.c:3284 fe-exec.c:3307
+#: fe-exec.c:3379 fe-exec.c:3402
#, c-format
msgid "column number %d is out of range 0..%d"
msgstr "число стовпців %d поза діапазоном 0..%d"
-#: fe-exec.c:3322
+#: fe-exec.c:3417
#, c-format
msgid "parameter number %d is out of range 0..%d"
msgstr "число параметрів %d поза діапазоном 0..%d"
-#: fe-exec.c:3632
+#: fe-exec.c:3728
#, c-format
msgid "could not interpret result from server: %s"
msgstr "не вдалося інтерпретувати результат від сервера: %s"
-#: fe-exec.c:3892 fe-exec.c:3981
-msgid "incomplete multibyte character\n"
-msgstr "неповний мультибайтний символ\n"
+#: fe-exec.c:3993 fe-exec.c:4083
+#, c-format
+msgid "incomplete multibyte character"
+msgstr "неповний мультибайтний символ"
-#: fe-gssapi-common.c:124
+#: fe-gssapi-common.c:122
msgid "GSSAPI name import error"
msgstr "Помилка імпорту імені у GSSAPI"
-#: fe-lobj.c:145 fe-lobj.c:210 fe-lobj.c:403 fe-lobj.c:494 fe-lobj.c:568
-#: fe-lobj.c:969 fe-lobj.c:977 fe-lobj.c:985 fe-lobj.c:993 fe-lobj.c:1001
-#: fe-lobj.c:1009 fe-lobj.c:1017 fe-lobj.c:1025
+#: fe-lobj.c:144 fe-lobj.c:207 fe-lobj.c:397 fe-lobj.c:487 fe-lobj.c:560
+#: fe-lobj.c:956 fe-lobj.c:963 fe-lobj.c:970 fe-lobj.c:977 fe-lobj.c:984
+#: fe-lobj.c:991 fe-lobj.c:998 fe-lobj.c:1005
#, c-format
-msgid "cannot determine OID of function %s\n"
-msgstr "неможливо визначити ідентифікатор OID функції %s\n"
+msgid "cannot determine OID of function %s"
+msgstr "неможливо визначити ідентифікатор OID функції %s"
-#: fe-lobj.c:162
-msgid "argument of lo_truncate exceeds integer range\n"
-msgstr "аргумент lo_truncate перевищує діапазон цілого числа\n"
+#: fe-lobj.c:160
+#, c-format
+msgid "argument of lo_truncate exceeds integer range"
+msgstr "аргумент lo_truncate перевищує цілочисельний діапазон"
-#: fe-lobj.c:266
-msgid "argument of lo_read exceeds integer range\n"
-msgstr "аргумент lo_read перевищує діапазон цілого числа\n"
+#: fe-lobj.c:262
+#, c-format
+msgid "argument of lo_read exceeds integer range"
+msgstr "аргумент lo_read перевищує діапазон цілого числа"
-#: fe-lobj.c:318
-msgid "argument of lo_write exceeds integer range\n"
-msgstr "аргумент lo_write перевищує діапазон цілого числа\n"
+#: fe-lobj.c:313
+#, c-format
+msgid "argument of lo_write exceeds integer range"
+msgstr "аргумент lo_write перевищує діапазон цілого числа"
-#: fe-lobj.c:678 fe-lobj.c:789
+#: fe-lobj.c:669 fe-lobj.c:780
#, c-format
-msgid "could not open file \"%s\": %s\n"
-msgstr "не вдалося відкрити файл \"%s\": %s\n"
+msgid "could not open file \"%s\": %s"
+msgstr "не вдалося відкрити файл \"%s\": %s"
-#: fe-lobj.c:734
+#: fe-lobj.c:725
#, c-format
-msgid "could not read from file \"%s\": %s\n"
-msgstr "не вдалося прочитати з файлу \"%s\": %s\n"
+msgid "could not read from file \"%s\": %s"
+msgstr "не вдалося прочитати з файлу \"%s\": %s"
-#: fe-lobj.c:810 fe-lobj.c:834
+#: fe-lobj.c:801 fe-lobj.c:824
#, c-format
-msgid "could not write to file \"%s\": %s\n"
-msgstr "не вдалося записати у файл \"%s\": %s\n"
+msgid "could not write to file \"%s\": %s"
+msgstr "неможливо записати до файлу \"%s\": %s"
-#: fe-lobj.c:920
-msgid "query to initialize large object functions did not return data\n"
-msgstr "запит на ініціалізацію функцій для великих об’єктів не повернув дані\n"
+#: fe-lobj.c:908
+#, c-format
+msgid "query to initialize large object functions did not return data"
+msgstr "запит на ініціалізацію функцій для великих об’єктів не повернув дані"
-#: fe-misc.c:242
+#: fe-misc.c:240
#, c-format
msgid "integer of size %lu not supported by pqGetInt"
msgstr "pqGetInt не підтримує ціле число розміром %lu"
-#: fe-misc.c:275
+#: fe-misc.c:273
#, c-format
msgid "integer of size %lu not supported by pqPutInt"
msgstr "pqPutInt не підтримує ціле число розміром %lu"
-#: fe-misc.c:576 fe-misc.c:822
-msgid "connection not open\n"
-msgstr "підключення не відкрито\n"
+#: fe-misc.c:573
+#, c-format
+msgid "connection not open"
+msgstr "підключення не відкрито"
-#: fe-misc.c:755 fe-secure-openssl.c:209 fe-secure-openssl.c:316
-#: fe-secure.c:260 fe-secure.c:373
+#: fe-misc.c:751 fe-secure-openssl.c:210 fe-secure-openssl.c:316
+#: fe-secure.c:259 fe-secure.c:426
+#, c-format
msgid "server closed the connection unexpectedly\n"
"\tThis probably means the server terminated abnormally\n"
-"\tbefore or while processing the request.\n"
+"\tbefore or while processing the request."
msgstr "сервер неочікувано закрив підключення\n"
-" Це може означати, що сервер завершив роботу ненормально до або під час обробки запиту.\n"
+" Це може означати, що сервер завершив роботу ненормально до або під час обробки запиту."
+
+#: fe-misc.c:818
+msgid "connection not open\n"
+msgstr "підключення не відкрито\n"
-#: fe-misc.c:1015
-msgid "timeout expired\n"
-msgstr "тайм-аут минув\n"
+#: fe-misc.c:1003
+#, c-format
+msgid "timeout expired"
+msgstr "час очікування минув"
-#: fe-misc.c:1060
-msgid "invalid socket\n"
-msgstr "неприпустимий сокет\n"
+#: fe-misc.c:1047
+#, c-format
+msgid "invalid socket"
+msgstr "неприпустимий сокет"
-#: fe-misc.c:1083
+#: fe-misc.c:1069
#, c-format
-msgid "%s() failed: %s\n"
-msgstr "%s() помилка: %s\n"
+msgid "%s() failed: %s"
+msgstr "%s() помилка: %s"
-#: fe-protocol3.c:196
+#: fe-protocol3.c:182
#, c-format
msgid "message type 0x%02x arrived from server while idle"
msgstr "отримано тип повідомлення 0x%02x від сервера під час бездіяльності"
-#: fe-protocol3.c:403
-msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n"
-msgstr "сервер передав дані (повідомлення \"D\") без попереднього опису рядка (повідомлення \"T\")\n"
+#: fe-protocol3.c:380
+#, c-format
+msgid "server sent data (\"D\" message) without prior row description (\"T\" message)"
+msgstr "сервер передав дані (повідомлення \"D\") без попереднього опису рядка (повідомлення \"T\")"
-#: fe-protocol3.c:446
+#: fe-protocol3.c:422
#, c-format
-msgid "unexpected response from server; first received character was \"%c\"\n"
-msgstr "неочікувана відповідь від сервера; перший отриманий символ був \"%c\"\n"
+msgid "unexpected response from server; first received character was \"%c\""
+msgstr "неочікувана відповідь від сервера; перший отриманий символ був \"%c\""
-#: fe-protocol3.c:471
+#: fe-protocol3.c:445
#, c-format
-msgid "message contents do not agree with length in message type \"%c\"\n"
-msgstr "вміст повідомлення не відповідає довжині у типі повідомлення \"%c\"\n"
+msgid "message contents do not agree with length in message type \"%c\""
+msgstr "вміст повідомлення не відповідає довжині у типі повідомлення \"%c\""
-#: fe-protocol3.c:491
+#: fe-protocol3.c:463
#, c-format
-msgid "lost synchronization with server: got message type \"%c\", length %d\n"
-msgstr "втрачено синхронізацію з сервером: отримано тип повідомлення \"%c\", довжина %d\n"
+msgid "lost synchronization with server: got message type \"%c\", length %d"
+msgstr "втрачено синхронізацію з сервером: отримано тип повідомлення \"%c\", довжина %d"
-#: fe-protocol3.c:543 fe-protocol3.c:583
+#: fe-protocol3.c:515 fe-protocol3.c:555
msgid "insufficient data in \"T\" message"
msgstr "недостатньо даних у повідомленні \"T\""
-#: fe-protocol3.c:654 fe-protocol3.c:860
+#: fe-protocol3.c:626 fe-protocol3.c:832
msgid "out of memory for query result"
msgstr "недостатньо пам'яті для результату запиту"
-#: fe-protocol3.c:723
+#: fe-protocol3.c:695
msgid "insufficient data in \"t\" message"
msgstr "недостатньо даних у повідомленні \"t\""
-#: fe-protocol3.c:782 fe-protocol3.c:814 fe-protocol3.c:832
+#: fe-protocol3.c:754 fe-protocol3.c:786 fe-protocol3.c:804
msgid "insufficient data in \"D\" message"
msgstr "зайві дані у повідомленні \"D\""
-#: fe-protocol3.c:788
+#: fe-protocol3.c:760
msgid "unexpected field count in \"D\" message"
msgstr "неочікувана кількість полів у повідомленні \"D\""
-#: fe-protocol3.c:1036
+#: fe-protocol3.c:1015
msgid "no error message available\n"
msgstr "немає доступного повідомлення про помилку\n"
#. translator: %s represents a digit string
-#: fe-protocol3.c:1084 fe-protocol3.c:1103
+#: fe-protocol3.c:1063 fe-protocol3.c:1082
#, c-format
msgid " at character %s"
msgstr " в символі %s"
-#: fe-protocol3.c:1116
+#: fe-protocol3.c:1095
#, c-format
msgid "DETAIL: %s\n"
msgstr "ДЕТАЛІ: %s\n"
-#: fe-protocol3.c:1119
+#: fe-protocol3.c:1098
#, c-format
msgid "HINT: %s\n"
msgstr "ПІДКАЗКА: %s\n"
-#: fe-protocol3.c:1122
+#: fe-protocol3.c:1101
#, c-format
msgid "QUERY: %s\n"
msgstr "ЗАПИТ: %s\n"
-#: fe-protocol3.c:1129
+#: fe-protocol3.c:1108
#, c-format
msgid "CONTEXT: %s\n"
msgstr "КОНТЕКСТ: %s\n"
-#: fe-protocol3.c:1138
+#: fe-protocol3.c:1117
#, c-format
msgid "SCHEMA NAME: %s\n"
msgstr "ІМ'Я СХЕМИ: %s\n"
-#: fe-protocol3.c:1142
+#: fe-protocol3.c:1121
#, c-format
msgid "TABLE NAME: %s\n"
msgstr "ІМ'Я ТАБЛИЦІ: %s\n"
-#: fe-protocol3.c:1146
+#: fe-protocol3.c:1125
#, c-format
msgid "COLUMN NAME: %s\n"
msgstr "ІМ'Я СТОВПЦЯ: %s\n"
-#: fe-protocol3.c:1150
+#: fe-protocol3.c:1129
#, c-format
msgid "DATATYPE NAME: %s\n"
msgstr "ІМ'Я ТИПУ ДАНИХ: %s\n"
-#: fe-protocol3.c:1154
+#: fe-protocol3.c:1133
#, c-format
msgid "CONSTRAINT NAME: %s\n"
msgstr "ІМ'Я ОБМЕЖЕННЯ: %s\n"
-#: fe-protocol3.c:1166
+#: fe-protocol3.c:1145
msgid "LOCATION: "
msgstr "РОЗТАШУВАННЯ: "
-#: fe-protocol3.c:1168
+#: fe-protocol3.c:1147
#, c-format
msgid "%s, "
msgstr "%s, "
-#: fe-protocol3.c:1170
+#: fe-protocol3.c:1149
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: fe-protocol3.c:1365
+#: fe-protocol3.c:1344
#, c-format
msgid "LINE %d: "
msgstr "РЯДОК %d: "
-#: fe-protocol3.c:1764
-msgid "PQgetline: not doing text COPY OUT\n"
-msgstr "PQgetline можна викликати лише під час COPY OUT\n"
+#: fe-protocol3.c:1418
+#, c-format
+msgid "protocol version not supported by server: client uses %u.%u, server supports up to %u.%u"
+msgstr "Версія протоколу не підтримується сервером: клієнт використовує %u.%u, сервер підтримує %u.%u"
-#: fe-protocol3.c:2130
+#: fe-protocol3.c:1424
#, c-format
-msgid "protocol error: id=0x%x\n"
-msgstr "помилка протоколу: id=0x%x\n"
+msgid "protocol extension not supported by server: %s"
+msgid_plural "protocol extensions not supported by server: %s"
+msgstr[0] "розширення протоколу не підтримується сервером: %s"
+msgstr[1] "розширення протоколів не підтримується сервером: %s"
+msgstr[2] "розширення протоколів не підтримується сервером: %s"
+msgstr[3] "розширення протоколів не підтримується сервером: %s"
-#: fe-secure-common.c:124
-msgid "SSL certificate's name contains embedded null\n"
-msgstr "Ім'я сертифікату SSL містить вбудоване Null-значення\n"
+#: fe-protocol3.c:1432
+#, c-format
+msgid "invalid %s message"
+msgstr "неприпустиме %s повідомлення"
-#: fe-secure-common.c:171
-msgid "host name must be specified for a verified SSL connection\n"
-msgstr "має бути вказано ім'я хосту для перевіреного SSL підключення\n"
+#: fe-protocol3.c:1797
+#, c-format
+msgid "PQgetline: not doing text COPY OUT"
+msgstr "PQgetline: не викликати для текстового COPY OUT"
-#: fe-secure-common.c:196
+#: fe-protocol3.c:2171
#, c-format
-msgid "server certificate for \"%s\" does not match host name \"%s\"\n"
-msgstr "серверний сертифікат \"%s\" не співпадає з іменем хосту \"%s\"\n"
+msgid "protocol error: no function result"
+msgstr "помилка протоколу: результат функції відсутній"
-#: fe-secure-common.c:202
-msgid "could not get server's host name from server certificate\n"
-msgstr "не вдалося отримати ім'я хосту від серверного сертифікату\n"
+#: fe-protocol3.c:2182
+#, c-format
+msgid "protocol error: id=0x%x"
+msgstr "помилка протоколу: id=0x%x"
-#: fe-secure-gssapi.c:201
+#: fe-secure-common.c:123
+#, c-format
+msgid "SSL certificate's name contains embedded null"
+msgstr "Ім'я сертифікату SSL містить вбудоване Null-значення"
+
+#: fe-secure-common.c:228
+#, c-format
+msgid "certificate contains IP address with invalid length %zu"
+msgstr "сертифікат містить IP-адресу з недійсною довжиною %zu"
+
+#: fe-secure-common.c:237
+#, c-format
+msgid "could not convert certificate's IP address to string: %s"
+msgstr "не вдалося перетворити IP-адресу сертифікату у рядок: %s"
+
+#: fe-secure-common.c:269
+#, c-format
+msgid "host name must be specified for a verified SSL connection"
+msgstr "має бути вказано ім'я хосту для перевіреного SSL підключення"
+
+#: fe-secure-common.c:286
+#, c-format
+msgid "server certificate for \"%s\" (and %d other name) does not match host name \"%s\""
+msgid_plural "server certificate for \"%s\" (and %d other names) does not match host name \"%s\""
+msgstr[0] "серверний сертифікат \"%s\" (та %d інше ім'я) не співпадає з іменем хосту \"%s\""
+msgstr[1] "серверний сертифікат \"%s\" (та %d інших імені) не співпадає з іменем хосту \"%s\""
+msgstr[2] "серверний сертифікат \"%s\" (та %d інших імен) не співпадає з іменем хосту \"%s\""
+msgstr[3] "серверний сертифікат \"%s\" (та %d інших імен) не співпадає з іменем хосту \"%s\""
+
+#: fe-secure-common.c:294
+#, c-format
+msgid "server certificate for \"%s\" does not match host name \"%s\""
+msgstr "серверний сертифікат \"%s\" не співпадає з іменем хосту \"%s\""
+
+#: fe-secure-common.c:299
+#, c-format
+msgid "could not get server's host name from server certificate"
+msgstr "не вдалося отримати ім'я хосту від серверного сертифікату"
+
+#: fe-secure-gssapi.c:194
msgid "GSSAPI wrap error"
msgstr "помилка при згортанні GSSAPI"
-#: fe-secure-gssapi.c:209
-msgid "outgoing GSSAPI message would not use confidentiality\n"
-msgstr "вихідне повідомлення GSSAPI не буде використовувати конфіденційність\n"
+#: fe-secure-gssapi.c:201
+#, c-format
+msgid "outgoing GSSAPI message would not use confidentiality"
+msgstr "вихідне повідомлення GSSAPI не буде використовувати конфіденційність"
-#: fe-secure-gssapi.c:217
+#: fe-secure-gssapi.c:208
#, c-format
-msgid "client tried to send oversize GSSAPI packet (%zu > %zu)\n"
-msgstr "клієнт намагався відправити переповнений пакет GSSAPI: (%zu > %zu)\n"
+msgid "client tried to send oversize GSSAPI packet (%zu > %zu)"
+msgstr "клієнт намагався відправити переповнений пакет GSSAPI (%zu > %zu)"
-#: fe-secure-gssapi.c:354 fe-secure-gssapi.c:596
+#: fe-secure-gssapi.c:347 fe-secure-gssapi.c:589
#, c-format
-msgid "oversize GSSAPI packet sent by the server (%zu > %zu)\n"
-msgstr "переповнений пакет GSSAPI відправлений сервером: (%zu > %zu)\n"
+msgid "oversize GSSAPI packet sent by the server (%zu > %zu)"
+msgstr "переповнений пакет GSSAPI відправлений сервером (%zu > %zu)"
-#: fe-secure-gssapi.c:393
+#: fe-secure-gssapi.c:386
msgid "GSSAPI unwrap error"
msgstr "помилка при розгортанні GSSAPI"
-#: fe-secure-gssapi.c:403
-msgid "incoming GSSAPI message did not use confidentiality\n"
-msgstr "вхідне повідомлення GSSAPI не використовувало конфіденційність\n"
+#: fe-secure-gssapi.c:395
+#, c-format
+msgid "incoming GSSAPI message did not use confidentiality"
+msgstr "вхідне повідомлення GSSAPI не використовувало конфіденційність"
-#: fe-secure-gssapi.c:642
+#: fe-secure-gssapi.c:652
msgid "could not initiate GSSAPI security context"
msgstr "не вдалося ініціювати контекст безпеки GSSAPI"
-#: fe-secure-gssapi.c:670
+#: fe-secure-gssapi.c:681
msgid "GSSAPI size check error"
msgstr "помилка перевірки розміру GSSAPI"
-#: fe-secure-gssapi.c:681
+#: fe-secure-gssapi.c:692
msgid "GSSAPI context establishment error"
msgstr "помилка встановлення контексту GSSAPI"
-#: fe-secure-openssl.c:214 fe-secure-openssl.c:321 fe-secure-openssl.c:1333
+#: fe-secure-openssl.c:214 fe-secure-openssl.c:320 fe-secure-openssl.c:1518
#, c-format
-msgid "SSL SYSCALL error: %s\n"
-msgstr "Помилка SSL SYSCALL: %s\n"
+msgid "SSL SYSCALL error: %s"
+msgstr "Помилка SSL SYSCALL: %s"
-#: fe-secure-openssl.c:221 fe-secure-openssl.c:328 fe-secure-openssl.c:1337
-msgid "SSL SYSCALL error: EOF detected\n"
-msgstr "Помилка SSL SYSCALL: виявлено EOF\n"
+#: fe-secure-openssl.c:220 fe-secure-openssl.c:326 fe-secure-openssl.c:1521
+#, c-format
+msgid "SSL SYSCALL error: EOF detected"
+msgstr "Помилка SSL SYSCALL: виявлено EOF"
-#: fe-secure-openssl.c:232 fe-secure-openssl.c:339 fe-secure-openssl.c:1346
+#: fe-secure-openssl.c:230 fe-secure-openssl.c:336 fe-secure-openssl.c:1529
#, c-format
-msgid "SSL error: %s\n"
-msgstr "Помилка SSL: %s\n"
+msgid "SSL error: %s"
+msgstr "Помилка SSL: %s"
-#: fe-secure-openssl.c:247 fe-secure-openssl.c:354
-msgid "SSL connection has been closed unexpectedly\n"
-msgstr "SSL підключення було неочікувано перервано\n"
+#: fe-secure-openssl.c:244 fe-secure-openssl.c:350
+#, c-format
+msgid "SSL connection has been closed unexpectedly"
+msgstr "SSL-з'єднання було несподівано перервано"
-#: fe-secure-openssl.c:253 fe-secure-openssl.c:360 fe-secure-openssl.c:1396
+#: fe-secure-openssl.c:249 fe-secure-openssl.c:355 fe-secure-openssl.c:1576
#, c-format
-msgid "unrecognized SSL error code: %d\n"
-msgstr "нерозпізнаний код помилки SSL: %d\n"
+msgid "unrecognized SSL error code: %d"
+msgstr "нерозпізнаний код помилки SSL: %d"
-#: fe-secure-openssl.c:400
-msgid "could not determine server certificate signature algorithm\n"
-msgstr "не вдалося визначити алгоритм підпису серверного сертифікату\n"
+#: fe-secure-openssl.c:398
+#, c-format
+msgid "could not determine server certificate signature algorithm"
+msgstr "не вдалося визначити алгоритм підпису сервера сертифіката"
-#: fe-secure-openssl.c:421
+#: fe-secure-openssl.c:418
#, c-format
-msgid "could not find digest for NID %s\n"
-msgstr "не вдалося знайти дайджест для NID %s\n"
+msgid "could not find digest for NID %s"
+msgstr "не вдалося знайти дайджест для NID %s"
-#: fe-secure-openssl.c:431
-msgid "could not generate peer certificate hash\n"
-msgstr "не вдалося згенерувати хеш сертифікату вузла\n"
+#: fe-secure-openssl.c:427
+#, c-format
+msgid "could not generate peer certificate hash"
+msgstr "не вдалося згенерувати хеш сертифікату вузла"
-#: fe-secure-openssl.c:488
-msgid "SSL certificate's name entry is missing\n"
-msgstr "Відсутня ім'я в сертифікаті SSL\n"
+#: fe-secure-openssl.c:510
+#, c-format
+msgid "SSL certificate's name entry is missing"
+msgstr "Відсутня ім'я в сертифікаті SSL"
-#: fe-secure-openssl.c:822
+#: fe-secure-openssl.c:544
#, c-format
-msgid "could not create SSL context: %s\n"
-msgstr "не вдалося створити контекст SSL: %s\n"
+msgid "SSL certificate's address entry is missing"
+msgstr "відсутній елемент адреси SSL-сертифікату"
-#: fe-secure-openssl.c:861
+#: fe-secure-openssl.c:946
#, c-format
-msgid "invalid value \"%s\" for minimum SSL protocol version\n"
-msgstr "неприпустиме значення \"%s\" для мінімальної версії протоколу SSL\n"
+msgid "could not create SSL context: %s"
+msgstr "не вдалося створити контекст SSL: %s"
-#: fe-secure-openssl.c:872
+#: fe-secure-openssl.c:988
#, c-format
-msgid "could not set minimum SSL protocol version: %s\n"
-msgstr "не вдалося встановити мінімальну версію протоколу SSL: %s\n"
+msgid "invalid value \"%s\" for minimum SSL protocol version"
+msgstr "неприпустиме значення \"%s\" для мінімальної версії протоколу SSL"
-#: fe-secure-openssl.c:890
+#: fe-secure-openssl.c:998
#, c-format
-msgid "invalid value \"%s\" for maximum SSL protocol version\n"
-msgstr "неприпустиме значення \"%s\" для максимальної версії протоколу SSL\n"
+msgid "could not set minimum SSL protocol version: %s"
+msgstr "не вдалося встановити мінімальну версію протоколу SSL: %s"
-#: fe-secure-openssl.c:901
+#: fe-secure-openssl.c:1014
#, c-format
-msgid "could not set maximum SSL protocol version: %s\n"
-msgstr "не вдалося встановити максимальну версію протоколу SSL: %s\n"
+msgid "invalid value \"%s\" for maximum SSL protocol version"
+msgstr "неприпустиме значення \"%s\" для максимальної версії протоколу SSL"
-#: fe-secure-openssl.c:937
+#: fe-secure-openssl.c:1024
#, c-format
-msgid "could not read root certificate file \"%s\": %s\n"
-msgstr "не вдалося прочитати файл кореневого сертифікату \"%s\": %s\n"
+msgid "could not set maximum SSL protocol version: %s"
+msgstr "не вдалося встановити максимальну версію протоколу SSL: %s"
-#: fe-secure-openssl.c:990
+#: fe-secure-openssl.c:1062
+#, c-format
+msgid "could not load system root certificate paths: %s"
+msgstr "не вдалося завантажити шляхи кореневого сертифікату системи: %s"
+
+#: fe-secure-openssl.c:1079
+#, c-format
+msgid "could not read root certificate file \"%s\": %s"
+msgstr "не вдалося прочитати файл кореневого сертифікату \"%s\": %s"
+
+#: fe-secure-openssl.c:1131
+#, c-format
msgid "could not get home directory to locate root certificate file\n"
-"Either provide the file or change sslmode to disable server certificate verification.\n"
+"Either provide the file, use the system's trusted roots with sslrootcert=system, or change sslmode to disable server certificate verification."
msgstr "не вдалося отримати домашній каталог, щоб знайти файл кореневого сертифікату\n"
-"Надайте файл або змініть sslmode, щоб вимкнути перевірку серверного сертифікату.\n"
+"Надайте файл, використайте системні кореневі за допомогою sslrootcert=system, або змініть sslmode, щоб вимкнути перевірку серверного сертифікату."
-#: fe-secure-openssl.c:994
+#: fe-secure-openssl.c:1134
#, c-format
msgid "root certificate file \"%s\" does not exist\n"
-"Either provide the file or change sslmode to disable server certificate verification.\n"
-msgstr "файлу кореневого сертифікату \"%s\" не існує\n"
-"Вкажіть повний шлях до файлу або вимкніть перевірку сертифікату сервера, змінивши sslmode.\n"
+"Either provide the file, use the system's trusted roots with sslrootcert=system, or change sslmode to disable server certificate verification."
+msgstr "файл кореневого сертифікату \"%s\" не існує\n"
+"Надайте файл, використайте системні кореневі за допомогою sslrootcert=system, або змініть sslmode, щоб вимкнути перевірку серверного сертифікату."
+
+#: fe-secure-openssl.c:1169
+#, c-format
+msgid "could not open certificate file \"%s\": %s"
+msgstr "не вдалося відкрити файл сертифікату \"%s\": %s"
+
+#: fe-secure-openssl.c:1187
+#, c-format
+msgid "could not read certificate file \"%s\": %s"
+msgstr "не вдалося прочитати файл сертифікату \"%s\": %s"
+
+#: fe-secure-openssl.c:1211
+#, c-format
+msgid "could not establish SSL connection: %s"
+msgstr "не вдалося встановити SSL-підключення: %s"
-#: fe-secure-openssl.c:1025
+#: fe-secure-openssl.c:1243
#, c-format
-msgid "could not open certificate file \"%s\": %s\n"
-msgstr "не вдалося відкрити файл сертифікату \"%s\": %s\n"
+msgid "could not set SSL Server Name Indication (SNI): %s"
+msgstr "не вдалося встановити позначку назви сервера SSL (SNI): %s"
-#: fe-secure-openssl.c:1044
+#: fe-secure-openssl.c:1286
#, c-format
-msgid "could not read certificate file \"%s\": %s\n"
-msgstr "не вдалося прочитати файл сертифікату \"%s\": %s\n"
+msgid "could not load SSL engine \"%s\": %s"
+msgstr "не вдалося завантажити модуль SSL \"%s\": %s"
-#: fe-secure-openssl.c:1069
+#: fe-secure-openssl.c:1297
#, c-format
-msgid "could not establish SSL connection: %s\n"
-msgstr "не вдалося встановити SSL-підключення: %s\n"
+msgid "could not initialize SSL engine \"%s\": %s"
+msgstr "не вдалося ініціалізувати модуль SSL \"%s\": %s"
-#: fe-secure-openssl.c:1103
+#: fe-secure-openssl.c:1312
#, c-format
-msgid "could not set SSL Server Name Indication (SNI): %s\n"
-msgstr "не вдалося встановити Індикацію Імені Сервера протокол SSL (SNI): %s\n"
+msgid "could not read private SSL key \"%s\" from engine \"%s\": %s"
+msgstr "не вдалося прочитати закритий ключ SSL \"%s\" з модуля \"%s\": %s"
-#: fe-secure-openssl.c:1149
+#: fe-secure-openssl.c:1325
#, c-format
-msgid "could not load SSL engine \"%s\": %s\n"
-msgstr "не вдалося завантажити модуль SSL \"%s\": %s\n"
+msgid "could not load private SSL key \"%s\" from engine \"%s\": %s"
+msgstr "не вдалося завантажити закритий ключ SSL \"%s\" з модуля \"%s\": %s"
-#: fe-secure-openssl.c:1161
+#: fe-secure-openssl.c:1362
#, c-format
-msgid "could not initialize SSL engine \"%s\": %s\n"
-msgstr "не вдалося ініціалізувати модуль SSL \"%s\": %s\n"
+msgid "certificate present, but not private key file \"%s\""
+msgstr "сертифікат присутній, але файл закритого ключа \"%s\" ні"
-#: fe-secure-openssl.c:1177
+#: fe-secure-openssl.c:1365
#, c-format
-msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n"
-msgstr "не вдалося прочитати закритий ключ SSL \"%s\" з модуля \"%s\": %s\n"
+msgid "could not stat private key file \"%s\": %m"
+msgstr "не вдалося отримати інформацію про файл закритого ключа\"%s\": %m"
-#: fe-secure-openssl.c:1191
+#: fe-secure-openssl.c:1373
#, c-format
-msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n"
-msgstr "не вдалося завантажити закритий ключ SSL \"%s\" з модуля \"%s\": %s\n"
+msgid "private key file \"%s\" is not a regular file"
+msgstr "файл закритого ключа \"%s\" не є звичайним"
-#: fe-secure-openssl.c:1228
+#: fe-secure-openssl.c:1406
#, c-format
-msgid "certificate present, but not private key file \"%s\"\n"
-msgstr "сертифікат присутній, але файл закритого ключа \"%s\" ні\n"
+msgid "private key file \"%s\" has group or world access; file must have permissions u=rw (0600) or less if owned by the current user, or permissions u=rw,g=r (0640) or less if owned by root"
+msgstr "файл закритого ключа \"%s\" має груповий або загальний доступ; файл повинен мати права u=rw (0600) або менше, якщо він належить поточному користувачу, або права u=rw,g=r (0640) або менше, якщо належить root"
-#: fe-secure-openssl.c:1236
+#: fe-secure-openssl.c:1430
#, c-format
-msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n"
-msgstr "файл закритого ключа \"%s\" має груповий або всесвітній доступ; права повинні бути u=rw (0600) або більш обмежені\n"
+msgid "could not load private key file \"%s\": %s"
+msgstr "не вдалось завантажити файл закритого ключа \"%s\": %s"
-#: fe-secure-openssl.c:1261
+#: fe-secure-openssl.c:1446
#, c-format
-msgid "could not load private key file \"%s\": %s\n"
-msgstr "не вдалося завантажити файл закритого ключа \"%s\": %s\n"
+msgid "certificate does not match private key file \"%s\": %s"
+msgstr "сертифікат не відповідає файлу закритого ключа \"%s\": %s"
-#: fe-secure-openssl.c:1279
+#: fe-secure-openssl.c:1515
#, c-format
-msgid "certificate does not match private key file \"%s\": %s\n"
-msgstr "сертифікат не відповідає файлу закритого ключа \"%s\": %s\n"
+msgid "SSL error: certificate verify failed: %s"
+msgstr "помилка SSL: помилка перевірки сертифіката %s"
-#: fe-secure-openssl.c:1379
+#: fe-secure-openssl.c:1560
#, c-format
-msgid "This may indicate that the server does not support any SSL protocol version between %s and %s.\n"
-msgstr "Це може вказувати, що сервер не підтримує жодної версії протоколу SSL між %s і %s.\n"
+msgid "This may indicate that the server does not support any SSL protocol version between %s and %s."
+msgstr "Це може вказувати, що сервер не підтримує жодної версії протоколу SSL між %s і %s."
-#: fe-secure-openssl.c:1415
+#: fe-secure-openssl.c:1593
#, c-format
-msgid "certificate could not be obtained: %s\n"
-msgstr "не вдалося отримати сертифікат: %s\n"
+msgid "certificate could not be obtained: %s"
+msgstr "не вдалося отримати сертифікат: %s"
-#: fe-secure-openssl.c:1521
+#: fe-secure-openssl.c:1698
#, c-format
msgid "no SSL error reported"
msgstr "немає повідомлення про помилку SSL"
-#: fe-secure-openssl.c:1530
+#: fe-secure-openssl.c:1707
#, c-format
msgid "SSL error code %lu"
msgstr "Код помилки SSL %lu"
-#: fe-secure-openssl.c:1777
+#: fe-secure-openssl.c:1997
#, c-format
msgid "WARNING: sslpassword truncated\n"
msgstr "ПОПЕРЕДЖЕННЯ: sslpassword скорочено\n"
-#: fe-secure.c:267
+#: fe-secure.c:270
#, c-format
-msgid "could not receive data from server: %s\n"
-msgstr "не вдалося отримати дані з серверу: %s\n"
+msgid "could not receive data from server: %s"
+msgstr "не вдалося отримати дані з серверу: %s"
-#: fe-secure.c:380
+#: fe-secure.c:441
#, c-format
-msgid "could not send data to server: %s\n"
-msgstr "не вдалося передати дані серверу: %s\n"
+msgid "could not send data to server: %s"
+msgstr "не вдалося передати дані серверу: %s"
-#: win32.c:314
+#: win32.c:310
#, c-format
msgid "unrecognized socket error: 0x%08X/%d"
msgstr "нерозпізнана помилка сокету: 0x%08X/%d"
diff --git a/src/interfaces/libpq/pthread-win32.c b/src/interfaces/libpq/pthread-win32.c
index 8e65637..bf8d76b 100644
--- a/src/interfaces/libpq/pthread-win32.c
+++ b/src/interfaces/libpq/pthread-win32.c
@@ -34,27 +34,33 @@ pthread_getspecific(pthread_key_t key)
int
pthread_mutex_init(pthread_mutex_t *mp, void *attr)
{
- *mp = (CRITICAL_SECTION *) malloc(sizeof(CRITICAL_SECTION));
- if (!*mp)
- return 1;
- InitializeCriticalSection(*mp);
+ mp->initstate = 0;
return 0;
}
int
pthread_mutex_lock(pthread_mutex_t *mp)
{
- if (!*mp)
- return 1;
- EnterCriticalSection(*mp);
+ /* Initialize the csection if not already done */
+ if (mp->initstate != 1)
+ {
+ LONG istate;
+
+ while ((istate = InterlockedExchange(&mp->initstate, 2)) == 2)
+ Sleep(0); /* wait, another thread is doing this */
+ if (istate != 1)
+ InitializeCriticalSection(&mp->csection);
+ InterlockedExchange(&mp->initstate, 1);
+ }
+ EnterCriticalSection(&mp->csection);
return 0;
}
int
pthread_mutex_unlock(pthread_mutex_t *mp)
{
- if (!*mp)
- return 1;
- LeaveCriticalSection(*mp);
+ if (mp->initstate != 1)
+ return EINVAL;
+ LeaveCriticalSection(&mp->csection);
return 0;
}