int cmd_volume ( int argc, char ** argv, mpd_Connection * conn ) { struct int_value_change ch; if(argc==1) { if(!parse_int_value_change(argv[0], &ch)) DIE("\"%s\" is not an integer\n", argv[0]); } else { mpd_Status *status; status = getStatus(conn); printf("volume:%3i%c \n",status->volume,'%'); mpd_freeStatus(status); return 0; } if (ch.is_relative) mpd_sendVolumeCommand(conn,ch.value); else mpd_sendSetvolCommand(conn,ch.value); my_finishCommand(conn); return 1; }
int cmd_volume(int argc, char **argv, struct mpd_connection *conn) { struct int_value_change ch; if (argc == 1) { if (!parse_int_value_change(argv[0], &ch)) DIE("\"%s\" is not an integer\n", argv[0]); } else { struct mpd_status *status = getStatus(conn); if (mpd_status_get_volume(status) >= 0) printf("volume:%3i%c\n", mpd_status_get_volume(status), '%'); else printf("volume: n/a\n"); mpd_status_free(status); return 0; } if (ch.is_relative) { #if LIBMPDCLIENT_CHECK_VERSION(2,9,0) if (mpd_connection_cmp_server_version(conn, 0, 18, 0) >= 0) { /* MPD 0.18 knows the "volume" command for relative changes */ if (!mpd_run_change_volume(conn, ch.value)) printErrorAndExit(conn); return 1; } #endif struct mpd_status *status = getStatus(conn); int old_volume = mpd_status_get_volume(status); mpd_status_free(status); ch.value += old_volume; if (ch.value < 0) ch.value = 0; else if (ch.value > 100) ch.value = 100; if (ch.value == old_volume) return 1; } if (!mpd_run_set_volume(conn, ch.value)) printErrorAndExit(conn); return 1; }
int cmd_volume ( int argc, char ** argv, struct mpd_connection *conn ) { struct int_value_change ch; struct mpd_status *status; if(argc==1) { if(!parse_int_value_change(argv[0], &ch)) DIE("\"%s\" is not an integer\n", argv[0]); } else { status = getStatus(conn); if (mpd_status_get_volume(status) >= 0) printf("volume:%3i%c\n", mpd_status_get_volume(status), '%'); else printf("volume: n/a\n"); mpd_status_free(status); return 0; } if (ch.is_relative) { int old_volume; status = getStatus(conn); old_volume = mpd_status_get_volume(status); mpd_status_free(status); ch.value += old_volume; if (ch.value < 0) ch.value = 0; else if (ch.value > 100) ch.value = 100; if (ch.value == old_volume) return 1; } if (!mpd_run_set_volume(conn, ch.value)) printErrorAndExit(conn); return 1; }