X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fflags.cpp;h=a8ae958668ab0653d83cd6239efbc810d8b1ee10;hb=refs%2Fheads%2Fmaster;hp=eea7c0700358f2752318e9d0d18fa56eff536d47;hpb=9ffd4f03f314cc6e0254449593def95c9bc203d6;p=nageru diff --git a/futatabi/flags.cpp b/futatabi/flags.cpp index eea7c07..a8ae958 100644 --- a/futatabi/flags.cpp +++ b/futatabi/flags.cpp @@ -44,6 +44,7 @@ void usage() fprintf(stderr, " --http-port PORT which port to listen on for output\n"); fprintf(stderr, " --tally-url URL URL to get tally color from (polled every 100 ms)\n"); fprintf(stderr, " --midi-mapping=FILE start with the given MIDI controller mapping\n"); + fprintf(stderr, " -l --source-label NUM:LABEL label source NUM as LABEL, if visible\n"); } void parse_flags(int argc, char *const argv[]) @@ -61,11 +62,12 @@ void parse_flags(int argc, char *const argv[]) { "cue-in-point-padding", required_argument, 0, OPTION_CUE_IN_POINT_PADDING }, { "cue-out-point-padding", required_argument, 0, OPTION_CUE_OUT_POINT_PADDING }, { "midi-mapping", required_argument, 0, OPTION_MIDI_MAPPING }, + { "source-label", required_argument, 0, 'l' }, { 0, 0, 0, 0 } }; for (;;) { int option_index = 0; - int c = getopt_long(argc, argv, "w:h:r:q:d:", long_options, &option_index); + int c = getopt_long(argc, argv, "w:h:r:q:d:l:", long_options, &option_index); if (c == -1) { break; @@ -85,7 +87,7 @@ void parse_flags(int argc, char *const argv[]) global_flags.output_framerate = num; } else { fprintf(stderr, "Invalid frame rate given (must be on the form N or N/M)\n"); - abort(); + exit(1); } break; } @@ -99,6 +101,18 @@ void parse_flags(int argc, char *const argv[]) case 'd': global_flags.working_directory = optarg; break; + case 'l': { + int prefix_len; + unsigned channel_idx; + if (sscanf(optarg, "%u:%n", &channel_idx, &prefix_len) == 1) { + const char *label = optarg + prefix_len; + global_flags.source_labels[channel_idx] = label; + } else { + fprintf(stderr, "Invalid source label format (must be on the form NUM:LABEL)\n"); + exit(1); + } + break; + } case OPTION_HTTP_PORT: global_flags.http_port = atoi(optarg); break; @@ -123,19 +137,19 @@ void parse_flags(int argc, char *const argv[]) fprintf(stderr, "Unknown option '%s'\n", argv[option_index]); fprintf(stderr, "\n"); usage(); - abort(); + exit(1); } } if (global_flags.interpolation_quality < 0 || global_flags.interpolation_quality > 4) { fprintf(stderr, "Interpolation quality must be 0, 1, 2, 3 or 4.\n"); usage(); - abort(); + exit(1); } if (global_flags.cue_in_point_padding_seconds < 0.0 || global_flags.cue_out_point_padding_seconds < 0.0) { fprintf(stderr, "Cue point padding cannot be negative.\n"); usage(); - abort(); + exit(1); } }