source: branches/libc-0.6/src/binutils/intl/textdomain.c

Last change on this file was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 3.2 KB
Line 
1/* Implementation of the textdomain(3) function.
2 Copyright (C) 1995, 1996, 1997, 1998 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. */
45extern const char _nl_default_default_domain[];
46
47/* Default text domain in which entries for gettext(3) are to be found. */
48extern 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# ifndef strdup
58# define strdup(str) __strdup (str)
59# endif
60#else
61# define TEXTDOMAIN textdomain__
62#endif
63
64/* Set the current default message catalog to DOMAINNAME.
65 If DOMAINNAME is null, return the current default.
66 If DOMAINNAME is "", reset to the default of "messages". */
67char *
68TEXTDOMAIN (domainname)
69 const char *domainname;
70{
71 char *old;
72
73 /* A NULL pointer requests the current setting. */
74 if (domainname == NULL)
75 return (char *) _nl_current_default_domain;
76
77 old = (char *) _nl_current_default_domain;
78
79 /* If domain name is the null string set to default domain "messages". */
80 if (domainname[0] == '\0'
81 || strcmp (domainname, _nl_default_default_domain) == 0)
82 _nl_current_default_domain = _nl_default_default_domain;
83 else
84 {
85 /* If the following malloc fails `_nl_current_default_domain'
86 will be NULL. This value will be returned and so signals we
87 are out of core. */
88#if defined _LIBC || defined HAVE_STRDUP
89 _nl_current_default_domain = strdup (domainname);
90#else
91 size_t len = strlen (domainname) + 1;
92 char *cp = (char *) malloc (len);
93 if (cp != NULL)
94 memcpy (cp, domainname, len);
95 _nl_current_default_domain = cp;
96#endif
97 }
98
99 if (old != _nl_default_default_domain)
100 free (old);
101
102 return (char *) _nl_current_default_domain;
103}
104
105#ifdef _LIBC
106/* Alias for function name in GNU C Library. */
107weak_alias (__textdomain, textdomain);
108#endif
Note: See TracBrowser for help on using the repository browser.