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 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 +#include +#include 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