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