diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2001-05-14 13:47:49 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2001-05-14 13:47:49 +0000 |
commit | f15aa3a552022743398a652165d76bf912c715e5 (patch) | |
tree | b58f8b4c47fc571fbb498d83a4bd4fca226ac6c4 /mdk-stage1/dietlibc/libshell/realpath.c | |
parent | 189b01c358a1181ddc951adba97a0258d5fc2cf1 (diff) | |
download | drakx-f15aa3a552022743398a652165d76bf912c715e5.tar drakx-f15aa3a552022743398a652165d76bf912c715e5.tar.gz drakx-f15aa3a552022743398a652165d76bf912c715e5.tar.bz2 drakx-f15aa3a552022743398a652165d76bf912c715e5.tar.xz drakx-f15aa3a552022743398a652165d76bf912c715e5.zip |
Initial revision
Diffstat (limited to 'mdk-stage1/dietlibc/libshell/realpath.c')
-rw-r--r-- | mdk-stage1/dietlibc/libshell/realpath.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/libshell/realpath.c b/mdk-stage1/dietlibc/libshell/realpath.c new file mode 100644 index 000000000..1377018e5 --- /dev/null +++ b/mdk-stage1/dietlibc/libshell/realpath.c @@ -0,0 +1,31 @@ +#include <limits.h> +#include <stdlib.h> +#include <errno.h> +#include <fcntl.h> +#include <string.h> +#include "dietfeatures.h" + +char *realpath(const char *path, char *resolved_path) { + int fd=open(".",O_RDONLY); + char *tmp=""; + if (chdir(path)) { +#ifdef WANT_THREAD_SAFE + if (*__errno_location()==ENOTDIR) +#else + if (errno==ENOTDIR) +#endif + { + if ((tmp=strrchr(path,'/'))) { + memmove(resolved_path,path,tmp-path); + resolved_path[tmp-path]=0; + if (chdir(resolved_path)) { resolved_path=0; goto abort; } + } + } + } + if (!getcwd(resolved_path,PATH_MAX)) { resolved_path=0; goto abort; } + strcat(resolved_path,tmp); +abort: + fchdir(fd); + close(fd); + return resolved_path; +} |