From 3d03683e7d38d933bf88a3e2a8d37832cc048472 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@musicpd.org>
Date: Thu, 26 Sep 2019 14:44:48 +0200
Subject: [PATCH] output: use StringIsEqual()

---
 src/output/Init.cxx                      |  7 ++++---
 src/output/MultipleOutputs.cxx           |  3 ++-
 src/output/Registry.cxx                  |  5 ++---
 src/output/plugins/AoOutputPlugin.cxx    |  5 ++---
 src/output/plugins/OSXOutputPlugin.cxx   |  7 ++++---
 src/output/plugins/ShoutOutputPlugin.cxx | 19 +++++++++----------
 6 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/output/Init.cxx b/src/output/Init.cxx
index 116d417c3..64f9cfe73 100644
--- a/src/output/Init.cxx
+++ b/src/output/Init.cxx
@@ -39,6 +39,7 @@
 #include "config/Option.hxx"
 #include "config/Block.hxx"
 #include "util/RuntimeError.hxx"
+#include "util/StringAPI.hxx"
 #include "util/StringFormat.hxx"
 #include "Log.hxx"
 
@@ -214,7 +215,7 @@ FilteredAudioOutput::Setup(EventLoop &event_loop,
 	const char *replay_gain_handler =
 		block.GetBlockValue("replay_gain_handler", "software");
 
-	if (strcmp(replay_gain_handler, "none") != 0) {
+	if (!StringIsEqual(replay_gain_handler, "none")) {
 		prepared_replay_gain_filter =
 			NewReplayGainFilter(replay_gain_config);
 		assert(prepared_replay_gain_filter != nullptr);
@@ -240,14 +241,14 @@ FilteredAudioOutput::Setup(EventLoop &event_loop,
 
 	/* use the hardware mixer for replay gain? */
 
-	if (strcmp(replay_gain_handler, "mixer") == 0) {
+	if (StringIsEqual(replay_gain_handler, "mixer")) {
 		if (mixer != nullptr)
 			replay_gain_filter_set_mixer(*prepared_replay_gain_filter,
 						     mixer, 100);
 		else
 			FormatError(output_domain,
 				    "No such mixer for output '%s'", name);
-	} else if (strcmp(replay_gain_handler, "software") != 0 &&
+	} else if (!StringIsEqual(replay_gain_handler, "software") &&
 		   prepared_replay_gain_filter != nullptr) {
 		throw std::runtime_error("Invalid \"replay_gain_handler\" value");
 	}
diff --git a/src/output/MultipleOutputs.cxx b/src/output/MultipleOutputs.cxx
index 12c102618..fe3c9ad5f 100644
--- a/src/output/MultipleOutputs.cxx
+++ b/src/output/MultipleOutputs.cxx
@@ -28,6 +28,7 @@
 #include "config/Data.hxx"
 #include "config/Option.hxx"
 #include "util/RuntimeError.hxx"
+#include "util/StringAPI.hxx"
 
 #include <stdexcept>
 
@@ -147,7 +148,7 @@ AudioOutputControl *
 MultipleOutputs::FindByName(const char *name) noexcept
 {
 	for (auto *i : outputs)
-		if (strcmp(i->GetName(), name) == 0)
+		if (StringIsEqual(i->GetName(), name))
 			return i;
 
 	return nullptr;
diff --git a/src/output/Registry.cxx b/src/output/Registry.cxx
index 035a26130..aa372289e 100644
--- a/src/output/Registry.cxx
+++ b/src/output/Registry.cxx
@@ -38,8 +38,7 @@
 #include "plugins/sles/SlesOutputPlugin.hxx"
 #include "plugins/SolarisOutputPlugin.hxx"
 #include "plugins/WinmmOutputPlugin.hxx"
-
-#include <string.h>
+#include "util/StringAPI.hxx"
 
 const AudioOutputPlugin *const audio_output_plugins[] = {
 #ifdef HAVE_SHOUT
@@ -101,7 +100,7 @@ const AudioOutputPlugin *
 AudioOutputPlugin_get(const char *name)
 {
 	audio_output_plugins_for_each(plugin)
-		if (strcmp(plugin->name, name) == 0)
+		if (StringIsEqual(plugin->name, name))
 			return plugin;
 
 	return nullptr;
diff --git a/src/output/plugins/AoOutputPlugin.cxx b/src/output/plugins/AoOutputPlugin.cxx
index 10fdd130d..8f859aba7 100644
--- a/src/output/plugins/AoOutputPlugin.cxx
+++ b/src/output/plugins/AoOutputPlugin.cxx
@@ -25,12 +25,11 @@
 #include "util/SplitString.hxx"
 #include "util/RuntimeError.hxx"
 #include "util/Domain.hxx"
+#include "util/StringAPI.hxx"
 #include "Log.hxx"
 
 #include <ao/ao.h>
 
-#include <string.h>
-
 /* An ao_sample_format, with all fields set to zero: */
 static ao_sample_format OUR_AO_FORMAT_INITIALIZER;
 
@@ -105,7 +104,7 @@ AoOutput::AoOutput(const ConfigBlock &block)
 	 write_size(block.GetPositiveValue("write_size", 1024U))
 {
 	const char *value = block.GetBlockValue("driver", "default");
-	if (0 == strcmp(value, "default"))
+	if (StringIsEqual(value, "default"))
 		driver = ao_default_driver_id();
 	else
 		driver = ao_driver_id(value);
diff --git a/src/output/plugins/OSXOutputPlugin.cxx b/src/output/plugins/OSXOutputPlugin.cxx
index 33460ed0d..c57e86b73 100644
--- a/src/output/plugins/OSXOutputPlugin.cxx
+++ b/src/output/plugins/OSXOutputPlugin.cxx
@@ -30,6 +30,7 @@
 #include "thread/Mutex.hxx"
 #include "thread/Cond.hxx"
 #include "util/ByteOrder.hxx"
+#include "util/StringAPI.hxx"
 #include "util/StringBuffer.hxx"
 #include "util/StringFormat.hxx"
 #include "Log.hxx"
@@ -138,11 +139,11 @@ OSXOutput::OSXOutput(const ConfigBlock &block)
 {
 	const char *device = block.GetBlockValue("device");
 
-	if (device == nullptr || 0 == strcmp(device, "default")) {
+	if (device == nullptr || StringIsEqual(device, "default")) {
 		component_subtype = kAudioUnitSubType_DefaultOutput;
 		device_name = nullptr;
 	}
-	else if (0 == strcmp(device, "system")) {
+	else if (StringIsEqual(device, "system")) {
 		component_subtype = kAudioUnitSubType_SystemOutput;
 		device_name = nullptr;
 	}
@@ -689,7 +690,7 @@ osx_output_set_device(OSXOutput *oo)
 		if (!cfname_.GetCString(name, sizeof(name)))
 			throw std::runtime_error("Unable to convert device name from CFStringRef to char*");
 
-		if (strcmp(oo->device_name, name) == 0) {
+		if (StringIsEqual(oo->device_name, name)) {
 			FormatDebug(osx_output_domain,
 				    "found matching device: ID=%u, name=%s",
 				    (unsigned)deviceids[i], name);
diff --git a/src/output/plugins/ShoutOutputPlugin.cxx b/src/output/plugins/ShoutOutputPlugin.cxx
index e5aaa63e6..3811fc596 100644
--- a/src/output/plugins/ShoutOutputPlugin.cxx
+++ b/src/output/plugins/ShoutOutputPlugin.cxx
@@ -35,7 +35,6 @@
 
 #include <assert.h>
 #include <stdlib.h>
-#include <string.h>
 #include <stdio.h>
 
 static constexpr unsigned DEFAULT_CONN_TIMEOUT = 2;
@@ -123,15 +122,15 @@ ShoutOutput::ShoutOutput(const ConfigBlock &block)
 	unsigned protocol;
 	const char *value = block.GetBlockValue("protocol");
 	if (value != nullptr) {
-		if (0 == strcmp(value, "shoutcast") &&
+		if (StringIsEqual(value, "shoutcast") &&
 		    !StringIsEqual(mime_type, "audio/mpeg"))
 			throw FormatRuntimeError("you cannot stream \"%s\" to shoutcast, use mp3",
 						 mime_type);
-		else if (0 == strcmp(value, "shoutcast"))
+		else if (StringIsEqual(value, "shoutcast"))
 			protocol = SHOUT_PROTOCOL_ICY;
-		else if (0 == strcmp(value, "icecast1"))
+		else if (StringIsEqual(value, "icecast1"))
 			protocol = SHOUT_PROTOCOL_XAUDIOCAST;
-		else if (0 == strcmp(value, "icecast2"))
+		else if (StringIsEqual(value, "icecast2"))
 			protocol = SHOUT_PROTOCOL_HTTP;
 		else
 			throw FormatRuntimeError("shout protocol \"%s\" is not \"shoutcast\" or "
@@ -145,15 +144,15 @@ ShoutOutput::ShoutOutput(const ConfigBlock &block)
 	unsigned tls;
 	value = block.GetBlockValue("tls");
 	if (value != nullptr) {
-		if (0 == strcmp(value, "disabled"))
+		if (StringIsEqual(value, "disabled"))
 			tls = SHOUT_TLS_DISABLED;
-		else if(0 == strcmp(value, "auto"))
+		else if (StringIsEqual(value, "auto"))
 			tls = SHOUT_TLS_AUTO;
-		else if(0 == strcmp(value, "auto_no_plain"))
+		else if (StringIsEqual(value, "auto_no_plain"))
 			tls = SHOUT_TLS_AUTO_NO_PLAIN;
-		else if(0 == strcmp(value, "rfc2818"))
+		else if (StringIsEqual(value, "rfc2818"))
 			tls = SHOUT_TLS_RFC2818;
-		else if(0 == strcmp(value, "rfc2817"))
+		else if (StringIsEqual(value, "rfc2817"))
 			tls = SHOUT_TLS_RFC2817;
 		else
 			throw FormatRuntimeError("invalid shout TLS option \"%s\"", value);