From f1a456c2b13b8885bae41ddaa051447c3742e498 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 25 Mar 2017 20:37:13 +0100 Subject: [PATCH] main: move default_settings_name() to mpdclient.c --- src/main.c | 34 +--------------------------------- src/mpdclient.c | 38 ++++++++++++++++++++++++++++++++++++++ src/mpdclient.h | 10 ++++++++++ 3 files changed, 49 insertions(+), 33 deletions(-) diff --git a/src/main.c b/src/main.c index a5a803f..11e46e4 100644 --- a/src/main.c +++ b/src/main.c @@ -146,38 +146,6 @@ do_mpd_update(void) mpd->events = 0; } -static char * -settings_name(const struct mpd_settings *settings) -{ - const char *host = mpd_settings_get_host(settings); - if (host == NULL) - host = _("unknown"); - - if (host[0] == '/') - return g_strdup(host); - - unsigned port = mpd_settings_get_port(settings); - if (port == 0 || port == 6600) - return g_strdup(host); - - return g_strdup_printf("%s:%u", host, port); -} - -static char * -default_settings_name(void) -{ - struct mpd_settings *settings = - mpd_settings_new(options.host, options.port, 0, - NULL, options.password); - if (settings == NULL) - return g_strdup(_("unknown")); - - char *name = settings_name(settings); - mpd_settings_free(settings); - - return name; -} - /** * This timer is installed when the connection to the MPD server is * broken. It tries to recover by reconnecting periodically. @@ -189,7 +157,7 @@ timer_reconnect(gcc_unused gpointer data) reconnect_source_id = 0; - char *name = default_settings_name(); + char *name = mpdclient_settings_name(mpd); screen_status_printf(_("Connecting to %s... [Press %s to abort]"), name, get_key_names(CMD_QUIT, false)); g_free(name); diff --git a/src/mpdclient.c b/src/mpdclient.c index 5903f14..8c18a0c 100644 --- a/src/mpdclient.c +++ b/src/mpdclient.c @@ -194,6 +194,44 @@ mpdclient_free(struct mpdclient *c) g_free(c); } +static char * +settings_name(const struct mpd_settings *settings) +{ + assert(settings != NULL); + + const char *host = mpd_settings_get_host(settings); + if (host == NULL) + host = "unknown"; + + if (host[0] == '/') + return g_strdup(host); + + unsigned port = mpd_settings_get_port(settings); + if (port == 0 || port == 6600) + return g_strdup(host); + + return g_strdup_printf("%s:%u", host, port); +} + +char * +mpdclient_settings_name(const struct mpdclient *c) +{ + assert(c != NULL); + +#ifdef ENABLE_ASYNC_CONNECT + return settings_name(c->settings); +#else + struct mpd_settings *settings = + mpd_settings_new(c->host, c->port, 0, NULL, NULL); + if (settings == NULL) + return g_strdup("unknown"); + + char *name = settings_name(settings); + mpd_settings_free(settings); + return name; +#endif +} + static void mpdclient_status_free(struct mpdclient *c) { diff --git a/src/mpdclient.h b/src/mpdclient.h index b007097..d51013f 100644 --- a/src/mpdclient.h +++ b/src/mpdclient.h @@ -106,6 +106,16 @@ mpdclient_new(const gchar *host, unsigned port, void mpdclient_free(struct mpdclient *c); +/** + * Determine a human-readable "name" of the settings currently used to + * connect to MPD. + * + * @return an allocated string that needs to be freed (with g_free()) + * by the caller + */ +char * +mpdclient_settings_name(const struct mpdclient *c); + gcc_pure static inline bool mpdclient_is_connected(const struct mpdclient *c) -- 2.30.2