Manuel de suivi dynamique Solaris

cleanpath()

string cleanpath(char *str)

cleanpath() crée une chaîne qui consiste en une copie du chemin str, mais dont certains éléments redondants sont éliminés. En particulier, les éléments “/./” du chemin sont supprimés et les éléments “/../” réduits. La réduction des éléments /../ est effectuée indépendamment des liens symboliques. Il est donc possible que cleanpath() copie un chemin valide et renvoie un chemin plus court, non valide.

Par exemple, si str correspond à “ /foo/../bar” et que /foo est un lien symbolique vers /net/foo/export cleanpath() renvoie la chaîne “/bar” même si bar risque de ne figurer que dans /net/foo et non dans /. Cette limitation est due au fait que cleanpath() est appelé dans le contexte d'un déclenchement de sonde, où la résolution de liens symboliques ou de noms arbitraires est impossible. La chaîne renvoyée est allouée à l'extérieur de la mémoire de travail. Sa durée de validité correspond donc à la durée de la clause. Si l'espace de travail disponible est insuffisant, cleanpath ne s'exécute pas et une erreur est générée.