1/* vi: set sw=4 ts=4: */
2/*
3 * bb_get_last_path_component implementation for busybox
4 *
5 * Copyright (C) 2001  Manuel Novoa III  <mjn3@codepoet.org>
6 *
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8 */
9
10#include "libbb.h"
11/*
12 * "/"        -> "/"
13 * "abc"      -> "abc"
14 * "abc/def"  -> "def"
15 * "abc/def/" -> ""
16 */
17char* FAST_FUNC bb_get_last_path_component_nostrip(const char *path)
18{
19	char *slash = strrchr(path, '/');
20
21	if (!slash || (slash == path && !slash[1]))
22		return (char*)path;
23
24	return slash + 1;
25}
26
27/*
28 * "/"        -> "/"
29 * "abc"      -> "abc"
30 * "abc/def"  -> "def"
31 * "abc/def/" -> "def" !!
32 */
33char* FAST_FUNC bb_get_last_path_component_strip(char *path)
34{
35	char *slash = last_char_is(path, '/');
36
37	if (slash)
38		while (*slash == '/' && slash != path)
39			*slash-- = '\0';
40
41	return bb_get_last_path_component_nostrip(path);
42}
43