From: Michal Nazarewicz <min...@mina86.com> --- src/idle.c | 45 ++++++++++++++++++++++++++++++--------------- 1 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/src/idle.c b/src/idle.c index dc556ba..8929631 100644 --- a/src/idle.c +++ b/src/idle.c @@ -25,8 +25,9 @@ #include <stdbool.h> #include <stdio.h> -int cmd_idle(int argc, char **argv, - struct mpd_connection *connection) +static int idle_preapare(int argc, char **argv, + struct mpd_connection *connection, + enum mpd_idle *idlep) { enum mpd_idle idle = 0; @@ -44,35 +45,49 @@ int cmd_idle(int argc, char **argv, idle |= parsed; } - idle = idle == 0 ? mpd_run_idle(connection) - : mpd_run_idle_mask(connection, idle); - if (idle == 0 && + *idlep = idle; + return 0; +} + +static int idle(struct mpd_connection *connection, enum mpd_idle mask) +{ + mask = mask == 0 + ? mpd_run_idle(connection) + : mpd_run_idle_mask(connection, mask); + if (mask == 0 && mpd_connection_get_error(connection) != MPD_ERROR_SUCCESS) printErrorAndExit(connection); - for (unsigned j = 0;; ++j) { - enum mpd_idle i = 1 << j; + for (enum mpd_idle i = 1; i && i <= mask; i <<= 1) { const char *name = mpd_idle_name(i); if (name == NULL) break; - if (idle & i) - printf("%s\n", name); + if (mask & i) + puts(name); } return 0; } -int -cmd_idleloop(int argc, char **argv, struct mpd_connection *connection) +int cmd_idle(int argc, char **argv, struct mpd_connection *connection) { + enum mpd_idle mask; + int ret = idle_preapare(argc, argv, connection, &mask); + return ret == 0 ? idle(connection, mask) : ret; +} + +int cmd_idleloop(int argc, char **argv, struct mpd_connection *connection) +{ + enum mpd_idle mask; int ret; - while (true) { - ret = cmd_idle(argc, argv, connection); + ret = idle_preapare(argc, argv, connection, &mask); + while (ret == 0) { + ret = idle(connection, mask); fflush(stdout); - if (ret != 0) - return ret; } + + return ret; } -- 1.7.7.3 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Musicpd-dev-team mailing list Musicpd-dev-team@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team