📄 xsetlocale.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 + -