summaryrefslogtreecommitdiff
path: root/basename.c
blob: 2f0ee2a09b4d022e9000bbfcf34e42c34106ba26 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <string.h>
#include <libgen.h>
#include <stdlib.h>

#define TEST(p, b) ( \
tmp = strdup((p)), s = basename(tmp), \
!strcmp((b),s) || \
(printf(__FILE__ ":%d: basename(\"%s\") returned \"%s\"; expected \"%s\"\n", \
__LINE__, (p), s, (b)), err++, 0), free(tmp), 0 )

int test_basename(void)
{
	char *tmp, *s;
	int err=0;

	if (strcmp(basename(NULL), ".")) {
		printf(__FILE__ ":%d: basename(NULL) returned \"%s\"; "
			"expected \".\"\n", __LINE__, basename(NULL));
		err++;
	}
	TEST("", ".");
	TEST("/usr/lib", "lib");
	TEST("/usr/", "usr");
	TEST("/", "/");
	TEST("///", "/");
	TEST("//usr//lib//", "lib");

	return err;
}