1 votes

Échapper à un répertoire dans une liste semblable à $PATH

Je développe un wrapper pour LibGit2, la bibliothèque Git.
Et je rencontre un problème :

De nombreuses fonctions GIT acceptent des listes de chemins, c'est-à-dire, une chaîne de caractères
composée d'une série de chemins séparés par un jeton,
que LibGit2 met à ma disposition. Sur mon Linux, c'est deux-points (:).

Le problème survient lorsque je me pose la question :
que se passe-t-il si le chemin contient ce jeton ?

Est-il possible de l'échapper d'une certaine manière ? \: ou quelque chose comme ça ?
Sera-t-il pris en charge par défaut sur Windows ?

Je sais que ce n'est pas courant d'avoir un répertoire contenant un : dans son
nom, mais en tant que wrapper je dois être prêt pour ce cas.

1voto

James Mertz Points 390

Je n'ai pas vérifié libgit2, mais ni git ni divers utilisateurs de $PATH - tels que la fonction execvpe() de la Glibc et divers shells (dash, bash) - ne prennent en charge une forme d'échappement - si un nom de répertoire contient un :, il ne peut tout simplement pas être utilisé comme partie des variables d'environnement liées au chemin d'accès.

Sous Windows, le séparateur de chemin est ; - vous devriez pouvoir utiliser PATH_SEP ou une constante similaire pour trouver la valeur - et encore une fois, l'échappement n'est pas pris en charge n'importe où.

Si l'utilisateur vous donne un chemin comme /usr/foo:bar, alors il peut s'attendre à ce qu'il soit divisé en deux répertoires, alors faites simplement cela.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X