summaryrefslogtreecommitdiffstats
path: root/options/m_config_frontend.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2020-03-13 16:49:39 +0100
committerwm4 <wm4@nowhere>2020-03-13 17:34:46 +0100
commit8d965a1bfb3782343a03cff44977f11bb920f0b1 (patch)
tree2d115c24510ab36cc9ac7af8dea2b710537561c9 /options/m_config_frontend.c
parent5d5a7e19537a036fe16ce04555e6ce9449c47494 (diff)
downloadmpv-8d965a1bfb3782343a03cff44977f11bb920f0b1.tar.bz2
mpv-8d965a1bfb3782343a03cff44977f11bb920f0b1.tar.xz
options: change how option range min/max is handled
Before this commit, option declarations used M_OPT_MIN/M_OPT_MAX (and some other identifiers based on these) to signal whether an option had min/max values. Remove these flags, and make it use a range implicitly on the condition if min<max is true. This requires care in all cases when only M_OPT_MIN or M_OPT_MAX were set (instead of both). Generally, the commit replaces all these instances with using DBL_MAX/DBL_MIN for the "unset" part of the range. This also happens to fix some cases where you could pass over-large values to integer options, which were silently truncated, but now cause an error. This commit has some higher potential for regressions.
Diffstat (limited to 'options/m_config_frontend.c')
-rw-r--r--options/m_config_frontend.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/options/m_config_frontend.c b/options/m_config_frontend.c
index ab93203645..467c13eb8f 100644
--- a/options/m_config_frontend.c
+++ b/options/m_config_frontend.c
@@ -15,6 +15,7 @@
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <float.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
@@ -786,17 +787,17 @@ void m_config_print_option_list(const struct m_config *config, const char *name)
struct m_opt_choice_alternatives *alt = opt->priv;
for (int n = 0; alt[n].name; n++)
MP_INFO(config, " %s", alt[n].name);
- if (opt->flags & (M_OPT_MIN | M_OPT_MAX))
+ if (opt->min < opt->max)
MP_INFO(config, " (or an integer)");
} else {
MP_INFO(config, " %s", opt->type->name);
}
- if (opt->flags & (M_OPT_MIN | M_OPT_MAX)) {
+ if ((opt->type->flags & M_OPT_TYPE_USES_RANGE) && opt->min < opt->max) {
snprintf(min, sizeof(min), "any");
snprintf(max, sizeof(max), "any");
- if (opt->flags & M_OPT_MIN)
+ if (opt->min != DBL_MIN)
snprintf(min, sizeof(min), "%.14g", opt->min);
- if (opt->flags & M_OPT_MAX)
+ if (opt->max != DBL_MAX)
snprintf(max, sizeof(max), "%.14g", opt->max);
MP_INFO(config, " (%s to %s)", min, max);
}