Escapando de um diretório em uma lista semelhante a $ PATH

1

Estou desenvolvendo um wrapper para o LibGit2, a biblioteca do Git.
E eu saio com um problema:

Muitas funções do GIT aceitam listas de caminhos , isto é, uma cadeia de caracteres composto por uma série de caminhos separados por um token,
que o LibGit2 disponibiliza para mim. No meu Linux, é dois pontos ( : ).

O problema aparece quando eu pergunto:
e se o caminho contiver esse token?

Pode ser escapado de alguma forma? \: ou mais?
Será suportado imediatamente no Windows?

Eu sei que não é comum ter um diretório contendo : em seu grupo. nome, mas como um wrapper eu tenho que estar preparado para este caso.

    
por Alba Mendez 26.01.2013 / 11:06

1 resposta

1

Eu não chequei libgit2 , mas nem git nem vários $PATH usuários - como a função Glibc execvpe() e vários shells ( traço , bash ) - suporta qualquer forma de escape - se um nome de diretório contiver um : , ele simplesmente não poderá ser usado como parte de variáveis de ambiente relacionadas ao caminho.

No Windows, o separador de caminho é ; - você deve ser capaz de usar PATH_SEP ou uma constante semelhante para encontrar o valor - e, novamente, o escape não é suportado em lugar algum.

Se o usuário der a você um caminho como /usr/foo:bar , eles podem estar esperando que ele seja dividido em dois diretórios, então faça isso.

    
por 26.01.2013 / 11:37