diff options
| author | Lorenz Kästle <lorenz.kaestle@netways.de> | 2023-03-09 11:03:48 +0100 |
|---|---|---|
| committer | Lorenz Kästle <lorenz.kaestle@netways.de> | 2023-03-09 11:03:48 +0100 |
| commit | d0edb72a0c9bc1a28197ab4566928f7ee63a6d43 (patch) | |
| tree | 6d524fb16d2dd1aa9f2d98529ef1de7a39f52700 /gl/gettext.h | |
| parent | 9fdc82f0543c6e2891c7079f70297f92e8ef4619 (diff) | |
| parent | 269718094177fb8a7e3d3005d1310495009fe8c4 (diff) | |
| download | monitoring-plugins-d0edb72.tar.gz | |
Merge branch 'master' into RincewindsHat-patch-1
Diffstat (limited to 'gl/gettext.h')
| -rw-r--r-- | gl/gettext.h | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/gl/gettext.h b/gl/gettext.h index d0215715..d0462c47 100644 --- a/gl/gettext.h +++ b/gl/gettext.h | |||
| @@ -1,25 +1,26 @@ | |||
| 1 | /* Convenience header for conditional use of GNU <libintl.h>. | 1 | /* Convenience header for conditional use of GNU <libintl.h>. |
| 2 | Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2013 Free Software | 2 | Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2023 Free Software |
| 3 | Foundation, Inc. | 3 | Foundation, Inc. |
| 4 | 4 | ||
| 5 | This program is free software; you can redistribute it and/or modify | 5 | This file is free software: you can redistribute it and/or modify |
| 6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU Lesser General Public License as |
| 7 | the Free Software Foundation; either version 3, or (at your option) | 7 | published by the Free Software Foundation; either version 2.1 of the |
| 8 | any later version. | 8 | License, or (at your option) any later version. |
| 9 | 9 | ||
| 10 | This program is distributed in the hope that it will be useful, | 10 | This file is distributed in the hope that it will be useful, |
| 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 | GNU General Public License for more details. | 13 | GNU Lesser General Public License for more details. |
| 14 | 14 | ||
| 15 | You should have received a copy of the GNU General Public License along | 15 | You should have received a copy of the GNU Lesser General Public License |
| 16 | with this program; if not, see <http://www.gnu.org/licenses/>. */ | 16 | along with this program. If not, see <https://www.gnu.org/licenses/>. */ |
| 17 | 17 | ||
| 18 | #ifndef _LIBGETTEXT_H | 18 | #ifndef _LIBGETTEXT_H |
| 19 | #define _LIBGETTEXT_H 1 | 19 | #define _LIBGETTEXT_H 1 |
| 20 | 20 | ||
| 21 | /* NLS can be disabled through the configure --disable-nls option. */ | 21 | /* NLS can be disabled through the configure --disable-nls option |
| 22 | #if ENABLE_NLS | 22 | or through "#define ENABLE NLS 0" before including this file. */ |
| 23 | #if defined ENABLE_NLS && ENABLE_NLS | ||
| 23 | 24 | ||
| 24 | /* Get declarations of GNU message catalog functions. */ | 25 | /* Get declarations of GNU message catalog functions. */ |
| 25 | # include <libintl.h> | 26 | # include <libintl.h> |
| @@ -137,7 +138,7 @@ | |||
| 137 | #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ | 138 | #define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \ |
| 138 | npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) | 139 | npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category) |
| 139 | 140 | ||
| 140 | #ifdef __GNUC__ | 141 | #if defined __GNUC__ || defined __clang__ |
| 141 | __inline | 142 | __inline |
| 142 | #else | 143 | #else |
| 143 | #ifdef __cplusplus | 144 | #ifdef __cplusplus |
| @@ -156,7 +157,7 @@ pgettext_aux (const char *domain, | |||
| 156 | return translation; | 157 | return translation; |
| 157 | } | 158 | } |
| 158 | 159 | ||
| 159 | #ifdef __GNUC__ | 160 | #if defined __GNUC__ || defined __clang__ |
| 160 | __inline | 161 | __inline |
| 161 | #else | 162 | #else |
| 162 | #ifdef __cplusplus | 163 | #ifdef __cplusplus |
| @@ -183,8 +184,15 @@ npgettext_aux (const char *domain, | |||
| 183 | 184 | ||
| 184 | #include <string.h> | 185 | #include <string.h> |
| 185 | 186 | ||
| 186 | #if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \ | 187 | /* GNULIB_NO_VLA can be defined to disable use of VLAs even if supported. |
| 187 | /* || __STDC_VERSION__ >= 199901L */ ) | 188 | This relates to the -Wvla and -Wvla-larger-than warnings, enabled in |
| 189 | the default GCC many warnings set. This allows programs to disable use | ||
| 190 | of VLAs, which may be unintended, or may be awkward to support portably, | ||
| 191 | or may have security implications due to non-deterministic stack usage. */ | ||
| 192 | |||
| 193 | #if (!defined GNULIB_NO_VLA \ | ||
| 194 | && defined __STDC_VERSION__ && 199901L <= __STDC_VERSION__ \ | ||
| 195 | && !defined __STDC_NO_VLA__) | ||
| 188 | # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 | 196 | # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1 |
| 189 | #else | 197 | #else |
| 190 | # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 | 198 | # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0 |
| @@ -199,7 +207,7 @@ npgettext_aux (const char *domain, | |||
| 199 | #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ | 207 | #define dpgettext_expr(Domainname, Msgctxt, Msgid) \ |
| 200 | dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) | 208 | dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES) |
| 201 | 209 | ||
| 202 | #ifdef __GNUC__ | 210 | #if defined __GNUC__ || defined __clang__ |
| 203 | __inline | 211 | __inline |
| 204 | #else | 212 | #else |
| 205 | #ifdef __cplusplus | 213 | #ifdef __cplusplus |
| @@ -225,15 +233,17 @@ dcpgettext_expr (const char *domain, | |||
| 225 | if (msg_ctxt_id != NULL) | 233 | if (msg_ctxt_id != NULL) |
| 226 | #endif | 234 | #endif |
| 227 | { | 235 | { |
| 236 | int found_translation; | ||
| 228 | memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); | 237 | memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); |
| 229 | msg_ctxt_id[msgctxt_len - 1] = '\004'; | 238 | msg_ctxt_id[msgctxt_len - 1] = '\004'; |
| 230 | memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); | 239 | memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); |
| 231 | translation = dcgettext (domain, msg_ctxt_id, category); | 240 | translation = dcgettext (domain, msg_ctxt_id, category); |
| 241 | found_translation = (translation != msg_ctxt_id); | ||
| 232 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | 242 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS |
| 233 | if (msg_ctxt_id != buf) | 243 | if (msg_ctxt_id != buf) |
| 234 | free (msg_ctxt_id); | 244 | free (msg_ctxt_id); |
| 235 | #endif | 245 | #endif |
| 236 | if (translation != msg_ctxt_id) | 246 | if (found_translation) |
| 237 | return translation; | 247 | return translation; |
| 238 | } | 248 | } |
| 239 | return msgid; | 249 | return msgid; |
| @@ -244,7 +254,7 @@ dcpgettext_expr (const char *domain, | |||
| 244 | #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ | 254 | #define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \ |
| 245 | dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) | 255 | dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES) |
| 246 | 256 | ||
| 247 | #ifdef __GNUC__ | 257 | #if defined __GNUC__ || defined __clang__ |
| 248 | __inline | 258 | __inline |
| 249 | #else | 259 | #else |
| 250 | #ifdef __cplusplus | 260 | #ifdef __cplusplus |
| @@ -271,15 +281,17 @@ dcnpgettext_expr (const char *domain, | |||
| 271 | if (msg_ctxt_id != NULL) | 281 | if (msg_ctxt_id != NULL) |
| 272 | #endif | 282 | #endif |
| 273 | { | 283 | { |
| 284 | int found_translation; | ||
| 274 | memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); | 285 | memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1); |
| 275 | msg_ctxt_id[msgctxt_len - 1] = '\004'; | 286 | msg_ctxt_id[msgctxt_len - 1] = '\004'; |
| 276 | memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); | 287 | memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len); |
| 277 | translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); | 288 | translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category); |
| 289 | found_translation = !(translation == msg_ctxt_id || translation == msgid_plural); | ||
| 278 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS | 290 | #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS |
| 279 | if (msg_ctxt_id != buf) | 291 | if (msg_ctxt_id != buf) |
| 280 | free (msg_ctxt_id); | 292 | free (msg_ctxt_id); |
| 281 | #endif | 293 | #endif |
| 282 | if (!(translation == msg_ctxt_id || translation == msgid_plural)) | 294 | if (found_translation) |
| 283 | return translation; | 295 | return translation; |
| 284 | } | 296 | } |
| 285 | return (n == 1 ? msgid : msgid_plural); | 297 | return (n == 1 ? msgid : msgid_plural); |
