dovecot-2.2-pigeonhole: Removed all invocations of strtoll() and...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Sat Aug 29 13:04:47 UTC 2015
details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/45854bc3a431
changeset: 2094:45854bc3a431
user: Stephan Bosch <stephan at rename-it.nl>
date: Sat Aug 29 13:12:58 2015 +0200
description:
Removed all invocations of strtoll() and friends.
diffstat:
src/lib-sieve/sieve-settings.c | 81 ++++++++++-------------------------------
1 files changed, 20 insertions(+), 61 deletions(-)
diffs (166 lines):
diff -r a2e0882300c9 -r 45854bc3a431 src/lib-sieve/sieve-settings.c
--- a/src/lib-sieve/sieve-settings.c Sat Aug 29 13:12:58 2015 +0200
+++ b/src/lib-sieve/sieve-settings.c Sat Aug 29 13:12:58 2015 +0200
@@ -38,60 +38,18 @@
* Access to settings
*/
-static bool sieve_setting_parse_uint
-(struct sieve_instance *svinst, const char *setting, const char *str_value,
- char **endptr, unsigned long long int *value_r)
-{
- if ( (*value_r = strtoull(str_value, endptr, 10)) == ULLONG_MAX
- && errno == ERANGE ) {
- sieve_sys_warning(svinst,
- "overflowing unsigned integer value for setting '%s': '%s'",
- setting, str_value);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static bool sieve_setting_parse_int
-(struct sieve_instance *svinst, const char *setting, const char *str_value,
- char **endptr, long long int *value_r)
-{
- *value_r = strtoll(str_value, endptr, 10);
-
- if ( *value_r == LLONG_MIN && errno == ERANGE ) {
- sieve_sys_warning(svinst,
- "underflowing integer value for setting '%s': '%s'",
- setting, str_value);
- return FALSE;
- }
-
- if ( *value_r == LLONG_MAX && errno == ERANGE ) {
- sieve_sys_warning(svinst,
- "overflowing integer value for setting '%s': '%s'",
- setting, str_value);
- return FALSE;
- }
-
- return TRUE;
-}
-
bool sieve_setting_get_uint_value
(struct sieve_instance *svinst, const char *setting,
unsigned long long int *value_r)
{
const char *str_value;
- char *endp;
str_value = sieve_setting_get(svinst, setting);
if ( str_value == NULL || *str_value == '\0' )
return FALSE;
- if ( !sieve_setting_parse_uint(svinst, setting, str_value, &endp, value_r) )
- return FALSE;
-
- if ( *endp != '\0' ) {
+ if ( str_to_ullong(str_value, value_r) < 0 ) {
sieve_sys_warning(svinst,
"invalid unsigned integer value for setting '%s': '%s'",
setting, str_value);
@@ -106,20 +64,16 @@
long long int *value_r)
{
const char *str_value;
- char *endp;
str_value = sieve_setting_get(svinst, setting);
if ( str_value == NULL || *str_value == '\0' )
return FALSE;
- if ( !sieve_setting_parse_int(svinst, setting, str_value, &endp, value_r) )
- return FALSE;
-
- if ( *endp != '\0' ) {
- sieve_sys_warning(svinst, "invalid integer value for setting '%s': '%s'",
+ if ( str_to_llong(str_value, value_r) < 0 ) {
+ sieve_sys_warning(svinst,
+ "invalid integer value for setting '%s': '%s'",
setting, str_value);
-
return FALSE;
}
@@ -131,17 +85,20 @@
size_t *value_r)
{
const char *str_value;
- unsigned long long int value, multiply = 1;
- char *endp;
+ uintmax_t value, multiply = 1;
+ const char *endp;
str_value = sieve_setting_get(svinst, setting);
if ( str_value == NULL || *str_value == '\0' )
return FALSE;
- if ( !sieve_setting_parse_uint(svinst, setting, str_value, &endp, &value) )
+ if ( str_parse_uintmax(str_value, &value, &endp) < 0 ) {
+ sieve_sys_warning(svinst,
+ "invalid size value for setting '%s': '%s'",
+ setting, str_value);
return FALSE;
-
+ }
switch (i_toupper(*endp)) {
case '\0': /* default */
case 'B': /* byte (useless) */
@@ -174,7 +131,6 @@
}
*value_r = (size_t) (value * multiply);
-
return TRUE;
}
@@ -202,7 +158,8 @@
return TRUE;
}
- sieve_sys_warning(svinst, "invalid boolean value for setting '%s': '%s'",
+ sieve_sys_warning(svinst,
+ "invalid boolean value for setting '%s': '%s'",
setting, str_value);
return FALSE;
}
@@ -212,8 +169,8 @@
sieve_number_t *value_r)
{
const char *str_value;
- unsigned long long int value, multiply = 1;
- char *endp;
+ uintmax_t value, multiply = 1;
+ const char *endp;
str_value = sieve_setting_get(svinst, setting);
if ( str_value == NULL )
@@ -223,9 +180,12 @@
if ( *str_value == '\0' )
return FALSE;
- if ( !sieve_setting_parse_uint(svinst, setting, str_value, &endp, &value) )
+ if ( str_parse_uintmax(str_value, &value, &endp) < 0 ) {
+ sieve_sys_warning(svinst,
+ "invalid duration value for setting '%s': '%s'",
+ setting, str_value);
return FALSE;
-
+ }
switch (i_tolower(*endp)) {
case '\0': /* default */
case 's': /* seconds */
@@ -255,7 +215,6 @@
}
*value_r = (unsigned int) (value * multiply);
-
return TRUE;
}
More information about the dovecot-cvs
mailing list