Diff for /embedaddon/libiconv/srclib/gettext.h between versions 1.1.1.1 and 1.1.1.3

version 1.1.1.1, 2012/02/21 22:57:48 version 1.1.1.3, 2021/03/17 13:38:46
Line 1 Line 1
 /* Convenience header for conditional use of GNU <libintl.h>.  /* Convenience header for conditional use of GNU <libintl.h>.
   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009 Free Software Foundation, Inc.   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2019 Free Software
    Foundation, Inc.
   
    This program is free software; you can redistribute it and/or modify     This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
Line 12 Line 13
    GNU General Public License for more details.     GNU General Public License for more details.
   
    You should have received a copy of the GNU General Public License along     You should have received a copy of the GNU General Public License along
   with this program; if not, write to the Free Software Foundation,   with this program; if not, see <https://www.gnu.org/licenses/>.  */
   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */ 
   
 #ifndef _LIBGETTEXT_H  #ifndef _LIBGETTEXT_H
 #define _LIBGETTEXT_H 1  #define _LIBGETTEXT_H 1
   
/* NLS can be disabled through the configure --disable-nls option.  *//* NLS can be disabled through the configure --disable-nls option
#if ENABLE_NLS   or through "#define ENABLE NLS 0" before including this file.  */
 #if defined ENABLE_NLS && ENABLE_NLS
   
 /* Get declarations of GNU message catalog functions.  */  /* Get declarations of GNU message catalog functions.  */
 # include <libintl.h>  # include <libintl.h>
Line 53 Line 54
    it now, to make later inclusions of <libintl.h> a NOP.  */     it now, to make later inclusions of <libintl.h> a NOP.  */
 #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)  #if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
 # include <cstdlib>  # include <cstdlib>
# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
 #  include <libintl.h>  #  include <libintl.h>
 # endif  # endif
 #endif  #endif
Line 80 Line 81
     ((void) (Domainname), ngettext (Msgid1, Msgid2, N))      ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
 # undef dcngettext  # undef dcngettext
 # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \  # define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
    ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))    ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N))
 # undef textdomain  # undef textdomain
 # define textdomain(Domainname) ((const char *) (Domainname))  # define textdomain(Domainname) ((const char *) (Domainname))
 # undef bindtextdomain  # undef bindtextdomain
Line 92 Line 93
   
 #endif  #endif
   
   /* Prefer gnulib's setlocale override over libintl's setlocale override.  */
   #ifdef GNULIB_defined_setlocale
   # undef setlocale
   # define setlocale rpl_setlocale
   #endif
   
 /* A pseudo function call that serves as a marker for the automated  /* A pseudo function call that serves as a marker for the automated
    extraction of messages, but does not call gettext().  The run-time     extraction of messages, but does not call gettext().  The run-time
    translation is done at a different place in the code.     translation is done at a different place in the code.
Line 140  inline Line 147  inline
 #endif  #endif
 static const char *  static const char *
 pgettext_aux (const char *domain,  pgettext_aux (const char *domain,
              const char *msg_ctxt_id, const char *msgid,              const char *msg_ctxt_id, const char *msgid,
              int category)              int category)
 {  {
   const char *translation = dcgettext (domain, msg_ctxt_id, category);    const char *translation = dcgettext (domain, msg_ctxt_id, category);
   if (translation == msg_ctxt_id)    if (translation == msg_ctxt_id)
Line 159  inline Line 166  inline
 #endif  #endif
 static const char *  static const char *
 npgettext_aux (const char *domain,  npgettext_aux (const char *domain,
               const char *msg_ctxt_id, const char *msgid,               const char *msg_ctxt_id, const char *msgid,
               const char *msgid_plural, unsigned long int n,               const char *msgid_plural, unsigned long int n,
               int category)               int category)
 {  {
   const char *translation =    const char *translation =
     dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);      dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
Line 177  npgettext_aux (const char *domain, Line 184  npgettext_aux (const char *domain,
   
 #include <string.h>  #include <string.h>
   
#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \/* GNULIB_NO_VLA can be defined to disable use of VLAs even if supported.
  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \   This relates to the -Wvla and -Wvla-larger-than warnings, enabled in
   /* || __STDC_VERSION__ >= 199901L */ )   the default GCC many warnings set.  This allows programs to disable use
    of VLAs, which may be unintended, or may be awkward to support portably,
    or may have security implications due to non-deterministic stack usage.  */
   
   #if (!defined GNULIB_NO_VLA \
        && (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
        /*  || (__STDC_VERSION__ == 199901L && !defined __HP_cc)
            || (__STDC_VERSION__ >= 201112L && !defined __STDC_NO_VLA__) */ ))
   # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1
   #else
   # define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0
   #endif
   
 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS  #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
 #include <stdlib.h>  #include <stdlib.h>
 #endif  #endif
Line 199  inline Line 217  inline
 #endif  #endif
 static const char *  static const char *
 dcpgettext_expr (const char *domain,  dcpgettext_expr (const char *domain,
                 const char *msgctxt, const char *msgid,                 const char *msgctxt, const char *msgid,
                 int category)                 int category)
 {  {
   size_t msgctxt_len = strlen (msgctxt) + 1;    size_t msgctxt_len = strlen (msgctxt) + 1;
   size_t msgid_len = strlen (msgid) + 1;    size_t msgid_len = strlen (msgid) + 1;
Line 216  dcpgettext_expr (const char *domain, Line 234  dcpgettext_expr (const char *domain,
   if (msg_ctxt_id != NULL)    if (msg_ctxt_id != NULL)
 #endif  #endif
     {      {
         int found_translation;
       memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);        memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
       msg_ctxt_id[msgctxt_len - 1] = '\004';        msg_ctxt_id[msgctxt_len - 1] = '\004';
       memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);        memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
       translation = dcgettext (domain, msg_ctxt_id, category);        translation = dcgettext (domain, msg_ctxt_id, category);
         found_translation = (translation != msg_ctxt_id);
 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS  #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
       if (msg_ctxt_id != buf)        if (msg_ctxt_id != buf)
        free (msg_ctxt_id);        free (msg_ctxt_id);
 #endif  #endif
      if (translation != msg_ctxt_id)      if (found_translation)
        return translation;        return translation;
     }      }
   return msgid;    return msgid;
 }  }
Line 244  inline Line 264  inline
 #endif  #endif
 static const char *  static const char *
 dcnpgettext_expr (const char *domain,  dcnpgettext_expr (const char *domain,
                  const char *msgctxt, const char *msgid,                  const char *msgctxt, const char *msgid,
                  const char *msgid_plural, unsigned long int n,                  const char *msgid_plural, unsigned long int n,
                  int category)                  int category)
 {  {
   size_t msgctxt_len = strlen (msgctxt) + 1;    size_t msgctxt_len = strlen (msgctxt) + 1;
   size_t msgid_len = strlen (msgid) + 1;    size_t msgid_len = strlen (msgid) + 1;
Line 262  dcnpgettext_expr (const char *domain, Line 282  dcnpgettext_expr (const char *domain,
   if (msg_ctxt_id != NULL)    if (msg_ctxt_id != NULL)
 #endif  #endif
     {      {
         int found_translation;
       memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);        memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
       msg_ctxt_id[msgctxt_len - 1] = '\004';        msg_ctxt_id[msgctxt_len - 1] = '\004';
       memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);        memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
       translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);        translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
         found_translation = !(translation == msg_ctxt_id || translation == msgid_plural);
 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS  #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
       if (msg_ctxt_id != buf)        if (msg_ctxt_id != buf)
        free (msg_ctxt_id);        free (msg_ctxt_id);
 #endif  #endif
      if (!(translation == msg_ctxt_id || translation == msgid_plural))      if (found_translation)
        return translation;        return translation;
     }      }
   return (n == 1 ? msgid : msgid_plural);    return (n == 1 ? msgid : msgid_plural);
 }  }

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>