分享

boa代码学习笔记1

 lchjczw 2012-12-26

鄙人很少写技术博客和笔记,因为感觉有点浪费时间,自己理解了就行了。殊不知,好记性不如烂笔头啊,在编程的过程中,我发现在做项目中,反复用到的知识其实很有限,而这些知识如果你过一段时间不用,会感觉的有些许模糊,而且如果重新研究的话,花的时间也不少。借此需要boa的机会,开始写自己的技术文章了。

  为什么要学boa?我正在开发的ios产品中(个人app应用,敬请期待),需要用到文件传输功能,而boa是嵌入式设备进行文件传输的首选。因此,我要把boa移植ios平台涉及到的问题、必须要理解的、改写的代码写出来,作为备忘。

首先,读README,我从中获取了几个有用的信息:

1,安装指导(installation instructions)在 docs/boa.txt 或者是 docs/boa.html中。

2,boa的官网是:http://www./,一看就很霸气。

其次,根据高手的建议(高手博客:

http://blog.csdn.net/tricky1997/article/details/6547367

),我们应该进入到src目录下,学习以下几个文件:

1,Makefile.in,根据这个文件,我们可以知道源文件的编译规则,和依赖关系。如果你基本不懂,那就这样吧,我也基本不懂,实在是要改这个文件的时候,咋再来研究。

2,boa_lexer.l,这种后缀名的文件还是第一次遇到,据查(百度),Lex是LEXical compiler的缩写,是Unix环境下非常著名的工具,主要功能是生成一个词法分析器(scanner)的C源码,描述规则采用正则表达式(regular expression)。描述词法分析器的文件*.l,经过lex编译后,生成一个lex.yy.c 的文件,然后由C编译器编译生成一个词法分析器。词法分析器,简单来说,其任务就是将输入的各种符号,转化成相应的标识符(token),转化后的标识符 很容易被后续阶段处理。

  这个文件的主要功能是:依次解析boa.conf和mime.types里的配置。由defines.h注释知,boa.conf位于defines.h中指定的SERVER_ROOT/conf文件夹下。SERVER_ROOT可以通过-c指定。mime.types由boa.conf指定,默认在/etc/mime.types下。文件中有一个全局变量file,file变量为0时,解析boa.conf。为1时,解析mime.types,同时BEGIN MIME。如果大于1了,重新解析boa.conf,BEGIN INITIAL,并file设为0。重新定义了yyerror()函数,用于语法解析过程中的错误处理。

  由以上,我们知道了boa的安装方法和编译的时候的一些依赖关系,感觉没什么具体作用,但是了解一下总是好的嘛。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多