diff options
author | Eric Wong <normalperson@yhbt.net> | 2008-09-29 13:16:48 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-09-29 13:16:48 +0200 |
commit | 8bb96d46e8171595d61421765949536d6993323d (patch) | |
tree | dac409df0713a174948cdac45a6dad05707f5169 | |
parent | 5c516b8421f8073418bccefe1f8cd6b45bc9c3d6 (diff) | |
download | mpd-8bb96d46e8171595d61421765949536d6993323d.tar.gz mpd-8bb96d46e8171595d61421765949536d6993323d.tar.xz mpd-8bb96d46e8171595d61421765949536d6993323d.zip |
path: add mpd_basename() function
This is like basename(3) but with predictable semantics independent
of C library or build options used. This is also much more strict
and does not account for trailing slashes (mpd should never deal with
trailing slashes on internal functions).
-rw-r--r-- | src/path.c | 12 | ||||
-rw-r--r-- | src/path.h | 8 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/path.c b/src/path.c index ceb00c5de..8d1b0018d 100644 --- a/src/path.c +++ b/src/path.c @@ -290,3 +290,15 @@ void utf8_to_fs_playlist_path(char *path_max_tmp, const char *utf8path) rpp2app_r(path_max_tmp, path_max_tmp); strncat(path_max_tmp, "." PLAYLIST_FILE_SUFFIX, MPD_PATH_MAX - 1); } + +/* Only takes sanitized paths w/o trailing slashes */ +const char *mpd_basename(const char *path) +{ + const char *ret = strrchr(path, '/'); + + if (!ret) + return path; + ++ret; + assert(*ret != '\0'); + return ret; +} diff --git a/src/path.h b/src/path.h index a91728126..2c5801528 100644 --- a/src/path.h +++ b/src/path.h @@ -88,4 +88,12 @@ void pathcpy_trunc(char *dest, const char *src); */ void utf8_to_fs_playlist_path(char *path_max_tmp, const char *utf8path); +/* + * Like basename(3) but with predictable semantics independent + * of C library or build options used. This is also much more strict + * and does not account for trailing slashes (mpd should never deal with + * trailing slashes on internal functions). + */ +const char *mpd_basename(const char *path); + #endif |