aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-09-07 13:37:04 +0200
committerEric Wong <normalperson@yhbt.net>2008-09-09 00:55:38 -0700
commitb3a40661ffb4a0da1aefc7e7151bbf9e82f23cef (patch)
treef2016249d1b4745311e5ccb89a5c0dcc1708a860
parent57b17b7e6585fc9dfdaee10e31441e39354a4422 (diff)
downloadmpd-b3a40661ffb4a0da1aefc7e7151bbf9e82f23cef.tar.gz
mpd-b3a40661ffb4a0da1aefc7e7151bbf9e82f23cef.tar.xz
mpd-b3a40661ffb4a0da1aefc7e7151bbf9e82f23cef.zip
playlist: added is_valid_playlist_name()
The function valid_playlist_name() checks the name, but it insists on reporting an eventual error to the client. The new function is_valid_playlist_name() is more generic: it just returns a boolean, and does not care what the caller will use it for. The old function valid_playlist_name() will be removed later.
-rw-r--r--src/playlist.c11
-rw-r--r--src/playlist.h2
2 files changed, 10 insertions, 3 deletions
diff --git a/src/playlist.c b/src/playlist.c
index 629742aa3..1a286f67a 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -1553,11 +1553,16 @@ void findSongsInPlaylist(int fd, int numItems, LocateTagItem * items)
* protocol (and compatibility with all clients) to support idiots who
* put '\r' and '\n' in filenames isn't going to happen, either.
*/
+int is_valid_playlist_name(const char *utf8path)
+{
+ return strchr(utf8path, '/') == NULL &&
+ strchr(utf8path, '\n') == NULL &&
+ strchr(utf8path, '\r') == NULL;
+}
+
int valid_playlist_name(int err_fd, const char *utf8path)
{
- if (strchr(utf8path, '/') ||
- strchr(utf8path, '\n') ||
- strchr(utf8path, '\r')) {
+ if (!is_valid_playlist_name(utf8path)) {
commandError(err_fd, ACK_ERROR_ARG, "playlist name \"%s\" is "
"invalid: playlist names may not contain slashes,"
" newlines or carriage returns",
diff --git a/src/playlist.h b/src/playlist.h
index c144d4ab4..83b02fd08 100644
--- a/src/playlist.h
+++ b/src/playlist.h
@@ -126,6 +126,8 @@ void searchForSongsInPlaylist(int fd, int numItems, LocateTagItem * items);
void findSongsInPlaylist(int fd, int numItems, LocateTagItem * items);
+int is_valid_playlist_name(const char *utf8path);
+
int valid_playlist_name(int err_fd, const char *utf8path);
struct mpd_tag *playlist_current_tag(void);