]> git.sesse.net Git - nageru/commitdiff
Errors in flags do not need core dumps.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 31 Mar 2019 12:16:43 +0000 (14:16 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 31 Mar 2019 12:21:14 +0000 (14:21 +0200)
futatabi/flags.cpp
nageru/flags.cpp

index eea7c0700358f2752318e9d0d18fa56eff536d47..fa1fe6ec5878177a56472bd449ae343985b7a097 100644 (file)
@@ -85,7 +85,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;
                }
@@ -123,19 +123,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);
        }
 }
index b025076c0639361fd74307a99af986582e089999..bdb9821d5aafed89dbe453be4865600f888beb68 100644 (file)
@@ -87,7 +87,7 @@ map<unsigned, unsigned> parse_mjpeg_export_cards(char *optarg)
                }
                if (range_end < range_begin) {
                        fprintf(stderr, "ERROR: Invalid range %u-%u in --mjpeg-export-cards=\n", range_begin, range_end);
-                       abort();
+                       exit(1);
                }
                if (range_end >= unsigned(global_flags.num_cards)) {
                        // There are situations where we could possibly want to
@@ -96,12 +96,12 @@ map<unsigned, unsigned> parse_mjpeg_export_cards(char *optarg)
                        // require more functionality the the JPEG encoder.
                        fprintf(stderr, "ERROR: Asked for (zero-indexed) card %u in --mjpeg-export-cards=, but there are only %u cards\n",
                                range_end, global_flags.num_cards);
-                       abort();
+                       exit(1);
                }
                for (unsigned card_idx = range_begin; card_idx <= range_end; ++card_idx) {
                        if (ret.count(card_idx)) {
                                fprintf(stderr, "ERROR: Card %u was given twice in --mjpeg-export-cards=\n", card_idx);
-                               abort();
+                               exit(1);
                        }
                        ret[card_idx] = stream_idx++;
                }
@@ -317,7 +317,7 @@ void parse_flags(Program program, int argc, char * const argv[])
                        char *ptr = strchr(optarg, ',');
                        if (ptr == nullptr) {
                                fprintf(stderr, "ERROR: Invalid argument '%s' to --map-signal (needs a signal and a card number, separated by comma)\n", optarg);
-                               abort();
+                               exit(1);
                        }
                        *ptr = '\0';
                        const int signal_num = atoi(optarg);
@@ -325,7 +325,7 @@ void parse_flags(Program program, int argc, char * const argv[])
                        if (global_flags.default_stream_mapping.count(signal_num)) {
                                fprintf(stderr, "ERROR: Signal %d already mapped to card %d\n",
                                        signal_num, global_flags.default_stream_mapping[signal_num]);
-                               abort();
+                               exit(1);
                        }
                        global_flags.default_stream_mapping[signal_num] = card_num;
                        break;
@@ -489,13 +489,13 @@ void parse_flags(Program program, int argc, char * const argv[])
                        char *ptr = strchr(optarg, ',');
                        if (ptr == nullptr) {
                                fprintf(stderr, "ERROR: Invalid argument '%s' to --input-ycbcr-interpretation (needs a card and an interpretation, separated by comma)\n", optarg);
-                               abort();
+                               exit(1);
                        }
                        *ptr = '\0';
                        const int card_num = atoi(optarg);
                        if (card_num < 0 || card_num >= MAX_VIDEO_CARDS) {
                                fprintf(stderr, "ERROR: Invalid card number %d\n", card_num);
-                               abort();
+                               exit(1);
                        }
 
                        YCbCrInterpretation interpretation;
@@ -510,7 +510,7 @@ void parse_flags(Program program, int argc, char * const argv[])
                                        interpretation.full_range = false;
                                } else {
                                        fprintf(stderr, "ERROR: Invalid Y'CbCr range '%s' (must be “full” or “limited”)\n", range);
-                                       abort();
+                                       exit(1);
                                }
                        }
 
@@ -524,11 +524,11 @@ void parse_flags(Program program, int argc, char * const argv[])
                                interpretation.ycbcr_coefficients_auto = true;
                                if (interpretation.full_range) {
                                        fprintf(stderr, "ERROR: Cannot use “auto” Y'CbCr coefficients with full range\n");
-                                       abort();
+                                       exit(1);
                                }
                        } else {
                                fprintf(stderr, "ERROR: Invalid Y'CbCr coefficients '%s' (must be “rec601”, “rec709” or “auto”)\n", interpretation_str);
-                               abort();
+                               exit(1);
                        }
                        global_flags.ycbcr_interpretation[card_num] = interpretation;
                        break;
@@ -539,7 +539,7 @@ void parse_flags(Program program, int argc, char * const argv[])
                case OPTION_MJPEG_EXPORT_CARDS: {
                        if (card_to_mjpeg_stream_export_set) {
                                fprintf(stderr, "ERROR: --mjpeg-export-cards given twice\n");
-                               abort();
+                               exit(1);
                        }
                        global_flags.card_to_mjpeg_stream_export = parse_mjpeg_export_cards(optarg);    
                        card_to_mjpeg_stream_export_set = true;
@@ -552,28 +552,28 @@ void parse_flags(Program program, int argc, char * const argv[])
                        fprintf(stderr, "Unknown option '%s'\n", argv[option_index]);
                        fprintf(stderr, "\n");
                        usage(program);
-                       abort();
+                       exit(1);
                }
        }
 
        if (global_flags.uncompressed_video_to_http &&
            global_flags.x264_video_to_http) {
                fprintf(stderr, "ERROR: --http-uncompressed-video and --http-x264-video are mutually incompatible\n");
-               abort();
+               exit(1);
        }
        if (global_flags.num_cards <= 0) {
                fprintf(stderr, "ERROR: --num-cards must be at least 1\n");
-               abort();
+               exit(1);
        }
        if (global_flags.output_card < -1 ||
            global_flags.output_card >= global_flags.num_cards) {
                fprintf(stderr, "ERROR: --output-card points to a nonexistant card\n");
-               abort();
+               exit(1);
        }
        if (!global_flags.transcode_audio && global_flags.stream_audio_codec_name.empty()) {
                fprintf(stderr, "ERROR: If not transcoding audio, you must specify ahead-of-time what audio codec is in use\n");
                fprintf(stderr, "       (using --http-audio-codec).\n");
-               abort();
+               exit(1);
        }
        if (global_flags.x264_speedcontrol) {
                if (!global_flags.x264_preset.empty() && global_flags.x264_preset != "faster") {
@@ -594,14 +594,14 @@ void parse_flags(Program program, int argc, char * const argv[])
        if (global_flags.width <= 0 || (global_flags.width % 8) != 0 ||
            global_flags.height <= 0 || (global_flags.height % 8) != 0) {
                fprintf(stderr, "ERROR: --width and --height must be positive integers divisible by 8\n");
-               abort();
+               exit(1);
        }
 
        for (pair<int, int> mapping : global_flags.default_stream_mapping) {
                if (mapping.second >= global_flags.num_cards) {
                        fprintf(stderr, "ERROR: Signal %d mapped to card %d, which doesn't exist (try adjusting --num-cards)\n",
                                mapping.first, mapping.second);
-                       abort();
+                       exit(1);
                }
        }
 
@@ -633,22 +633,22 @@ void parse_flags(Program program, int argc, char * const argv[])
                global_flags.ycbcr_auto_coefficients = false;
        } else {
                fprintf(stderr, "ERROR: --output-ycbcr-coefficients must be “rec601”, “rec709” or “auto”\n");
-               abort();
+               exit(1);
        }
 
        if (global_flags.output_buffer_frames < 0.0f) {
                // Actually, even zero probably won't make sense; there is some internal
                // delay to the card.
                fprintf(stderr, "ERROR: --output-buffer-frames can't be negative.\n");
-               abort();
+               exit(1);
        }
        if (global_flags.output_slop_frames < 0.0f) {
                fprintf(stderr, "ERROR: --output-slop-frames can't be negative.\n");
-               abort();
+               exit(1);
        }
        if (global_flags.max_input_queue_frames < 1) {
                fprintf(stderr, "ERROR: --max-input-queue-frames must be at least 1.\n");
-               abort();
+               exit(1);
        }
        if (global_flags.max_input_queue_frames > 10) {
                fprintf(stderr, "WARNING: --max-input-queue-frames has little effect over 10.\n");
@@ -657,7 +657,7 @@ void parse_flags(Program program, int argc, char * const argv[])
        if (!isinf(global_flags.x264_crf)) {  // CRF mode is selected.
                if (global_flags.x264_bitrate != -1) {
                        fprintf(stderr, "ERROR: --x264-bitrate and --x264-crf are mutually incompatible.\n");
-                       abort();
+                       exit(1);
                }
                if (global_flags.x264_vbv_max_bitrate != -1 && global_flags.x264_vbv_buffer_size != -1) {
                        fprintf(stderr, "WARNING: VBV settings are ignored with --x264-crf.\n");