~ubuntu-branches/ubuntu/wily/xpenguins-applet/wily

« back to all changes in this revision

Viewing changes to intl/textdomain.c

  • Committer: Bazaar Package Importer
  • Author(s): Bas Zoetekouw
  • Date: 2001-07-21 16:59:06 UTC
  • Revision ID: james.westby@ubuntu.com-20010721165906-b3mgcd0blpwvud8d
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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.  */
 
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
# 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".  */
 
67
char *
 
68
TEXTDOMAIN (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.  */
 
107
weak_alias (__textdomain, textdomain);
 
108
#endif