basename: libc function
This commit is contained in:
parent
004dcb79c2
commit
558a273828
@ -7,6 +7,7 @@
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <libgen.h>
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
if (argc < 2) {
|
||||
@ -14,23 +15,7 @@ int main(int argc, char * argv[]) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
char * s = argv[1];
|
||||
char * c = NULL;
|
||||
do {
|
||||
while (*s == '/') {
|
||||
*s = '\0'; s++;
|
||||
if (!*s) goto _done;
|
||||
}
|
||||
c = s;
|
||||
s = strchr(c,'/');
|
||||
} while (s);
|
||||
|
||||
_done:
|
||||
if (!c) {
|
||||
/* Special case */
|
||||
fprintf(stdout, "/\n");
|
||||
return 0;
|
||||
}
|
||||
char * c = basename(argv[1]);
|
||||
|
||||
if (argc > 2) {
|
||||
char * suffix = argv[2];
|
||||
|
11
base/usr/include/libgen.h
Normal file
11
base/usr/include/libgen.h
Normal file
@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <_cheader.h>
|
||||
|
||||
_Begin_C_Header
|
||||
|
||||
//extern char * dirname(char * path);
|
||||
extern char * basename(char * path);
|
||||
|
||||
_End_C_Header
|
||||
|
24
libc/libgen/basename.c
Normal file
24
libc/libgen/basename.c
Normal file
@ -0,0 +1,24 @@
|
||||
#include <libgen.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
char * basename(char * path) {
|
||||
char * s = path;
|
||||
char * c = NULL;
|
||||
do {
|
||||
while (*s == '/') {
|
||||
*s = '\0'; s++;
|
||||
if (!*s) goto _done;
|
||||
}
|
||||
c = s;
|
||||
s = strchr(c,'/');
|
||||
} while (s);
|
||||
|
||||
_done:
|
||||
|
||||
if (!c) {
|
||||
return "/";
|
||||
}
|
||||
|
||||
return c;
|
||||
}
|
Loading…
Reference in New Issue
Block a user