Я бы хотел написать браузер 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" успешен. Однако я хотел бы иметь дело с возможно удаленными репозиториями для гибкости.
У вас есть предложения?
Edit:
коды выхода должны находиться в диапазоне 0-255. Этот явно нет. Что это говорит мне?
Edit2:
В качестве тестового примера я создал скрипт bash, который будет запускать требуемую команду SVN, а затем печатать возвращаемое значение. Ожидаемое поведение SVN не обнаружено, и сценарий напечатал «1» в качестве значения выхода для SVN. Это было видно в конце браузера.