Ein Verzeichnis in einer $ PATH-ähnlichen Liste mit Escapezeichen versehen

352
Alba Mendez

Ich entwickle einen Wrapper für LibGit2, die Git-Bibliothek.
Und ich komme mit einem Problem heraus:

Viele GIT Funktionen akzeptieren Weg Listen, das heißt, eine Zeichenfolge
aus einer Reihe von Pfaden durch einen Token getrennt,
dass LibGit2 mich zur Verfügung stellt. In meinem Linux ist es ein Doppelpunkt ( :).

Das Problem erscheint, wenn ich mich frage:
Was ist, wenn der Pfad dieses Token enthält?

Kann es irgendwie entkommen werden? \:oder so?
Wird es in Windows standardmäßig unterstützt werden?

Ich weiß, dass es nicht üblich ist, ein Verzeichnis :in seinem
Namen zu haben, aber als Wrapper muss ich auf diesen Fall vorbereitet sein.

1

1 Antwort auf die Frage

1
grawity

Ich habe nicht geprüft libgit2, aber weder git noch verschiedene $PATHBenutzer - wie die Glibc - execvpe()Funktion und verschiedene Schalen ( Bindestrich, bash ) - unterstützen jede Form der Flucht - wenn ein Verzeichnisname ein enthält :, kann sie einfach nicht als Teil des Pfades verwendet werden, Umgebungsvariablen.

Unter Windows lautet das Pfadtrennzeichen ;- Sie sollten in der Lage sein, PATH_SEPden Wert mithilfe einer ähnlichen Konstante zu ermitteln - und erneut wird das Escaping nirgendwo unterstützt.

Wenn der Benutzer einen solchen Pfad /usr/foo:barangibt, erwarten Sie möglicherweise, dass der Pfad in zwei Verzeichnisse aufgeteilt wird.

Gut zu wissen. Vielen Dank für Ihre Zeit! Alba Mendez vor 11 Jahren 0