*: kill bb_get_last_path_component, replace with two functions
(one which strips trailing slash and one which does not) wget: straighten out as a result of above change text data bss dec hex filename 5056 1 0 5057 13c1 busybox.t4/networking/wget.o 5022 0 0 5022 139e busybox.t5/networking/wget.o
This commit is contained in:
parent
a7ce207bd8
commit
818322b9b1
13 changed files with 69 additions and 65 deletions
|
@ -8,25 +8,35 @@
|
|||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
char *bb_get_last_path_component(char *path)
|
||||
/*
|
||||
* "/" -> "/"
|
||||
* "abc" -> "abc"
|
||||
* "abc/def" -> "def"
|
||||
* "abc/def/" -> ""
|
||||
*/
|
||||
char *bb_get_last_path_component_nostrip(const char *path)
|
||||
{
|
||||
char *first = path;
|
||||
char *last;
|
||||
char *slash = strrchr(path, '/');
|
||||
|
||||
last = path - 1;
|
||||
if (!slash || (slash == path && !slash[1]))
|
||||
return (char*)path;
|
||||
|
||||
while (*path) {
|
||||
if ((*path != '/') && (path > ++last)) {
|
||||
last = first = path;
|
||||
}
|
||||
++path;
|
||||
}
|
||||
|
||||
if (*first == '/') {
|
||||
last = first;
|
||||
}
|
||||
last[1] = '\0';
|
||||
|
||||
return first;
|
||||
return slash + 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* "/" -> "/"
|
||||
* "abc" -> "abc"
|
||||
* "abc/def" -> "def"
|
||||
* "abc/def/" -> "def" !!
|
||||
*/
|
||||
char *bb_get_last_path_component_strip(char *path)
|
||||
{
|
||||
char *slash = last_char_is(path, '/');
|
||||
|
||||
if (slash)
|
||||
while (*slash == '/' && slash != path)
|
||||
*slash-- = '\0';
|
||||
|
||||
return bb_get_last_path_component_nostrip(path);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue