Экранирование каталога в списке, подобном $PATH
Я разрабатываю оболочку для LibGit2, библиотеки Git.
И у меня возникает проблема:
Многие функции GIT принимают списки путей, то есть строку
состоит из ряда путей, разделенных токеном,
что LibGit2 делает доступным для меня. В моем Linux это двоеточие (:
).
Проблема появляется, когда я спрашиваю меня:
что если путь содержит этот токен?
Можно ли как-нибудь избежать этого? \:
или так?
Будет ли он поддерживаться в Windows?
Я знаю, что это не часто иметь каталог, содержащий :
в его
имя, но как обертка я должен быть готов к этому делу.
1 ответ
Я не проверял libgit2, но ни git, ни различные $PATH
пользователи - такие как Glibc execvpe()
функция и различные оболочки (dash, bash) - поддерживают любую форму экранирования - если имя каталога содержит :
, его просто нельзя использовать как часть переменных окружения, связанных с путями.
В Windows разделитель пути ;
- вы должны быть в состоянии использовать PATH_SEP
или подобная константа, чтобы найти значение - и опять же, экранирование нигде не поддерживается.
Если пользователь дает вам путь, как /usr/foo:bar
тогда они могут ожидать, что он будет разделен на две директории, так что просто сделайте это.