J'ai un outil de système de construction qui utilise getcwd()
pour obtenir le répertoire de travail actuel. C'est génial, sauf que parfois les gens ont des espaces dans leurs chemins, ce qui n'est pas supporté par le système de construction. Vous penseriez que vous pourriez simplement faire un lien symbolique:Que puis-je faire si getcwd() et getenv ("PWD") ne correspondent pas?
ln -s "Directory With Spaces" DirectoryWithoutSpaces
Et puis soyez heureux. Mais malheureusement pour moi, getcwd()
résout tous les liens symboliques. J'ai essayé d'utiliser getenv("PWD")
, mais il ne pointe pas sur le même chemin que je reviens de getcwd()
. Je blâme make -C
pour ne pas mettre à jour la variable d'environnement, je pense. En ce moment, getcwd()
me donne de nouveau un chemin comme celui-ci:
/Users/carl/Directory With Spaces/Some/Other/Directories
Et getenv("PWD")
me donne:
/Users/carl/DirectoryWithoutSpaces
donc - est-il une fonction comme getcwd()
qui ne résout pas les liens symboliques?
Edit:
J'ai changé
make -C Some/Other/Directories
à
cd Some/Other/Directories ; make
Et puis getenv("PWD")
œuvres .. S'il n'y a pas d'autre solution, je peux l'utiliser.
Quelle partie de votre programme ne fonctionne pas parce qu'ils sont des espaces dans un chemin? – eruciform
'mv ~ /" Répertoire avec espaces "~/DirectoryWithoutSpaces'? : P – muhmuhten
@eruciform, l'outil en question génère un tas de fichiers makefile; pour beaucoup de raisons, il s'étouffe s'il y a des espaces dans ce chemin. J'ai fait les changements mentionnés dans mon édition, et je corrige maintenant le problème d'espaces dans son ensemble, mais indépendamment de cela, c'est un peu bizarre de générer les makefiles avec un mélange de liens symboliques et de noms de chemins résolus. L'édition que j'ai ci-dessus corrige cela, mais je suis toujours intéressé par des solutions alternatives. –