Handbuch zur dynamischen Ablaufverfolgung in Solaris

cleanpath()

string cleanpath(char *Zeichenkette)

cleanpath() erzeugt eine Zeichenkette, die aus einer um gewisse redundante Teile gekürzten Kopie des mit Zeichenkette angegebenen Pfads besteht. Insbesondere werden „/.„/./”-Elemente aus dem Pfad entfernt und „/../”-Elemente gekürzt. Bei der Kürzung der /../-Elemente im Pfad werden symbolische Links nicht berücksichtigt. Deshalb ist es denkbar, dass cleanpath() einen gültigen Pfad übernimmt und einen kürzeren, ungültigen zurückgibt.

Wenn die Zeichenkette beispielsweise „ /foo/../bar” ist und /foo ein symbolischer Link zu /net/foo/export, dann gibt cleanpath() die Zeichenkette „/bar” zurück, obwohl sich bar möglicherweise nur in /net/foo und nicht in / befindet. Diese Einschränkung ist darauf zurückzuführen, dass cleanpath() im Kontext eines ausgelösten Prüfpunkts aufgerufen wird, wo eine vollständige Auflösung symbolischer Links oder beliebiger Namen nicht möglich ist. Der zurückgegebenen Zeichenkette wird Speicherplatz im Scratch-Bereich reserviert, sodass sie nur für die Dauer der Klausel gültig ist. Wenn nicht genügend Platz im Scratch-Bereich vorhanden ist, wird cleanpath nicht ausgeführt und ein Fehler generiert.