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 source tree. 8 */ 9 #include "libbb.h" 10 bb_basename(const char * name)11const char* FAST_FUNC bb_basename(const char *name) 12 { 13 const char *cp = strrchr(name, '/'); 14 if (cp) 15 return cp + 1; 16 return name; 17 } 18 19 /* 20 * "/" -> "/" 21 * "abc" -> "abc" 22 * "abc/def" -> "def" 23 * "abc/def/" -> "" 24 */ bb_get_last_path_component_nostrip(const char * path)25char* FAST_FUNC bb_get_last_path_component_nostrip(const char *path) 26 { 27 char *slash = strrchr(path, '/'); 28 29 if (!slash || (slash == path && !slash[1])) 30 return (char*)path; 31 32 return slash + 1; 33 } 34 35 /* 36 * "/" -> "/" 37 * "abc" -> "abc" 38 * "abc/def" -> "def" 39 * "abc/def/" -> "def" !! 40 */ bb_get_last_path_component_strip(char * path)41char* FAST_FUNC bb_get_last_path_component_strip(char *path) 42 { 43 char *slash = last_char_is(path, '/'); 44 45 if (slash) 46 while (*slash == '/' && slash != path) 47 *slash-- = '\0'; 48 49 return bb_get_last_path_component_nostrip(path); 50 } 51