Hallo, Am Sat, 20 Sep 2003, Jan Trippler schrieb:
Am Freitag, 19. September 2003 22:14 schrieb David Haller: [...]
Faellt dir was ein, wie man readlink sonst ggfs. ersetzten koennte?
Ja, die Variante von Jürgen: C ;)
Ja. Haette schreiben sollen: "...ausser mit C"...
Dann hat man gleich noch so nette Helferlein wie realpath() zur
==== #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Return the canonical absolute name of file NAME. The last file name component need not exist, and may be a symlink to a nonexistent file. If RESOLVED is null, the result is malloc'd; otherwise, if the canonical name is PATH_MAX chars or more, returns null with `errno' set to ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the name in RESOLVED. */ extern char *realpath __P ((__const char *__restrict __name, char *__restrict __resolved)); #endif ==== Die manpages, die ich mir vom erwaehnten SunOS kopiert habe, kennen das jedenfalls nicht...
Verfügung, die das ständige cd (resp. chdir() in C) überflüssig machen. Und wenn man schon dabei ist, kann man auch gleich Link-Loops enttarnen ;)
*g*
Das wird aber deutlich aufwändiger, wenn man es halbwegs sicher machen will und ist von der Ausgangsfragestellung (mal was schnelles) meilenweit entfernt.
ACK. V.a. wenn's auch ohne C gehen soll. Ich denke, man kommt einfach um ein paar Vorraussetzungen nicht herum... "readlink(1kpathsea)" ist ja nun wirklich nur ein recht einfacher Wrapper um readlink(2)... -dnh -- Effekt: der neu gebaute ld.so kippt mit einer Assertion Failure aus den Latschen. Die glibc-Leute sind wirklich zu blöd zum Kacken. Glücklicherweise bricht das Teil unter seinem Eigengewicht zusammen, bevor es sich systemweit über relevante Verzeichnisse ergossen hat. -- fefe in dasr