Initial public busybox upstream commit
[busybox4maemo] / libbb / get_last_path_component.c
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  */
17 char *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  */
33 char *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 }