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 的路径名 (包括斜杠"/"或者 点".")
// & 转发 转发邮件的地址