Chinaunix首页 | 论坛 | 博客

分类: LINUX

2011-10-11 15:39:28

wget可以使用用户设置文件".wgetrc"来读取很多设置,我们这里主要利用这个文件来是设置代理服务器 使用者用什么用户登录,那么什么用户主目录下的".wgetrc"文件就起作用。例如,"root"用户如果想使用".wgetrc"来设置代理服务 器,"/root/.wgetrc"就起作用。 
http-proxy = 111.111.111.111:8080   
ftp-proxy = 111.111.111.111:8080  
这两行的含义是,代理服务器IP地址为:111.111.111.111,端口号为:8080。第一行指定HTTP协议所使用的代理服务器,第二行指定FTP协议所使用的代理服务器。

 /* If the user did not specify a config, read the system wgetrc and ~/.wgetrc.      */
 如果注册进去后,用户不识别,那么就读~/.wgetrc文件自己写*/[code]
950   if (use_userconfig == false)
 951     initialize (); 1、____---------->
[/code][code]

1、_________------------>

 589 void
 590 initialize (void)
 591 {
 592   char *file, *env_sysrc;
 593   bool ok = true;
 594
 597   env_sysrc = getenv ("SYSTEM_WGETRC");  /*获得环境变量值*/
 598   if (env_sysrc && file_exists_p (env_sysrc)) /*判断文件是否存在*/
 599     ok &= run_wgetrc (env_sysrc);  /*判断是否为致命的错误*/
 600  601 #ifdef SYSTEM_WGETRC          /*如果存在这个文件*/
 602   else if (file_exists_p (SYSTEM_WGETRC))
 603     ok &= run_wgetrc (SYSTEM_WGETRC);  /*检查此文件中是否有fatal error*/
 604 #endif
 605  
 606 if (! ok)  /*如果返回为0,那么就说明其中有fatal error"*/
 608     {
 609       fprintf (stderr, _("\
 610 Parsing system wgetrc file failed, please check '%s'.           \
 611 Or specify a different file using --config\n"), SYSTEM_WGETRC);
 612       exit (2);  /*直接退出*/
 613     }
 614   /* Override it with your own, if one exists.  */
 615   file = wgetrc_file_name ();  /*如果没有,那么就自己写入文件2、________------>*/
 616   if (!file)
 617     return;
 620 #ifdef SYSTEM_WGETRC
 621   if (!strcmp (file, SYSTEM_WGETRC))
 622     {
 623       fprintf (stderr, _("\
 624 %s: Warning: Both system and user wgetrc point to %s.\n"),
 625                exec_name, quote (file));
 626     }
 627   else
 628 #endif
 629     ok &= run_wgetrc (file);
 630
 632   if (!ok)
 633     exit (2);
 634
 635   xfree (file);
 636   return;
 637 }
[/code][code]
2、___________---------------->
478 char *
 479 wgetrc_file_name (void)
 480 {
 481   char *file = wgetrc_env_file_name (); 3、__________------------>
 482   if (file && *file)
 483     return file;
 484
 485   file = wgetrc_user_file_name ();5、__________-------->/*如果环境变量不存在,就查找在$Home/.wgetrc"返回它的路径如果它存在*/
[/code][code]
3、_________------------->
428 char *
 429 wgetrc_env_file_name (void)
 430 {
 431   char *env = getenv ("WGETRC");  /*找到这个环境变量*/
 432   if (env && *env)
 433     {
 434       if (!file_exists_p (env))  /*如果此文件不存在*/
 435         {
 436           fprintf (stderr, _("%s: WGETRC points to %s, which doesn't exist.\n"),
 437                    exec_name, env);
 438           exit (1);  /*就直接退出*/
 439         }
 440       return xstrdup (env); /*4、__________---------->/*初始化一个等同大小空间,元素为不可修改元素*/
 441     }
 442   return NULL;
 443 }
4、_________------------>
112 void *
113 xmemdup (void const *p, size_t s)
114 {
115   return memcpy (xmalloc (s), p, s);
116 }
119
120 char *
121 xstrdup (char const *string)
122 {
123   return xmemdup (string, strlen (string) + 1);
124 }
[/code][code]
5、__________-------------->
447 char *
 448 wgetrc_user_file_name (void)
 449 {
 450   char *home;
 451   char *file = NULL;  
 452   /* If that failed, try $HOME/.wgetrc (or equivalent).  */
 453
 454 #ifdef __VMS
 455   file = "SYS$LOGIN:.wgetrc";  
 456 #else /* def __VMS */
 457   home = home_dir ();  /*6、____------>
 458   if (home)
 459     file = aprintf ("%s/.wgetrc", home);
 460   xfree_null (home);
 461 #endif /* def __VMS [else] */
 462
 463   if (!file)
 464     return NULL;
 465   if (!file_exists_p (file))
 466     {
 467       xfree (file);
 468       return NULL;
 469     }
 470   return file;
 471 }
[/code][code]
6、_________--------->
368 char *
 369 home_dir (void)
 370 {
 371   static char *buf = NULL;
 372   static char *home, *ret;
 373   int len;
 374
 375   if (!home)  
 376     {
 377       home = getenv ("HOME"); /*获得HOME的环境变量*/
 378       if (!home)
 379         {
 380 #if defined(MSDOS)  /*如果是MSDOS环境是不存在HOME的,此处略去。*/
  381           /* Under MSDOS, if $HOME isn't defined, use the directory where
 382              `wget.exe' resides.  */
 383           const char *_w32_get_argv0 (void); /* in libwatt.a/pcconfig.c */
 384           char *p;
 385
 386           buff = _w32_get_argv0 (); /*这个是在dos环境下的*/
 387
 388           p = strrchr (buf, '/');            /* djgpp */
 389           if (!p)
 390             p = strrchr (buf, '\\');          /* others */
  . . . . .  .
 402 #elif !defined(WINDOWS) /*略去*/
417   ret = home ? xstrdup (home) : NULL; /*如果home 存在就分配一个存储home的空间*/
 418   if (buf)  
 419     free (buf);
 420
 421   return ret;  /*返回*/
 422 }
阅读(1032) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~