--- a/upmpd/upmpdutils.cxx
+++ b/upmpd/upmpdutils.cxx
@@ -37,6 +37,7 @@
#include <iostream>
#include <sstream>
+#include <fstream>
using namespace std;
#include "mpdcli.hxx"
@@ -84,6 +85,36 @@
#endif
}
+bool read_protocolinfo(const string& fn, string& out)
+{
+ ifstream input;
+ input.open(fn, ios::in);
+ if (!input.is_open()) {
+ return false;
+ }
+ bool eof = false;
+ for (;;) {
+ string line;
+ getline(input, line);
+ if (!input.good()) {
+ if (input.bad()) {
+ return false;
+ }
+ // Must be eof ? But maybe we have a partial line which
+ // must be processed. This happens if the last line before
+ // eof ends with a backslash, or there is no final \n
+ eof = true;
+ }
+ trimstring(line, " \t\n\r");
+ if (line[0] == '#')
+ continue;
+ out += line;
+ if (eof)
+ break;
+ }
+ return true;
+}
+
bool file_to_string(const string &fn, string &data, string *reason)
{
const int RDBUFSZ = 4096;
@@ -181,6 +212,7 @@
if (pos != string::npos && pos != s.length()-1)
s.replace(pos+1, string::npos, string());
}
+
void stringToTokens(const string& str, vector<string>& tokens,
const string& delims, bool skipinit)
{