qmail-local代码分析[9]

[入库:2005年9月21日] [更新:2007年3月24日]

本文简介:

 if (!stralloc_ready(&cmds,0)) temp_nomem();
 cmds.len = 0;
 if (fd != -1)
   if (slurpclose(fd,&cmds,256) == -1) temp_nomem();

 if (!cmds.len)/*如果fd文件中没有内容*/
  {
   if (!stralloc_copys(&cmds,aliasempty)) temp_nomem();
   flagforwardonly = 0;
  }
 if (!cmds.len || (cmds.s[cmds.len - 1] != '\n'))
   if (!stralloc_cats(&cmds,"\n")) temp_nomem();

 numforward = 0;/*检查有几行的第一个字符不是'#','.','/','|'*/
 i = 0;/*i为每行的开始位置*/
 for (j = 0;j < cmds.len;++j)
   if (cmds.s[j] == '\n')
    {
     switch(cmds.s[i]) { case '#':; case '.':; case '/':; case '|':; break;
       default:; ++numforward; }
     i = j + 1;
    }

 recips = (char **) alloc((numforward + 1) * sizeof(char *));
 if (!recips) temp_nomem();
 numforward = 0;

 flag99 = 0;

 i = 0;
 for (j = 0;j < cmds.len;++j)
   if (cmds.s[j] == '\n')
    {
     cmds.s[j] = 0;
     k = j;
     while ((k > i) && (cmds.s[k - 1] == ' ') || (cmds.s[k - 1] == '\t'))
       cmds.s[--k] = 0;
//        字符         传送类型                                                    值  
//         #           无 (注释)                                                 忽略 
//         |           程序                                                      由shell 执行的命令  
//       / 或者 .       mbox邮箱格式 (如果路径最后一个字符不是一个斜杠)              mbox 的路径名 (包括斜杠"/"或者 点".") 
//       / 或者 .       maildir邮箱格式 (如果路径最后一个字符是一个反斜杠)           maildir 的路径名 (包括斜杠"/"或者 点".")  
//         &           转发                                                      转发邮件的地址  

本文关键:qmail-local代码分析
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top