1 /* vi: set sw=4 ts=4: */
3 * bb_simplify_path implementation for busybox
5 * Copyright (C) 2001 Manuel Novoa III <mjn3@codepoet.org>
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
12 char *bb_simplify_path(const char *path
)
17 start
= xstrdup(path
);
19 s
= xrealloc_getcwd_or_warn(NULL
);
20 start
= concat_path_file(s
, path
);
27 if (*s
== '/') { /* skip duplicate (or initial) slash */
31 if (s
[1] == '/' || !s
[1]) { /* remove extra '.' */
34 if ((s
[1] == '.') && (s
[2] == '/' || !s
[2])) {
37 while (*--p
!= '/') /* omit previous dir */
47 if ((p
== start
) || (*p
!= '/')) { /* not a trailing slash */
48 ++p
; /* so keep last character */