aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/db/UpnpDatabasePlugin.cxx37
-rw-r--r--src/db/upnp/Util.cxx35
-rw-r--r--src/db/upnp/Util.hxx8
3 files changed, 44 insertions, 36 deletions
diff --git a/src/db/UpnpDatabasePlugin.cxx b/src/db/UpnpDatabasePlugin.cxx
index dbc0cdfd7..be035bb00 100644
--- a/src/db/UpnpDatabasePlugin.cxx
+++ b/src/db/UpnpDatabasePlugin.cxx
@@ -24,6 +24,7 @@
#include "upnp/Discovery.hxx"
#include "upnp/ContentDirectoryService.hxx"
#include "upnp/Directory.hxx"
+#include "upnp/Util.hxx"
#include "LazyDatabase.hxx"
#include "DatabasePlugin.hxx"
#include "DatabaseSelection.hxx"
@@ -146,42 +147,6 @@ private:
Error &error) const;
};
-gcc_pure
-static std::vector<std::string>
-stringToTokens(const std::string &str,
- const char *delims = "/", bool skipinit = true)
-{
- std::vector<std::string> tokens;
-
- std::string::size_type startPos = 0;
-
- // Skip initial delims, return empty if this eats all.
- if (skipinit &&
- (startPos = str.find_first_not_of(delims, 0)) == std::string::npos)
- return tokens;
-
- while (startPos < str.size()) {
- // Find next delimiter or end of string (end of token)
- auto pos = str.find_first_of(delims, startPos);
-
- // Add token to the vector and adjust start
- if (pos == std::string::npos) {
- tokens.push_back(str.substr(startPos));
- break;
- } else if (pos == startPos) {
- // Dont' push empty tokens after first
- if (tokens.empty())
- tokens.push_back(std::string());
- startPos = ++pos;
- } else {
- tokens.push_back(str.substr(startPos, pos - startPos));
- startPos = ++pos;
- }
- }
-
- return tokens;
-}
-
Database *
UpnpDatabase::Create(gcc_unused EventLoop &loop,
gcc_unused DatabaseListener &listener,
diff --git a/src/db/upnp/Util.cxx b/src/db/upnp/Util.cxx
index 52d2bc63f..afe68e619 100644
--- a/src/db/upnp/Util.cxx
+++ b/src/db/upnp/Util.cxx
@@ -89,6 +89,41 @@ path_getfather(const std::string &s)
return father;
}
+std::vector<std::string>
+stringToTokens(const std::string &str,
+ const char *delims, bool skipinit)
+{
+ std::vector<std::string> tokens;
+
+ std::string::size_type startPos = 0;
+
+ // Skip initial delims, return empty if this eats all.
+ if (skipinit &&
+ (startPos = str.find_first_not_of(delims, 0)) == std::string::npos)
+ return tokens;
+
+ while (startPos < str.size()) {
+ // Find next delimiter or end of string (end of token)
+ auto pos = str.find_first_of(delims, startPos);
+
+ // Add token to the vector and adjust start
+ if (pos == std::string::npos) {
+ tokens.push_back(str.substr(startPos));
+ break;
+ } else if (pos == startPos) {
+ // Dont' push empty tokens after first
+ if (tokens.empty())
+ tokens.push_back(std::string());
+ startPos = ++pos;
+ } else {
+ tokens.push_back(str.substr(startPos, pos - startPos));
+ startPos = ++pos;
+ }
+ }
+
+ return tokens;
+}
+
template <class T>
bool
csvToStrings(const std::string &s, T &tokens)
diff --git a/src/db/upnp/Util.hxx b/src/db/upnp/Util.hxx
index 3cdc57cd5..08fe5f497 100644
--- a/src/db/upnp/Util.hxx
+++ b/src/db/upnp/Util.hxx
@@ -20,7 +20,10 @@
#ifndef MPD_UPNP_UTIL_HXX
#define MPD_UPNP_UTIL_HXX
+#include "Compiler.h"
+
#include <string>
+#include <vector>
std::string
caturl(const std::string& s1, const std::string& s2);
@@ -31,6 +34,11 @@ trimstring(std::string &s, const char *ws = " \t\n");
std::string
path_getfather(const std::string &s);
+gcc_pure
+std::vector<std::string>
+stringToTokens(const std::string &str,
+ const char *delims = "/", bool skipinit = true);
+
template <class T>
bool csvToStrings(const std::string& s, T &tokens);