При написании модуля Apache, popen (svn) завершается неудачно со статусом завершения 256 - PullRequest
0 голосов
/ 18 декабря 2009

Я бы хотел написать браузер 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. Это было видно в конце браузера.

1 Ответ

2 голосов
/ 18 декабря 2009

Просто предположение: Возможно, svn cat в URL заставляет svn запросить имя пользователя / пароль?

Когда вы создали скрипт bash, перенаправили ли вы stderr в stdout, чтобы попытаться перехватить какие-либо сообщения об ошибках?

...