diff --git a/options.ixx b/options.ixx index 8b93440b..244f5bc8 100644 --- a/options.ixx +++ b/options.ixx @@ -84,6 +84,15 @@ export struct Options int cdr_error_threshold; int scsi_timeout; + // built-in defaults for numeric options, shared by the constructor and printUsage() so help shows the compile-time default rather than an argv override + static constexpr int retries_default = 0; + static constexpr int skip_fill_default = 0x55; + static constexpr int plextor_leadin_retries_default = 4; + static constexpr int mediatek_leadout_retries_default = 32; + static constexpr int audio_silence_threshold_default = 32; + static constexpr int cdr_error_threshold_default = 16; + static constexpr int scsi_timeout_default = 50000; + Options(int argc, const char *argv[]) : help(false) @@ -97,26 +106,26 @@ export struct Options , overwrite(false) , force_split(false) , leave_unchanged(false) - , retries(0) + , retries(retries_default) , refine_subchannel(false) , refine_sector_mode(false) , lba_end_by_subcode(false) , force_qtoc(false) , legacy_subs(false) - , skip_fill(0x55) + , skip_fill(skip_fill_default) , filesystem_trim(false) , plextor_skip_leadin(false) - , plextor_leadin_retries(4) + , plextor_leadin_retries(plextor_leadin_retries_default) , plextor_leadin_force_store(false) , mediatek_skip_leadout(false) - , mediatek_leadout_retries(32) + , mediatek_leadout_retries(mediatek_leadout_retries_default) , kreon_partial_ss(false) , dvd_raw(false) , bd_raw(false) , disable_cdtext(false) , correct_offset_shift(false) , offset_shift_relocate(false) - , audio_silence_threshold(32) + , audio_silence_threshold(audio_silence_threshold_default) , overread_leadout(false) , force_unscrambled(false) , force_refine(false) @@ -125,8 +134,8 @@ export struct Options , drive_test_skip_cache_read(false) , skip_subcode_desync(false) , rings(false) - , cdr_error_threshold(16) - , scsi_timeout(50000) + , cdr_error_threshold(cdr_error_threshold_default) + , scsi_timeout(scsi_timeout_default) { for(int i = 1; i < argc; ++i) arguments += str_quoted_if_space(argv[i]) + " "; @@ -400,7 +409,7 @@ export struct Options LOG("\t--skeleton \tgenerate skeleton after dump"); LOG("\t--drive=VALUE \tdrive to use, first available drive with disc, if not provided"); LOG("\t--speed=VALUE \tdrive read speed, optimal drive speed will be used if not provided"); - LOG("\t--retries=VALUE \tnumber of sector retries in case of SCSI/C2 error (default: {})", retries); + LOG("\t--retries=VALUE \tnumber of sector retries in case of SCSI/C2 error (default: {})", retries_default); LOG("\t--image-path=VALUE \tdump files base directory"); LOG("\t--image-name=VALUE \tdump files prefix, autogenerated in dump mode if not provided"); LOG("\t--overwrite \toverwrites previously generated dump files"); @@ -416,19 +425,19 @@ export struct Options LOG(""); LOG("\t(drive specific)"); LOG("\t--plextor-skip-leadin \tskip dumping lead-in using negative range"); - LOG("\t--plextor-leadin-retries=VALUE \tmaximum number of lead-in retries per session (default: {})", plextor_leadin_retries); + LOG("\t--plextor-leadin-retries=VALUE \tmaximum number of lead-in retries per session (default: {})", plextor_leadin_retries_default); LOG("\t--plextor-leadin-force-store \tstore unverified lead-in"); LOG("\t--kreon-partial-ss \tget minimal security sector (fixes bad firmware)"); LOG("\t--dvd-raw \tdump raw DVD sectors (OmniDrive)"); LOG("\t--bd-raw \tdump raw BD sectors (OmniDrive)"); LOG("\t--mediatek-skip-leadout \tskip extracting lead-out from drive cache"); - LOG("\t--mediatek-leadout-retries \tnumber of preceding lead-out sector reads to fill up the cache (default: {})", mediatek_leadout_retries); + LOG("\t--mediatek-leadout-retries \tnumber of preceding lead-out sector reads to fill up the cache (default: {})", mediatek_leadout_retries_default); LOG("\t--disable-cdtext \tdisable CD-TEXT reading"); LOG(""); LOG("\t(offset)"); LOG("\t--force-offset=VALUE \toverride offset autodetection and use supplied value"); - LOG("\t--audio-silence-threshold=VALUE \tmaximum absolute sample value to treat it as silence (default: {})", audio_silence_threshold); + LOG("\t--audio-silence-threshold=VALUE \tmaximum absolute sample value to treat it as silence (default: {})", audio_silence_threshold_default); LOG("\t--correct-offset-shift \tcorrect disc write offset shift"); LOG("\t--offset-shift-relocate \tdon't merge offset groups with non-matching LBA"); LOG(""); @@ -437,7 +446,7 @@ export struct Options LOG("\t--leave-unchanged \tdon't replace erroneous sectors with generated ones"); LOG("\t--force-qtoc \tforce QTOC based track split"); LOG("\t--legacy-subs \treplicate DIC style subchannel based track split"); - LOG("\t--skip-fill=VALUE \tfill byte value for skipped sectors (default: 0x{:02X})", skip_fill); + LOG("\t--skip-fill=VALUE \tfill byte value for skipped sectors (default: 0x{:02X})", skip_fill_default); LOG("\t--filesystem-trim \ttrim data track to filesystem size (ISO9660: all media, UDF: DVD and later)"); LOG(""); LOG("\t(drive test)"); @@ -461,8 +470,8 @@ export struct Options LOG("\t--force-flash \tskip drive vendor/model verification when flashing firmware (WARNING: can brick your drive)"); LOG("\t--skip-subcode-desync \tskip storing sectors with mismatching subcode Q absolute MSF"); LOG("\t--rings \tenable filesystem based rings detection"); - LOG("\t--cdr-error-threshold=VALUE \tmaximum number of trailing C2 errors allowed on a CD-R (default: {})", cdr_error_threshold); - LOG("\t--scsi-timeout=VALUE \tSCSI command timeout, milliseconds (default: {})", scsi_timeout); + LOG("\t--cdr-error-threshold=VALUE \tmaximum number of trailing C2 errors allowed on a CD-R (default: {})", cdr_error_threshold_default); + LOG("\t--scsi-timeout=VALUE \tSCSI command timeout, milliseconds (default: {})", scsi_timeout_default); } };