Annotation of embedaddon/lrzsz/intl/textdomain.c, revision 1.1.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>