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>