Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <stdlib.h>
2
#include <string.h>
3
#include <stdio.h>
4
 
5
void
6
main(int argc, char **argv)
7
{
8
	char *f, *b, *s;
9
	int n;
10
 
11
	if(argc < 2 || argc > 3){
12
		fprintf(stderr, "Usage: basename string [suffix]\n");
13
		exit(1);
14
	}
15
	s = argv[1];
16
	b = s + strlen(s) - 1;
17
	while(b > s && *b == '/')
18
		b--;
19
	*++b = 0;
20
	if(b == s+1 && s[0] == '/') {
21
		printf("/");
22
		exit(0);
23
	}
24
	/* now b is after last char of string, trailing slashes removed */
25
 
26
	for(f = b; f >= s; f--)
27
		if(*f == '/'){
28
			f++;
29
			break;
30
		}
31
	if(f < s)
32
		f = s;
33
 
34
	/* now f is first char after last remaining slash, or first char */
35
 
36
	if(argc == 3){
37
		n = strlen(argv[2]);
38
		if(n < b-f && strncmp(b-n, argv[2], n) == 0){
39
			b -= n;
40
			*b = 0;
41
		}
42
	}
43
	printf("%s\n", f);
44
	exit(0);
45
}