From dc353eca802d8889dd868188d977fb0957cc8554 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sun, 7 Sep 2008 13:37:04 +0200
Subject: 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.
---
 src/playlist.c | 11 ++++++++---
 src/playlist.h |  2 ++
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/playlist.c b/src/playlist.c
index 743a67d87..3c41b4d79 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -1509,11 +1509,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 33b3bb2b6..92378eeb2 100644
--- a/src/playlist.h
+++ b/src/playlist.h
@@ -137,6 +137,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);
 
 #endif
-- 
cgit v1.2.3