我想写一个在线 SVN 存储库浏览器。我决定将它实现为一个 Apache 模块,围绕命令行客户端(暂时)。当我开始时,我有以下代码:
FILE *f;
f = popen("/usr/local/bin/svn cat http://myrepo/svn/shell.c", "r");
char buf[1025];
if (f) {
ap_rputs("open ok\n", r);
}
else {
ap_rputs("not open ok\n", r);
}
while (fgets(buf, 1024, f) != NULL) {
ap_rprintf(r,"%s<br />", buf );
}
ap_rprintf(r, "return: %d\n", pclose(f));
此命令失败,终止状态为 256。这对应于什么错误?我一直找不到这个文档。
成功打印出诸如“cat somefile”之类的简单调用。事实上,调用“svn info path-to-a-working-copy”是成功的。但是,为了灵活性,我想处理可能的远程存储库。
你有什么建议吗?
编辑:退出代码应在 0-255 范围内。这一个显然没有。这告诉我什么?
Edit2:作为一个测试用例,我创建了一个 bash 脚本,它将运行所需的 SVN 命令,然后打印它的返回值。未遇到预期的 SVN 行为,脚本打印“1”作为 SVN 的退出值。这在浏览器端可见。