]> git.sesse.net Git - nageru/blobdiff - futatabi/flags.cpp
In Futatabi, make it possible to set custom source labels.
[nageru] / futatabi / flags.cpp
index fa1fe6ec5878177a56472bd449ae343985b7a097..a8ae958668ab0653d83cd6239efbc810d8b1ee10 100644 (file)
@@ -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;
@@ -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;