+ } else if (pa_streq(argv[optind], "set-card-profile")) {
+ action = SET_CARD_PROFILE;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a card name/index and a profile name"));
+ goto quit;
+ }
+
+ card_name = pa_xstrdup(argv[optind+1]);
+ profile_name = pa_xstrdup(argv[optind+2]);
+
+ } else if (pa_streq(argv[optind], "set-sink-port")) {
+ action = SET_SINK_PORT;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink name/index and a port name"));
+ goto quit;
+ }
+
+ sink_name = pa_xstrdup(argv[optind+1]);
+ port_name = pa_xstrdup(argv[optind+2]);
+
+ } else if (pa_streq(argv[optind], "set-default-sink")) {
+ action = SET_DEFAULT_SINK;
+
+ if (argc != optind+2) {
+ pa_log(_("You have to specify a sink name"));
+ goto quit;
+ }
+
+ sink_name = pa_xstrdup(argv[optind+1]);
+
+ } else if (pa_streq(argv[optind], "set-source-port")) {
+ action = SET_SOURCE_PORT;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a source name/index and a port name"));
+ goto quit;
+ }
+
+ source_name = pa_xstrdup(argv[optind+1]);
+ port_name = pa_xstrdup(argv[optind+2]);
+
+ } else if (pa_streq(argv[optind], "set-default-source")) {
+ action = SET_DEFAULT_SOURCE;
+
+ if (argc != optind+2) {
+ pa_log(_("You have to specify a source name"));
+ goto quit;
+ }
+
+ source_name = pa_xstrdup(argv[optind+1]);
+
+ } else if (pa_streq(argv[optind], "set-sink-volume")) {
+ action = SET_SINK_VOLUME;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink name/index and a volume"));
+ goto quit;
+ }
+
+ sink_name = pa_xstrdup(argv[optind+1]);
+
+ if (parse_volume(argv[optind+2], &volume, &volume_flags) < 0)
+ goto quit;
+
+ } else if (pa_streq(argv[optind], "set-source-volume")) {
+ action = SET_SOURCE_VOLUME;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a source name/index and a volume"));
+ goto quit;
+ }
+
+ source_name = pa_xstrdup(argv[optind+1]);
+
+ if (parse_volume(argv[optind+2], &volume, &volume_flags) < 0)
+ goto quit;
+
+ } else if (pa_streq(argv[optind], "set-sink-input-volume")) {
+ action = SET_SINK_INPUT_VOLUME;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink input index and a volume"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+1], &sink_input_idx) < 0) {
+ pa_log(_("Invalid sink input index"));
+ goto quit;
+ }
+
+ if (parse_volume(argv[optind+2], &volume, &volume_flags) < 0)
+ goto quit;
+
+ } else if (pa_streq(argv[optind], "set-source-output-volume")) {
+ action = SET_SOURCE_OUTPUT_VOLUME;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a source output index and a volume"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+1], &source_output_idx) < 0) {
+ pa_log(_("Invalid source output index"));
+ goto quit;
+ }
+
+ if (parse_volume(argv[optind+2], &volume, &volume_flags) < 0)
+ goto quit;
+
+ } else if (pa_streq(argv[optind], "set-sink-mute")) {
+ action = SET_SINK_MUTE;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink name/index and a mute boolean"));
+ goto quit;
+ }
+
+ if ((mute = parse_mute(argv[optind+2])) == INVALID_MUTE) {
+ pa_log(_("Invalid mute specification"));
+ goto quit;
+ }
+
+ sink_name = pa_xstrdup(argv[optind+1]);
+
+ } else if (pa_streq(argv[optind], "set-source-mute")) {
+ action = SET_SOURCE_MUTE;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a source name/index and a mute boolean"));
+ goto quit;
+ }
+
+ if ((mute = parse_mute(argv[optind+2])) == INVALID_MUTE) {
+ pa_log(_("Invalid mute specification"));
+ goto quit;
+ }
+
+ source_name = pa_xstrdup(argv[optind+1]);
+
+ } else if (pa_streq(argv[optind], "set-sink-input-mute")) {
+ action = SET_SINK_INPUT_MUTE;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a sink input index and a mute boolean"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+1], &sink_input_idx) < 0) {
+ pa_log(_("Invalid sink input index specification"));
+ goto quit;
+ }
+
+ if ((mute = parse_mute(argv[optind+2])) == INVALID_MUTE) {
+ pa_log(_("Invalid mute specification"));
+ goto quit;
+ }
+
+ } else if (pa_streq(argv[optind], "set-source-output-mute")) {
+ action = SET_SOURCE_OUTPUT_MUTE;
+
+ if (argc != optind+3) {
+ pa_log(_("You have to specify a source output index and a mute boolean"));
+ goto quit;
+ }
+
+ if (pa_atou(argv[optind+1], &source_output_idx) < 0) {
+ pa_log(_("Invalid source output index specification"));
+ goto quit;
+ }
+
+ if ((mute = parse_mute(argv[optind+2])) == INVALID_MUTE) {
+ pa_log(_("Invalid mute specification"));
+ goto quit;
+ }
+
+ } else if (pa_streq(argv[optind], "subscribe"))
+
+ action = SUBSCRIBE;
+
+ else if (pa_streq(argv[optind], "set-sink-formats")) {
+ int32_t tmp;
+
+ if (argc != optind+3 || pa_atoi(argv[optind+1], &tmp) < 0) {
+ pa_log(_("You have to specify a sink index and a semicolon-separated list of supported formats"));
+ goto quit;
+ }
+
+ sink_idx = tmp;
+ action = SET_SINK_FORMATS;
+ formats = pa_xstrdup(argv[optind+2]);
+
+ } else if (pa_streq(argv[optind], "set-port-latency-offset")) {
+ action = SET_PORT_LATENCY_OFFSET;
+
+ if (argc != optind+4) {
+ pa_log(_("You have to specify a card name/index, a port name and a latency offset"));
+ goto quit;
+ }
+
+ card_name = pa_xstrdup(argv[optind+1]);
+ port_name = pa_xstrdup(argv[optind+2]);
+ if (pa_atoi(argv[optind + 3], &latency_offset) < 0) {
+ pa_log(_("Could not parse latency offset"));
+ goto quit;
+ }
+
+ } else if (pa_streq(argv[optind], "help")) {