Implement the GNU basename(3) in addition to the POSIX one.

Code like perf(1) needs this.

Bug: 11860789
Change-Id: I907eb448052a7b165e4012d74303330d32328cb2
This commit is contained in:
Elliott Hughes
2014-08-19 14:30:30 -07:00
parent c5d6df6f2f
commit 09c39d6df0
6 changed files with 88 additions and 9 deletions

View File

@@ -14,11 +14,10 @@
* limitations under the License.
*/
#include <gtest/gtest.h>
#include <libgen.h>
#include <errno.h>
#include <gtest/gtest.h>
static void TestBasename(const char* in, const char* expected_out) {
char* writable_in = (in != NULL) ? strdup(in) : NULL;
@@ -40,7 +39,7 @@ static void TestDirname(const char* in, const char* expected_out) {
// Do not use basename as the test name, it's defined to another value in glibc
// so leads to a differently named test on host versus target architectures.
TEST(libgen, basename_smoke) {
TEST(libgen, posix_basename) {
TestBasename(NULL, ".");
TestBasename("", ".");
TestBasename("/usr/lib", "lib");