diff options
author | Max Kellermann <max@duempel.org> | 2014-12-03 21:39:45 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-12-04 09:14:28 +0100 |
commit | e69bef3ce389967b8239648e4b9eaec42217bc95 (patch) | |
tree | 603870b6d042017c7a93f1909afc91395cf1415b /src/output | |
parent | c1c0fc79bcdc9caabe42fc3716ea2e2ea7b3eb3d (diff) | |
download | mpd-e69bef3ce389967b8239648e4b9eaec42217bc95.tar.gz mpd-e69bef3ce389967b8239648e4b9eaec42217bc95.tar.xz mpd-e69bef3ce389967b8239648e4b9eaec42217bc95.zip |
util/SplitString: new utility class
Replaces GLib's g_strsplit().
Diffstat (limited to 'src/output')
-rw-r--r-- | src/output/plugins/AoOutputPlugin.cxx | 12 | ||||
-rw-r--r-- | src/output/plugins/JackOutputPlugin.cxx | 30 |
2 files changed, 14 insertions, 28 deletions
diff --git a/src/output/plugins/AoOutputPlugin.cxx b/src/output/plugins/AoOutputPlugin.cxx index 6faa30b1b..689e7de7c 100644 --- a/src/output/plugins/AoOutputPlugin.cxx +++ b/src/output/plugins/AoOutputPlugin.cxx @@ -21,12 +21,12 @@ #include "AoOutputPlugin.hxx" #include "../OutputAPI.hxx" #include "util/DivideString.hxx" +#include "util/SplitString.hxx" #include "util/Error.hxx" #include "util/Domain.hxx" #include "Log.hxx" #include <ao/ao.h> -#include <glib.h> #include <string.h> @@ -127,22 +127,18 @@ AoOutput::Configure(const config_param ¶m, Error &error) value = param.GetBlockValue("options", nullptr); if (value != nullptr) { - gchar **_options = g_strsplit(value, ";", 0); - - for (unsigned i = 0; _options[i] != nullptr; ++i) { - const DivideString ss(_options[i], '='); + for (const auto &i : SplitString(value, ';')) { + const DivideString ss(i.c_str(), '='); if (!ss.IsDefined()) { error.Format(ao_output_domain, "problems parsing options \"%s\"", - _options[i]); + i.c_str()); return false; } ao_append_option(&options, ss.GetFirst(), ss.GetSecond()); } - - g_strfreev(_options); } return true; diff --git a/src/output/plugins/JackOutputPlugin.cxx b/src/output/plugins/JackOutputPlugin.cxx index 5651de68a..777db11bf 100644 --- a/src/output/plugins/JackOutputPlugin.cxx +++ b/src/output/plugins/JackOutputPlugin.cxx @@ -21,13 +21,13 @@ #include "JackOutputPlugin.hxx" #include "../OutputAPI.hxx" #include "config/ConfigError.hxx" +#include "util/SplitString.hxx" #include "util/Error.hxx" #include "util/Domain.hxx" #include "Log.hxx" #include <assert.h> -#include <glib.h> #include <jack/jack.h> #include <jack/types.h> #include <jack/ringbuffer.h> @@ -56,10 +56,10 @@ struct JackOutput { /* configuration */ - char *source_ports[MAX_PORTS]; + std::string source_ports[MAX_PORTS]; unsigned num_source_ports; - char *destination_ports[MAX_PORTS]; + std::string destination_ports[MAX_PORTS]; unsigned num_destination_ports; size_t ringbuffer_size; @@ -261,13 +261,13 @@ mpd_jack_connect(JackOutput *jd, Error &error) for (unsigned i = 0; i < jd->num_source_ports; ++i) { jd->ports[i] = jack_port_register(jd->client, - jd->source_ports[i], + jd->source_ports[i].c_str(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); if (jd->ports[i] == nullptr) { error.Format(jack_output_domain, "Cannot register output port \"%s\"", - jd->source_ports[i]); + jd->source_ports[i].c_str()); mpd_jack_disconnect(jd); return false; } @@ -283,23 +283,19 @@ mpd_jack_test_default_device(void) } static unsigned -parse_port_list(const char *source, char **dest, Error &error) +parse_port_list(const char *source, std::string dest[], Error &error) { - char **list = g_strsplit(source, ",", 0); unsigned n = 0; - - for (n = 0; list[n] != nullptr; ++n) { + for (auto &&i : SplitString(source, ',')) { if (n >= MAX_PORTS) { error.Set(config_domain, "too many port names"); return 0; } - dest[n] = list[n]; + dest[n++] = std::move(i); } - g_free(list); - if (n == 0) { error.Format(config_domain, "at least one port name expected"); @@ -392,12 +388,6 @@ mpd_jack_finish(AudioOutput *ao) { JackOutput *jd = (JackOutput *)ao; - for (unsigned i = 0; i < jd->num_source_ports; ++i) - g_free(jd->source_ports[i]); - - for (unsigned i = 0; i < jd->num_destination_ports; ++i) - g_free(jd->destination_ports[i]); - delete jd; } @@ -505,8 +495,8 @@ mpd_jack_start(JackOutput *jd, Error &error) /* use the configured output ports */ num_destination_ports = jd->num_destination_ports; - memcpy(destination_ports, jd->destination_ports, - num_destination_ports * sizeof(*destination_ports)); + for (unsigned i = 0; i < num_destination_ports; ++i) + destination_ports[i] = jd->destination_ports[i].c_str(); jports = nullptr; } |