Экранирование каталога в списке, подобном $ PATH

239
Alba Mendez

Я разрабатываю оболочку для LibGit2, библиотеки Git.
И у меня возникает проблема:

Многие функции GIT принимают списки путей, то есть строку,
состоящую из серии путей, разделенных токеном,
которые LibGit2 делает доступными для меня. В моем Linux это двоеточие ( :).

Проблема возникает, когда я спрашиваю меня:
что, если путь содержит этот токен?

Можно ли как-нибудь избежать этого? \:или так?
Будет ли он поддерживаться в Windows?

Я знаю, что нередко иметь каталог, содержащий :его
имя, но как обертка я должен быть готов к этому делу.

1

1 ответ на вопрос

1
grawity

Я не проверял libgit2, но ни git, ни различные $PATHпользователи - такие как execvpe()функция Glibc и различные оболочки ( dash, bash ) - не поддерживают какую-либо форму экранирования - если имя каталога содержит a :, его просто нельзя использовать как часть пути переменные среды.

В Windows разделитель пути ;- вы должны иметь возможность использовать PATH_SEPили подобную константу для поиска значения - и опять же, экранирование нигде не поддерживается.

Если пользователь дает вам такой путь /usr/foo:bar, то он может ожидать, что он будет разделен на две директории, поэтому просто сделайте это.

Хорошо знать. Спасибо за ваше время! Alba Mendez 11 лет назад 0