Annotation of embedaddon/lrzsz/intl/textdomain.c, revision 1.1

1.1     ! misho       1: /* Implementation of the textdomain(3) function
        !             2:    Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
        !             3:    Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
        !             4: 
        !             5:    This program is free software; you can redistribute it and/or modify
        !             6:    it under the terms of the GNU General Public License as published by
        !             7:    the Free Software Foundation; either version 2, or (at your option)
        !             8:    any later version.
        !             9: 
        !            10:    This program is distributed in the hope that it will be useful,
        !            11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            13:    GNU General Public License for more details.
        !            14: 
        !            15:    You should have received a copy of the GNU General Public License
        !            16:    along with this program; if not, write to the Free Software Foundation,
        !            17:    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
        !            18: 
        !            19: #ifdef HAVE_CONFIG_H
        !            20: # include <config.h>
        !            21: #endif
        !            22: 
        !            23: #if defined STDC_HEADERS || defined _LIBC
        !            24: # include <stdlib.h>
        !            25: #endif
        !            26: 
        !            27: #if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
        !            28: # include <string.h>
        !            29: #else
        !            30: # include <strings.h>
        !            31: # ifndef memcpy
        !            32: #  define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
        !            33: # endif
        !            34: #endif
        !            35: 
        !            36: #ifdef _LIBC
        !            37: # include <libintl.h>
        !            38: #else
        !            39: # include "libgettext.h"
        !            40: #endif
        !            41: 
        !            42: /* @@ end of prolog @@ */
        !            43: 
        !            44: /* Name of the default text domain.  */
        !            45: extern const char _nl_default_default_domain[];
        !            46: 
        !            47: /* Default text domain in which entries for gettext(3) are to be found.  */
        !            48: extern const char *_nl_current_default_domain;
        !            49: 
        !            50: 
        !            51: /* Names for the libintl functions are a problem.  They must not clash
        !            52:    with existing names and they should follow ANSI C.  But this source
        !            53:    code is also used in GNU C Library where the names have a __
        !            54:    prefix.  So we have to make a difference here.  */
        !            55: #ifdef _LIBC
        !            56: # define TEXTDOMAIN __textdomain
        !            57: # define strdup(str) __strdup (str)
        !            58: #else
        !            59: # define TEXTDOMAIN textdomain__
        !            60: #endif
        !            61: 
        !            62: /* Set the current default message catalog to DOMAINNAME.
        !            63:    If DOMAINNAME is null, return the current default.
        !            64:    If DOMAINNAME is "", reset to the default of "messages".  */
        !            65: char *
        !            66: TEXTDOMAIN (domainname)
        !            67:      const char *domainname;
        !            68: {
        !            69:   char *old;
        !            70: 
        !            71:   /* A NULL pointer requests the current setting.  */
        !            72:   if (domainname == NULL)
        !            73:     return (char *) _nl_current_default_domain;
        !            74: 
        !            75:   old = (char *) _nl_current_default_domain;
        !            76: 
        !            77:   /* If domain name is the null string set to default domain "messages".  */
        !            78:   if (domainname[0] == '\0'
        !            79:       || strcmp (domainname, _nl_default_default_domain) == 0)
        !            80:     _nl_current_default_domain = _nl_default_default_domain;
        !            81:   else
        !            82:     {
        !            83:       /* If the following malloc fails `_nl_current_default_domain'
        !            84:         will be NULL.  This value will be returned and so signals we
        !            85:         are out of core.  */
        !            86: #if defined _LIBC || defined HAVE_STRDUP
        !            87:       _nl_current_default_domain = strdup (domainname);
        !            88: #else
        !            89:       size_t len = strlen (domainname) + 1;
        !            90:       char *cp = (char *) malloc (len);
        !            91:       if (cp != NULL)
        !            92:        memcpy (cp, domainname, len);
        !            93:       _nl_current_default_domain = cp;
        !            94: #endif
        !            95:     }
        !            96: 
        !            97:   if (old != _nl_default_default_domain)
        !            98:     free (old);
        !            99: 
        !           100:   return (char *) _nl_current_default_domain;
        !           101: }
        !           102: 
        !           103: #ifdef _LIBC
        !           104: /* Alias for function name in GNU C Library.  */
        !           105: weak_alias (__textdomain, textdomain);
        !           106: #endif

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