aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-09-29 13:16:48 +0200
committerMax Kellermann <max@duempel.org>2008-09-29 13:16:48 +0200
commit8bb96d46e8171595d61421765949536d6993323d (patch)
treedac409df0713a174948cdac45a6dad05707f5169 /src
parent5c516b8421f8073418bccefe1f8cd6b45bc9c3d6 (diff)
downloadmpd-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 'src')
-rw-r--r--src/path.c12
-rw-r--r--src/path.h8
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