Я бы хотел написать онлайн-браузер SVN-репозитория. Я решил реализовать его как модуль Apache, обернув вокруг клиента командной строки (пока). Как я начала работы, у меня есть следующий код:При написании модуля Apache popen (svn) терпит неудачу с состоянием завершения 256
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-work-copy» успешно выполнен. Однако я бы хотел иметь дело с возможными удаленными хранилищами для гибкости.
Есть ли у вас какие-либо предложения?
Редактировать: Коды выхода должны находиться в диапазоне 0-255. Этого, очевидно, нет. Что это говорит мне?
Редактировать 2: В качестве тестового примера я создал сценарий bash, который будет запускать требуемую команду SVN, а затем напечатать его возвращаемое значение. Ожидаемое поведение SVN не встречалось, и сценарий печатал «1» в качестве значения выхода для SVN. Это было видно в конце браузера.
перенаправление stderr - отличная идея. когда я напечатал его на stdout, я получил предупреждение об аутентификации, как и вы. Благодаря! –