diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c new file mode 100644 index 00000000000..701f52311c3 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c @@ -0,0 +1,136 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <basics.h> +#include <intl.h> + +char *sgettext(const char *msgid) { + const char *msgval = _(msgid); + char *found; + if (msgval == msgid) + if ( (found = strrchr (msgid, '|'))!=NULL ) + msgval = found+1; +return (char *) msgval; +} + +#if defined( HAVE_LIBINTL_H ) && !defined( NODYNAMIC ) && !defined ( _STATIC_LIBINTL ) +# include <dynamic.h> + +static DL_CONST void *libintl = NULL; + +static char *(*_bind_textdomain_codeset)(const char *, const char *); +static char *(*_bindtextdomain)(const char *, const char *); +static char *(*_textdomain)(const char *); +static char *(*_gettext)(const char *); +static char *(*_ngettext)(const char *, const char *, unsigned long int); +static char *(*_dgettext)(const char *, const char *); + +static int init_gettext(void) { + + if ( libintl == (void *) -1 ) +return( false ); + else if ( libintl !=NULL ) +return( true ); + + libintl = dlopen("libintl" SO_EXT,RTLD_LAZY); + if ( libintl==NULL ) { + libintl = (void *) -1; +return( false ); + } + + _bind_textdomain_codeset = (char *(*)(const char *, const char *)) dlsym(libintl,"bind_textdomain_codeset"); + _bindtextdomain = (char *(*)(const char *, const char *)) dlsym(libintl,"bindtextdomain"); + _textdomain = (char *(*)(const char *)) dlsym(libintl,"textdomain"); + _gettext = (char *(*)(const char *)) dlsym(libintl,"gettext"); + _ngettext = (char *(*)(const char *, const char *, unsigned long int)) dlsym(libintl,"ngettext"); + _dgettext = (char *(*)(const char *, const char *)) dlsym(libintl,"dgettext"); + + if ( _bind_textdomain_codeset==NULL || _bindtextdomain==NULL || + _textdomain==NULL || _gettext==NULL || _ngettext==NULL ) { + libintl = (void *) -1; + fprintf( stderr, "Found a copy of libintl but could not use it.\n" ); +return( false ); + } +return( true ); +} + +char *gwwv_bind_textdomain_codeset(const char *domain, const char *dir) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_bind_textdomain_codeset)(domain,dir)); + +return( NULL ); +} + +char *gwwv_bindtextdomain(const char *domain, const char *dir) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_bindtextdomain)(domain,dir)); + +return( NULL ); +} + +char *gwwv_textdomain(const char *domain) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_textdomain)(domain)); + +return( NULL ); +} + +char *gwwv_gettext(const char *msg) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_gettext)(msg)); + +return( (char *) msg ); +} + +char *gwwv_ngettext(const char *msg, const char *pmsg,unsigned long int n) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_ngettext)(msg,pmsg,n)); + +return( (char *) (n==1?msg:pmsg) ); +} + +char *gwwv_dgettext(const char *domain, const char *msg) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 && _dgettext!=NULL ) +return( (_dgettext)(domain,msg)); + +return( (char *) msg ); +} +#endif |