Bonjour
J'ai un petit problème avec des noms de répertoires.
J'ai chargé cl-fad avec quicklisp et quand je récupère des chemins de
répertoires contenant des crochets ouvrants [, j'obtiens parfois des
choses étranges :
Avec Clisp, il semble que tout aille bien :
(cl-fad:list-directory "/tmp/test")
-> (#P"/tmp/test/truc-1/" #P"/tmp/test/truc [hahaha]/")
Avec SBCL, j'obtiens des \\ devant les crochets :
(cl-fad:list-directory "/tmp/test")
-> (#P"/tmp/test/truc \\[hahaha]/" #P"/tmp/test/truc-1/")
Bon, peut-être que ce n'est qu'une représentation interne de SBCL...
Mais si je veux récupérer les noms des répertoires, les caractères
supplémentaires restent :
(directory-namestring #P"/tmp/test/truc \\[hahaha]/")
-> "/tmp/test/truc \\[hahaha]/"
D'après le manuel de SBCL
(
http://www.sbcl.org/manual/Native-Filenames.html), on peut utiliser
une fonction pour récupérer le nom du répertoire sous une forme qui
convient au système hôte :
(native-namestring #P"/tmp/test/truc \\[hahaha]/")
-> "/tmp/test/truc [hahaha]/"
D'où les questions :
- Est-ce normal que SBCL introduise des caractères particuliers ?
Est-ce une manière pour lui de stocker certaines informations ?
- Y a-t-il une manière portable de récupérer de "vrais" chemins, qui
plaisent au système hôte ? Le problème de la représentation de SBCL
c'est que ça ne fonctionne que pour lui. Je ne sais pas si c'est
portable d'un système d'exploitation à l'autre, mais pas d'un
programme à l'autre (sauf écrit en Lisp et tournant sur SBCL).
- Pourquoi la fonction directory-namestring renvoie un chemin dans
cette forme particulière ?
Merci
Yliur