xref: /original-bsd/usr.bin/basename/basename.c (revision 4d072710)
1 /*
2  * Copyright (c) 1987 Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  */
17 
18 #ifndef lint
19 char copyright[] =
20 "@(#) Copyright (c) 1987 Regents of the University of California.\n\
21  All rights reserved.\n";
22 #endif /* not lint */
23 
24 #ifndef lint
25 static char sccsid[] = "@(#)basename.c	4.5 (Berkeley) 06/29/88";
26 #endif /* not lint */
27 
28 main(argc, argv)
29 	int argc;
30 	char **argv;
31 {
32 	register char *p, *t;
33 	char *base;
34 
35 	if (argc <= 1) {	/* backward compatible */
36 		putchar('\n');
37 		exit(1);
38 	}
39 	for (p = base = *++argv; *p;)
40 		if (*p++ == '/')
41 			base = p;
42 	if (argc > 2) {		/* original version allows any # of args */
43 		for (t = *++argv; *t; ++t);
44 		do {
45 			if (t == *argv) {
46 				*p = '\0';
47 				break;
48 			}
49 		} while (p >= base && *--t == *--p);
50 	}
51 	puts(base);
52 	exit(0);
53 }
54