探寻Locale原理“/usr/src/lib/libc/locale/setl…
2009-05-13 02:01:05来源:未知 阅读 ()
1、一个重要的字符指针数组:
/*
* Category names for getenv()
*/
static char *categories[_LC_LAST] = {
"LC_ALL",
"LC_COLLATE",
"LC_CTYPE",
"LC_MONETARY",
"LC_NUMERIC",
"LC_TIME",
"LC_MESSAGES",
};
2、初始化,上面的那些Locale种类都设置成“C"
/*
* Current locales for each category
*/
static char current_categories[_LC_LAST][ENCODING_LEN + 1] = {
"C",
"C",
"C",
"C",
"C",
"C",
"C",
};
3、一些函数声明和变量的定义:
/*
* Path to locale storage directory
*/
char *_PathLocale; //用来保存Locale的目录
/*
* The locales we are going to try and load
*/
static char new_categories[_LC_LAST][ENCODING_LEN + 1];
static char saved_categories[_LC_LAST][ENCODING_LEN + 1];
static char current_locale_string[_LC_LAST * (ENCODING_LEN + 1/*"/"*/ + 1)];
/*"/"*/ -----是个注释,表示里面要存放有“/”的目录名
static char *currentlocale(void); //获取locale
static char *loadlocale(int); //装载locale
static const char *__get_locale_env(int); //获得环境变量,明确locale的位置。
4、currentlocale 函数
static char * currentlocale()
{
int i;
(void)strcpy(current_locale_string,current_categories[1]);
for (i = 2; i
2006年1月29日更新:
一个非常重要的函数:setlocale(category, locale),用来设置locale.
大致的流程是:
1、进行参数检测
2、拷贝参数locale的值到new_categories
3、调用loadlocale(category)函数:
switch (category) {
case LC_CTYPE:
func = __wrap_setrunelocale;
break;
case LC_COLLATE:
func = __collate_load_tables;
break;
case LC_TIME:
func = __time_load_locale;
break;
case LC_NUMERIC:
func = __numeric_load_locale;
break;
case LC_MONETARY:
func = __monetary_load_locale;
break;
case LC_MESSAGES:
func = __messages_load_locale;
break;
每个Case都是一个函数调用,用来装载特定种类的locale
例如:LC_CTYPE的case,调用的函数是__wrap_setrunelocale,这个函数的实现在同目录的setrunelocale.c文件中,用来读取对应的LC_CTYPE文件内容,针对选择的locale进行系统设置
在这个文件中,还包括两个函数:
static const char * __get_locale_env(category)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:nice mirror site
- FreeBSD Configure IPv6 Networking / Static IP Addr 2009-05-13
- apache之DSO原理 2009-05-13
- apache mod_rewrite - URL Rewriting 2009-05-13
- we provide the characteristics of services 2009-05-13
- 《操作系统原理与设计》 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