locale中的几个数据结构(一)
2009-05-13 02:02:52来源:未知 阅读 ()
static char *categories[_LC_LAST] = {
"LC_ALL",
"LC_COLLATE",
"LC_CTYPE",
"LC_MONETARY",
"LC_NUMERIC",
"LC_TIME",
"LC_MESSAGES",
};
定义locale的种类,这些种类在locale配置文件中使用
static char current_categories[_LC_LAST][ENCODING_LEN + 1] = {
"C",
"C",
"C",
"C",
"C",
"C",
"C",
};
用来保存当前locale的每个种类的内容,初始化每个种类的值均为“C"
/usr/src/lib/libc/locale/locale.h
#define LC_ALL 0
#define LC_COLLATE 1
#define LC_CTYPE 2
#define LC_MONETARY 3
#define LC_NUMERIC 4
#define LC_TIME 5
#define LC_MESSAGES 6
#define _LC_LAST 7
char *_PathLocale; /* Path to locale storage directory*/
这个全局变量用来保存locale的存储目录,这个变量的值由下面的函数获得:
int __detect_path_locale(void)
{
if (_PathLocale == NULL) {
char *p = getenv("PATH_LOCALE");
if (p != NULL && !issetugid()) {
if (strlen(p) + 1/*"/"*/ + ENCODING_LEN +
1/*"/"*/ + CATEGORY_LEN >= PATH_MAX)
return (ENAMETOOLONG);
_PathLocale = strdup(p);
if (_PathLocale == NULL)
return (errno == 0 ? ENOMEM : errno);
} else
_PathLocale = _PATH_LOCALE;
}
return (0);
}
#define _PATH_LOCALE "/usr/share/locale"
获取当前的环境值:
static const char * __get_locale_env(category)
int category; /*category的数值代表locale的种类编号*/
{
const char *env;
/* 1. check LC_ALL. */
env = getenv(categories[0]);
/* 2. check LC_* */
if (env == NULL || !*env)
env = getenv(categories[category]);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:CGICC使用问题汇总
- DragonFly BSD 2.2.1发布 2009-05-13
- NetBSD笔记 2009-05-13
- adsl+openvpn的一些问题 2009-05-13
- freebsd6+openvpn+nat转发共享上网无痛设置 2009-05-13
- Electric shanghai massage adevice is difficult to 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash