Guia de rastreamento dinâmico Solaris

cleanpath()

string cleanpath(char *str)

cleanpath() cria uma seqüência que consiste em uma cópia do caminho indicado por str, mas com alguns elementos redundantes eliminados. Em particular, os elementos “/./” no caminho são removidos e os elementos “/../” são recolhidos. Os elementos /../ são recolhidos no caminho sem levar em consideração os links simbólicos. Portanto, é possível que cleanpath() obtenha um caminho válido e retorne um mais curto, inválido.

Por exemplo, se str fosse “ /foo/../bar” e /foo fosse um link simbólico para /net/foo/export, cleanpath() retornaria a seqüência “/bar” embora bar só possa estar em /net/foo e não em /. Essa limitação deve-se ao fato de que cleanpath() é chamada no contexto de um teste acionado, onde a resolução completa de link simbólico ou nomes arbitrários não são possíveis. A seqüência retornada é alocada fora da memória temporária e, portanto, é válida somente enquanto durar a cláusula. Se não houver espaço temporário suficiente disponível, cleanpath não será executada e um erro será gerado.