aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ponymix.cc44
1 files changed, 35 insertions, 9 deletions
diff --git a/ponymix.cc b/ponymix.cc
index 08c2ad5..d5b807f 100644
--- a/ponymix.cc
+++ b/ponymix.cc
@@ -383,23 +383,23 @@ static int Move(Pulse& ponymix, int argc, char* argv[]) {
if (argc != 1) errx(1, "error: move requires 1 argument");
// this assignment is a lie. stfu g++
- enum DeviceType target_type = opt_devtype;
+ enum DeviceType target_devtype = opt_devtype;
switch (opt_devtype) {
case DEVTYPE_SOURCE:
opt_devtype = DEVTYPE_SOURCE_OUTPUT;
case DEVTYPE_SOURCE_OUTPUT:
- target_type = DEVTYPE_SOURCE;
+ target_devtype = DEVTYPE_SOURCE;
break;
case DEVTYPE_SINK:
opt_devtype = DEVTYPE_SINK_INPUT;
case DEVTYPE_SINK_INPUT:
- target_type = DEVTYPE_SINK;
+ target_devtype = DEVTYPE_SINK;
break;
}
// Does this even work?
auto source = string_to_device_or_die(ponymix, opt_device, opt_devtype);
- auto target = string_to_device_or_die(ponymix, argv[0], target_type);
+ auto target = string_to_device_or_die(ponymix, argv[0], target_devtype);
return !ponymix.Move(*source, *target);
}
@@ -442,7 +442,13 @@ void usage() {
" -c, --card CARD target card (index or name)\n"
" -d, --device DEVICE target device (index or name)\n"
- " -t, --devtype TYPE device type\n", stdout);
+ " -t, --devtype TYPE device type\n"
+ " --source alias to -t source\n"
+ " --input alais to -t source\n"
+ " --sink alias to -t sink\n"
+ " --output alias to -t sink\n"
+ " --sink-input alias to -t sink-input\n"
+ " --source-output alias to -t source-output\n", stdout);
fputs("\nCommon Commands:\n"
" list list available devices\n"
@@ -477,10 +483,16 @@ void usage() {
bool parse_options(int argc, char** argv) {
static const struct option opts[] = {
- { "card", required_argument, 0, 'c' },
- { "device", required_argument, 0, 'd' },
- { "help", no_argument, 0, 'h' },
- { "type", required_argument, 0, 't' },
+ { "card", required_argument, 0, 'c' },
+ { "device", required_argument, 0, 'd' },
+ { "help", no_argument, 0, 'h' },
+ { "type", required_argument, 0, 't' },
+ { "sink", no_argument, 0, 0x100 },
+ { "output", no_argument, 0, 0x101 },
+ { "source", no_argument, 0, 0x102 },
+ { "input", no_argument, 0, 0x103 },
+ { "sink-input", no_argument, 0, 0x104 },
+ { "source-output", no_argument, 0, 0x105 },
{ 0, 0, 0, 0 },
};
@@ -502,6 +514,20 @@ bool parse_options(int argc, char** argv) {
case 't':
opt_devtype = string_to_devtype_or_die(optarg);
break;
+ case 0x100:
+ case 0x101:
+ opt_devtype = DEVTYPE_SINK;
+ break;
+ case 0x102:
+ case 0x103:
+ opt_devtype = DEVTYPE_SOURCE;
+ break;
+ case 0x104:
+ opt_devtype = DEVTYPE_SINK_INPUT;
+ break;
+ case 0x105:
+ opt_devtype = DEVTYPE_SOURCE_OUTPUT;
+ break;
default:
return false;
}