⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xsetlocale.c

📁 早期freebsd实现
💻 C
字号:
/* * $XConsortium: XSetLocale.c,v 1.33 92/04/22 11:48:46 rws Exp $ *//* * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation, *                      and Nippon Telegraph and Telephone Corporation * Copyright 1991 by the Massachusetts Institute of Technology * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the names of OMRON, NTT Software, NTT, and M.I.T. * not be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. OMRON, NTT Software, * NTT, and M.I.T. make no representations about the suitability of this * software for any purpose.  It is provided "as is" without express or * implied warranty. * * OMRON, NTT SOFTWARE, NTT, AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, NTT, OR M.I.T. BE * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * *	Authors: Li Yuhong		OMRON Corporation *		 Tetsuya Kato		NTT Software Corporation *		 Hiroshi Kuribayashi	OMRON Corporation *    */#include "Xlibint.h"#include "Xlcint.h"#include <X11/Xlocale.h>#include <X11/Xos.h>#ifdef X_LOCALE/* alternative setlocale() for when the OS does not provide one */#ifdef X_NOT_STDC_ENVextern char *getenv();#endif#define MAXLOCALE	64	/* buffer size of locale name */#if NeedFunctionPrototypeschar *_Xsetlocale(    int		  category,    _Xconst char *name)#elsechar *_Xsetlocale(category, name)    int		category;    char       *name;#endif{    static char *xsl_name;    char *old_name;    XrmMethods methods;    XPointer state;    if (category != LC_CTYPE && category != LC_ALL)	return NULL;    if (!name) {	if (xsl_name)	    return xsl_name;	return "C";    }    if (!*name)	name = getenv("LC_CTYPE");    if (!name || !*name)	name = getenv("LANG");    if (!name || !*name)	name = "C";    old_name = xsl_name;    xsl_name = (char *)name;    methods = _XrmInitParseInfo(&state);    xsl_name = old_name;    if (!methods)	return NULL;    name = (*methods->lcname)(state);    xsl_name = Xmalloc(strlen(name) + 1);    if (!xsl_name) {	xsl_name = old_name;	(*methods->destroy)(state);	return NULL;    }    strcpy(xsl_name, name);    if (old_name)	Xfree(old_name);    (*methods->destroy)(state);    return xsl_name;}#else /* X_LOCALE *//* * _XlcMapOSLocaleName is an implementation dependent routine that derives * the LC_CTYPE locale name as used in the sample implementation from that * returned by setlocale. */#ifdef hpuxchar *_XlcMapOSLocaleName(osname, siname)    char *osname;    char *siname;{    char *start;    char *end;    int   len;    start = index(osname, ':');    if (!start) {	strcpy(siname, osname);	return osname;    }    start++;    end = index(start, ';');    if (!end)	return osname;    len = end - start;    strncpy(siname, start, len);    siname[len] = '\0';    return siname;}#else /* hpux *//*ARGSUSED*/char *_XlcMapOSLocaleName(osname, siname)    char *osname;    char *siname;{    return osname;}#endif /* hpux */#endif  /* X_LOCALE */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -