Chinaunix首页 | 论坛 | 博客
  • 博客访问: 301316
  • 博文数量: 94
  • 博客积分: 2163
  • 博客等级: 大尉
  • 技术积分: 932
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-20 09:23
文章存档

2012年(2)

2011年(92)

分类: LINUX

2011-09-30 11:15:31

[code]calltree -gb -np -m *.c |more[/code][code]
main [test.c:71]:
|   DEBUGP
|   HYPHENP
|   S_ISREG
|   _
|   _fileno
|   _setmode
|   all_tests [test.c:53]
|   |   mu_run_test
|   .......
[/code]这个all_tests实在是可怕,不停的检查。。。。。。应用程序是从main开始的,所以这就是全部程序的开始,由它不停的生长,直至吃掉所有文件的定义和函数。[code]
52 all_tests()
 53 {
 54   mu_run_test (test_parse_content_disposition); /*解析路径内容*/
 55   mu_run_test (test_subdir_p);
 56   mu_run_test (test_dir_matches_p);
 57   mu_run_test (test_commands_sorted);
 58   mu_run_test (test_cmd_spec_restrict_file_names);
 59   mu_run_test (test_path_simplify);
 60   mu_run_test (test_append_uri_pathel);
 61   mu_run_test (test_are_urls_equal);
 62   mu_run_test (test_is_robots_txt_url);
 63
 64   return NULL;
 65 }
[/code]test_parse_content_disposition( )_____------>______extract_param( ) /*解析网站路径。包括处理=前面的部分,和后面的。 */
分析路径时,用到数据结构[code]
typedef struct {
    /*A token consists of characters in the[b, e) range.: 此标记包含两部分的字符串*/
   const char *b, *e;  /*此指针指向的内容只读*/
}param_token;  
[/code]处理字符串时,使用了很有意思的一种用法,不得不说一下:
[code]   
/src/http.c
extract_param( )
{
 .......
 value->b = p;
 while( *p && *p != separator) ++p;
 value->e = p;
 while (value->e != value->b && c_isspace (value->e[-1]))
        --value->e;
    if (*p == separator) ++p;
.........}
这个e[-1]一开始认为可能是错误的用法,但是此处e是指针类型,e[-1]并不会出现越界,因为这是___________________________
_|____|___|___|____|____|___|____| 、e指向不是个数组,所以根据指针运算,此会取道e前面元素。
         e___|
后面的value只是消除separator(分隔符)。这就是前面主要名称,和提取的区别,以=号作为分隔*/
>----------------------------------<
阅读(1942) | 评论(0) | 转发(0) |
0

上一篇:分析 一般锁 (二)

下一篇:第二篇 (wget)

给主人留下些什么吧!~~