WEB开发网
开发学院网络安全黑客技术 如何阅读源代码(2) 阅读

如何阅读源代码(2)

 2006-07-04 20:27:44 来源:WEB开发网   
核心提示: 这个函数删除了一个nlist(也可能是list所指向的那一个部分开始知道链表结尾),比较简单,如何阅读源代码(2)(4),看完了这两个内部函数,可以来看/*//* ADD_NLIST - add item to FIFO linked list *//*/int add_nlist(cha

这个函数删除了一个nlist(也可能是list所指向的那一个部分开始知道链表结尾),比较简单。看完了这两个内部函数,可以来看
/*********************************************/
/* ADD_NLIST - add item to FIFO linked list */
/*********************************************/
int add_nlist(char *str, NLISTPTR *list)
{
  NLISTPTR newptr,cptr,pptr;
if ( (newptr = new_nlist(str)) != NULL)
  {
  if (*list==NULL) *list=newptr;
  else
  {
   cptr=pptr=*list;
   while(cptr!=NULL) { pptr=cptr; cptr=cptr->next; };
   pptr->next = newptr;
  }
  }
  return newptr==NULL;
}

这个函数是建立了一个新的节点,把参数str赋值给新节点的string, 并把它连接到list所指向链表的结尾。另外的三个函数:new_glist(), del_glist(), add_glist()完成的功能和上述三个差不多,所不同的只是它们所处理的数据结构不同。看完了这几个函数,我们回到main程序。接下来是,
/* setup our internal variables */
  init_counters(); /* initalize main counters */

我们所阅读的这个软件是用来分析日志并且做出统计的,那么这个函数的名字已经告诉了我们,这是一个初始化计数器的函数。简略的看看吧!
$ grep init_counters *.h
webalizer.h:extern void init_counters();

在webalizer.c中找到:
void init_counters()
{
  int i;
  for (i=0;i_RC;i++) response[i].count = 0;
  for (i=0;i<31;i++) /* monthly totals */
  {
  tm_xfer[i]=0.0;
  tm_hit[i]=tm_file[i]=tm_site[i]=tm_page[i]=tm_visit[i]=0;
  }
  for (i=0;i<24;i++) /* hourly totals */
  {
  th_hit[i]=th_file[i]=th_page[i]=0;
  th_xfer[i]=0.0;
  }
......}

上一页  1 2 3 4 5  下一页

Tags:如何 阅读 源代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接