*: 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);
}

View File

@ -67,7 +67,7 @@ void run_shell(const char *shell, int loginshell, const char *command, const cha
args = xmalloc(sizeof(char*) * (4 + additional_args_cnt));
args[0] = bb_get_last_path_component(xstrdup(shell));
args[0] = bb_get_last_path_component_nostrip(xstrdup(shell));
if (loginshell)
args[0] = xasprintf("-%s", args[0]);