diff options
| author | Michael Brown | 2007-06-03 03:51:10 +0200 |
|---|---|---|
| committer | Michael Brown | 2007-06-03 03:51:10 +0200 |
| commit | 182e3ed61d8db574c2bf7a091ce2221746259cbd (patch) | |
| tree | e757fc4b0b06f992c34f8653ef3d591e0fb5decd /src | |
| parent | Added [v]asprintf() (diff) | |
| download | ipxe-182e3ed61d8db574c2bf7a091ce2221746259cbd.tar.gz ipxe-182e3ed61d8db574c2bf7a091ce2221746259cbd.tar.xz ipxe-182e3ed61d8db574c2bf7a091ce2221746259cbd.zip | |
Added dirname()
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/basename.c | 22 | ||||
| -rw-r--r-- | src/include/libgen.h | 3 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/core/basename.c b/src/core/basename.c index f50b71513..7340c0d55 100644 --- a/src/core/basename.c +++ b/src/core/basename.c @@ -38,3 +38,25 @@ char * basename ( char *path ) { basename = strrchr ( path, '/' ); return ( basename ? ( basename + 1 ) : path ); } + +/** + * Return directory name from path + * + * @v path Full path + * @ret dirname Directory name + * + * Note that this function may modify its argument. + */ +char * dirname ( char *path ) { + char *separator; + + separator = strrchr ( path, '/' ); + if ( separator == path ) { + return "/"; + } else if ( separator ) { + *separator = 0; + return path; + } else { + return "."; + } +} diff --git a/src/include/libgen.h b/src/include/libgen.h index 8fa552a92..56a2f760b 100644 --- a/src/include/libgen.h +++ b/src/include/libgen.h @@ -1,6 +1,7 @@ #ifndef _LIBGEN_H #define _LIBGEN_H -char * basename ( char *path ); +extern char * basename ( char *path ); +extern char * dirname ( char *path ); #endif /* _LIBGEN_H */ |
