*: 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:
Denis Vlasenko 2007-09-24 18:27:04 +00:00
parent a7ce207bd8
commit 818322b9b1
13 changed files with 69 additions and 65 deletions

View file

@ -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);
}