阅读cce源代码日记(FreeBSD)
2009-05-13 02:15:22来源:未知 阅读 ()
从main.c开始:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, const char *argv[])
{
int cfd,mode;
fprintf(stderr,"\r\nCCE> Console Chinese Environment "VERSION "\n");
if (geteuid() != 0)
{
fatal("Can't get I/O permissions. CCE needs suid-root.\n");
}
//下面的代码是打开/dev/vga设备,用ioctl获得信息
cfd = open("/dev/vga", O_WRONLY);
if (cfd
ioctl(cfd, KDGETMODE, &mode);
ioctl(cfd, VT_GETACTIVE, &VtNum);
close(cfd);
if (mode != KD_TEXT)
{
fatal("You can only start CCE on text console.\n");
}
//对cce启动命令行进行处理,包括命令参数格式的检查
ProcessArgs(argc-1, argv+1);
//term.c
TermInit(); //一些初始化,cce所需要使用的各种资源
if (ReadConfig(CONFIG_NAME)
fprintf(stderr, "CCE> error reading %s\n", CONFIG_NAME);
exit(EXIT_FAILURE);
}
//进行设置,然后启动一个循环,维持cce中文环境
TermStart();
return 0;
}
2月19日
/* Do initialization before reading config file */
void TermInit()
{
init.display = init.termio = FALSE;
text_mode = TRUE;
/* Initialize subsystems. */
CapInit();
ChildInit();
MouseInit();
InputInit();
FontInit();
KeymapInit();
VtInit();
ConsoleInit();
}
涉及到的数据结构:
(1)
struct initInfo
{
bool display; /* display initialized */
bool termio; /* termio saved */
};
static struct initInfo init;
(2)
text_mode,在Vc.c中设置的全局变量,初始为false
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:FreeBSD计划
- 转载文章-- Windows下不安装FreeBSD轻松得到FreeBSD内核源代 2009-05-13
- 问个比较傻的问题:老版本UNIX 都哪些能弄到源代码 2009-05-13
- OpenGL实用开源代码列表 2009-05-13
- 显示驱动的源代码有没有在系统中? 2009-05-13
- NetBSD-4.0 sys/arch/i386/stand/mbr/mbr.S 源代码分析 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