免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: duanjigang
打印 上一主题 下一主题

源码阅读第一期:axel和wget [复制链接]

论坛徽章:
0
201 [报告]
发表于 2011-10-13 22:21 |只看该作者
回复  duanjigang
我分析的是wget。

整理成pdf文档吧。
我尽量弄。
wangzhen11aaa 发表于 2011-10-13 18:43



    ,我丢人了。
没仔细读你帖子呢。
加油!

论坛徽章:
0
202 [报告]
发表于 2011-10-13 22:24 |只看该作者
再次请问版主一个问题,我想把debug打开,我是这样输入的    ./configure --debug=1

但是为什么不行嘞?
xbjpkpk 发表于 2011-10-13 21:49

  1. ./configure --help
复制代码
的提示看下。

论坛徽章:
0
203 [报告]
发表于 2011-10-13 22:25 |只看该作者
回复  duanjigang


    诶,没得看到上面的if,光看下面的switch了,谢了
xbjpkpk 发表于 2011-10-13 21:18



    不客气,呵呵

论坛徽章:
1
午马
日期:2013-09-10 11:03:08
204 [报告]
发表于 2011-10-13 22:30 |只看该作者
回复 202# duanjigang


--i18n=0/1      Disable/enable internationalization     1
--debug=0/1     Disable/enable debugging                1
--strip=0/1     Disable/enable binary stripping         1
这个就是他的提示,我去configure里面改成1了,想着能不能 在外面选项一样直接设置debug=1?

论坛徽章:
0
205 [报告]
发表于 2011-10-13 22:33 |只看该作者
第二期能不能把wget改点东西。肯定不简单吧。
这是wiki上的批评

    支持的协议较少,特别是cURL相比。 ...
wangzhen11aaa 发表于 2011-10-13 22:02



    是的,wget的介绍我没怎么看,昨天在curl的网站上看到那个比较图,curl支持的协议和特性确实很多。
如图:



另外关于你所说的改进或者修正wget和axel的源码,目前也是在考虑之中,不知道用什么样的方式好些。
是一期分析,一期实践呢。还是说别的方式,这个都需要大家献策献计。定来下后,我们及时展开。

论坛徽章:
0
206 [报告]
发表于 2011-10-13 22:45 |只看该作者
回复  duanjigang


--i18n=0/1      Disable/enable internationalization     1
--debug=0/1     Di ...
xbjpkpk 发表于 2011-10-13 22:30

  1. --with-debug=1
复制代码
呢?
俺在家,没环境。不好实践,搞不定的话,明天到公司俺看看啥情况

论坛徽章:
1
午马
日期:2013-09-10 11:03:08
207 [报告]
发表于 2011-10-13 22:56 |只看该作者
回复 206# duanjigang


    老乡啊,这个还是不行啊


[root@localhost axel-2.4]# ./configure --with-debug=1
The strip option is enabled. This should not be a problem usually, but on some
systems it breaks stuff.

Configuration done:
  Internationalization enabled.
  Debugging disabled.
  Binary stripping enabled.

论坛徽章:
0
208 [报告]
发表于 2011-10-13 23:19 |只看该作者
好!灰常的支持!

论坛徽章:
0
209 [报告]
发表于 2011-10-14 09:12 |只看该作者
回复 207# xbjpkpk


    我刚测试了下,没问题的

  1. ./configure --debug=1
  2. The strip option is enabled. This should not be a problem usually, but on some
  3. systems it breaks stuff.

  4. Stripping binaries does not make sense when debugging. Stripping disabled.

  5. Configuration done:
  6.   Internationalization enabled.
  7.   Debugging enabled.
  8.   Binary stripping disabled.
复制代码
然后看
config.h
里面有一行

  1. #define DEBUG
复制代码
说明 debug 宏确实定义了啊。

如果你写

  1. ./configure --debug=0
复制代码
在 config.h 中是看不到 DEBUG 宏的。

论坛徽章:
0
210 [报告]
发表于 2011-10-14 09:56 |只看该作者
总结:
现在才看出来远来真正函数入口地址在main.c 中。呵呵,谢谢版主的提醒,我原来还老觉得怎么真么少。
  我先说一下总体流程:wget程序实在是不小,应该是考虑很周密的原因。和其他程序一开始一样,都是要经过初始化的(在/src目录下也有其他的有main()入口,那是测试使用的,一般在上面都有这样类似的预定义:
35 #ifndef TESTING
36 #error "TESTING not set!!!"
37 #endif
)。
初始化:1、包括字符集的初始化;

2、程序一些默认参数的初始化;

3、对所能是使用命令行的初始化;

4、前面的单独的getopt_long是在用户选项之前找到注册文件,并解析;如果没有注册,那么就初始化;

5、后面的get_long是根据用户选项来设置命令,比如一个长选项 accept ,它会在前面加上—accept,然后这里是个解析用分隔符分开的元素,
用n个数组来指向有n-1 ','分隔符的字符串,然活用来分别设置。

6、下面是全部进行对初始化的options进行检查,必要的就设置,出错就打印错误;

7、下面是对sock_init(),因为下面会使用网络,先进行初始化;

8、如果详细监视opt.verbose的话,初始化一些程序起监督作用。

9、后面就是检查采用的什么类型的协议,比如ftp,或者http,然后从新写成http:// xxx. xxx.xxx.xxx格式,并保存在一个url数组里。

10、初始化日志文件。

11、初始化虚拟文件系统作为输出的目的地(如果VMS被定义)

12、设置信号量比如如果定义信号SIGNUP,那么就初始化这个信号函数,这是将输出信息打印到logfile中的重定向。

13、设置url及其接受到文件内容编码格式。

14、将url解析成 路径(path),端口(port),(主机名)(host),请求参数(query)等。

15、检索url地址,并用函数gethostbyname取得servent结构,通过函数retrive_url-> . . .-> gethttp()这里就是网路连接。其他类似。

17、最后选择是装载cookies.

18、打印失败的连接。

19、记录时间,并销毁计时器。

20、最后是清除前面分配东西,如果#ifdef DEBUG_MALLOC

评分

参与人数 1可用积分 +5 收起 理由
duanjigang + 5 谢谢分享

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP