提交 a3b98a11 编写于 作者: M Michael Forney 提交者: Rich Felker

putgrent: Stop writing output on first failure

This way, if an fprintf fails, we get an incomplete group entry rather
than a corrupted one.
上级 b300d5b7
......@@ -6,9 +6,10 @@ int putgrent(const struct group *gr, FILE *f)
int r;
size_t i;
flockfile(f);
r = fprintf(f, "%s:%s:%d:", gr->gr_name, gr->gr_passwd, gr->gr_gid);
if ((r = fprintf(f, "%s:%s:%d:", gr->gr_name, gr->gr_passwd, gr->gr_gid))<0) goto done;
if (gr->gr_mem) for (i=0; gr->gr_mem[i]; i++)
if (fprintf(f, "%s%s", i?",":"", gr->gr_mem[i])<0) r = -1;
if ((r = fprintf(f, "%s%s", i?",":"", gr->gr_mem[i]))<0) goto done;
done:
funlockfile(f);
return r<0 ? -1 : 0;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册