36 lines
609 B
C
36 lines
609 B
C
/* basename - print the last part of a path: Author: Blaine Garfolo */
|
|
|
|
#define NULL 0
|
|
|
|
main(argc, argv)
|
|
int argc;
|
|
char *argv[];
|
|
{
|
|
int j, suflen;
|
|
char *c;
|
|
char *d;
|
|
extern char *rindex();
|
|
|
|
if (argc < 2) {
|
|
std_err("Usage: basename string [suffix] \n");
|
|
exit(1);
|
|
}
|
|
c = argv[1];
|
|
d = rindex(argv[1], '/');
|
|
if (d == NULL)
|
|
d = argv[1];
|
|
else
|
|
d++;
|
|
|
|
if (argc == 2) { /* if no suffix */
|
|
prints("%s\n", d);
|
|
exit(0);
|
|
} else { /* if suffix is present */
|
|
c = d;
|
|
suflen = strlen(argv[2]);
|
|
j = strlen(c) - suflen;
|
|
if (strcmp(c + j, argv[2]) == 0) *(c + j) = 0;
|
|
}
|
|
prints("%s\n", c);
|
|
}
|