From b27990c5c570519c44101464ea9871e4325a527b Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sun, 11 Jul 2010 14:43:43 +0300 Subject: [PATCH] Store and parse 64-bits values in vlcrc --- src/config/file.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/config/file.c b/src/config/file.c index 3cec0829d9..b802ce3d40 100644 --- a/src/config/file.c +++ b/src/config/file.c @@ -135,17 +135,18 @@ static FILE *config_OpenConfigFile( vlc_object_t *p_obj ) } -static int strtoi (const char *str) +static int64_t strtoi (const char *str) { char *end; - long l; + long long l; errno = 0; - l = strtol (str, &end, 0); + l = strtoll (str, &end, 0); if (!errno) { - if ((l > INT_MAX) || (l < INT_MIN)) + if ((l > INT64_C(0x7fffffffffffffff)) + || (l < INT64_C(-0x8000000000000000))) errno = ERANGE; if (*end) errno = EINVAL; @@ -270,12 +271,12 @@ int config_LoadConfigFile( vlc_object_t *p_this, const char *psz_module_name ) case CONFIG_ITEM_BOOL: case CONFIG_ITEM_INTEGER: { - long l = strtoi (psz_option_value); + int64_t l = strtoi (psz_option_value); if (errno) msg_Warn (p_this, "Integer value (%s) for %s: %m", psz_option_value, psz_option_name); else - p_item->saved.i = p_item->value.i = (int)l; + p_item->saved.i = p_item->value.i = l; break; } @@ -614,7 +615,7 @@ static int SaveConfigFile( vlc_object_t *p_this, const char *psz_module_name, if (IsConfigIntegerType (p_item->i_type)) { - int val = b_retain ? p_item->saved.i : p_item->value.i; + int64_t val = b_retain ? p_item->saved.i : p_item->value.i; if (p_item->i_type == CONFIG_ITEM_KEY) { char *psz_key = ConfigKeyToString (val); @@ -629,7 +630,7 @@ static int SaveConfigFile( vlc_object_t *p_this, const char *psz_module_name, (p_item->i_type == CONFIG_ITEM_BOOL) ? N_("boolean") : N_("integer"), val == p_item->orig.i, - p_item->psz_name, "%d", val); + p_item->psz_name, "%"PRId64, val); p_item->saved.i = val; } else -- 2.39.2