|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 838 (0x346) Types: TextFile Notes: UNIX file Names: »basename.c«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code └─⟦f4b8d8c84⟧ UNIX Filesystem └─⟦this⟧ »cmd/basename.c«
/* * Strip filename suffix and directory prefix. */ #include <stdio.h> char *basename(); main(argc, argv) char *argv[]; { if (argc < 2 || argc > 3) { fprintf(stderr, "Usage: basename string [suffix]\n"); exit(1); } printf("%s\n", basename(argv[1], argc==2 ? NULL : argv[2])); } /* * Do the work of producing a stripping prefixes and * a suffix (if not NULL). */ char * basename(s, suffix) char *s; char *suffix; { register char *cp, *ep, *sp; char *p; for (ep = cp = s; *ep != '\0'; ep++) if (*ep == '/') cp = ep+1; if ((sp = suffix) != NULL) { ep = cp; while (*ep++ != '\0') ; ep--; while (*sp++) ep--; if (ep < cp) return (cp); p = ep; for (sp = suffix; *sp!='\0' && *ep!='\0'; ) if (*sp++ != *ep++) return (cp); if (*sp != '\0') return (cp); *p = '\0'; } return (cp); }