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 /src | |
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).
Diffstat (limited to '')
-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 |