summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Schlichting <fsfs@debian.org>2018-10-31 17:54:45 +0100
committerFlorian Schlichting <fsfs@debian.org>2018-10-31 17:54:45 +0100
commitd1f85240a20d83d211b17bf82fa40f77cecae6ca (patch)
tree2a9db8ae3f978973d45cbd3cfd4be97f8a39b0bd
parent2148d4bb31cde4751d7be42e2d8c7cd9ac4e0ff4 (diff)
include hostname in zeroconf_name (fixes #387)
expand %h to the system hostname and default to a zeroconf string that contains %h
-rw-r--r--doc/mpd.conf.53
-rw-r--r--doc/mpdconf.example4
-rw-r--r--doc/user.rst3
-rw-r--r--src/zeroconf/ZeroconfGlue.cxx10
4 files changed, 15 insertions, 5 deletions
diff --git a/doc/mpd.conf.5 b/doc/mpd.conf.5
index 74cfd5b48..ce539b895 100644
--- a/doc/mpd.conf.5
+++ b/doc/mpd.conf.5
@@ -99,7 +99,8 @@ information will be published with Zeroconf. The default is yes.
.B zeroconf_name <name>
If Zeroconf is enabled, this is the service name to publish. This name should
be unique to your local network, but name collisions will be properly dealt
-with. The default is "Music Player".
+with. The default is "Music Player @ %h", where %h will be replaced with the
+hostname of the machine running MPD.
.TP
.B audio_output
See \fBDESCRIPTION\fP and the various \fBAUDIO OUTPUT PARAMETERS\fP sections
diff --git a/doc/mpdconf.example b/doc/mpdconf.example
index e3a7b024c..99006c86d 100644
--- a/doc/mpdconf.example
+++ b/doc/mpdconf.example
@@ -151,9 +151,9 @@
#zeroconf_enabled "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
-# this MPD server on the network.
+# this MPD server on the network. %h will be replaced with the hostname.
#
-#zeroconf_name "Music Player"
+#zeroconf_name "Music Player @ %h"
#
###############################################################################
diff --git a/doc/user.rst b/doc/user.rst
index 31c1fba46..0f6188b60 100644
--- a/doc/user.rst
+++ b/doc/user.rst
@@ -673,7 +673,8 @@ settings control this feature:
* - **zeroconf_enabled yes|no**
- Enables or disables this feature. Default is yes.
* - **zeroconf_name NAME**
- - The service name to publish via Zeroconf. The default is "Music Player".
+ - The service name to publish via Zeroconf. The default is "Music Player @ %h".
+ %h will be replaced with the hostname of the machine running :program:`MPD`.
Advanced configuration
**********************
diff --git a/src/zeroconf/ZeroconfGlue.cxx b/src/zeroconf/ZeroconfGlue.cxx
index 21b9403d0..c0fb122b1 100644
--- a/src/zeroconf/ZeroconfGlue.cxx
+++ b/src/zeroconf/ZeroconfGlue.cxx
@@ -27,13 +27,16 @@
#include "util/Domain.hxx"
#include "Log.hxx"
#include "util/Compiler.h"
+#include <unistd.h>
+#include <limits.h>
+#include <regex>
static constexpr Domain zeroconf_domain("zeroconf");
/* The default service name to publish
* (overridden by 'zeroconf_name' config parameter)
*/
-#define SERVICE_NAME "Music Player"
+#define SERVICE_NAME "Music Player @ %h"
#define DEFAULT_ZEROCONF_ENABLED 1
@@ -59,6 +62,11 @@ ZeroconfInit(const ConfigData &config, gcc_unused EventLoop &loop)
serviceName = config.GetString(ConfigOption::ZEROCONF_NAME,
SERVICE_NAME);
+ char hostname[HOST_NAME_MAX+1];
+ gethostname(hostname, HOST_NAME_MAX);
+ std::string sName = std::regex_replace(serviceName, std::regex("%h"), hostname);
+ serviceName = sName.c_str();
+
#ifdef HAVE_AVAHI
AvahiInit(loop, serviceName);
#endif