mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
lib: Prepare for strtoul_err(), strtoull_err() API change
In order to still be bisectable when changing the API for the wrappers strtoul_err() and strtoull_err() some preparations need to be performed. Signed-off-by: Swen Schillig <swen@linux.ibm.com> Reviewed-by: Ralph Boehme <slow@samba.org> Reviewed-by: Christof Schmitt <cs@samba.org>
This commit is contained in:
parent
7fd0cd02b7
commit
f2997ad677
@ -55,8 +55,13 @@
|
|||||||
* @param endptr [optional] reference to remainder of the string
|
* @param endptr [optional] reference to remainder of the string
|
||||||
* @param base base of the numbering scheme
|
* @param base base of the numbering scheme
|
||||||
* @param err error occured during conversion
|
* @param err error occured during conversion
|
||||||
|
* @flags controlling conversion feature
|
||||||
* @result result of the conversion as provided by strtoul
|
* @result result of the conversion as provided by strtoul
|
||||||
*
|
*
|
||||||
|
* The following flags are supported
|
||||||
|
* SMB_STR_STANDARD # raise error if negative or non-numeric
|
||||||
|
* SMB_STR_ALLOW_NEGATIVE # allow strings with a leading "-"
|
||||||
|
*
|
||||||
* The following errors are detected
|
* The following errors are detected
|
||||||
* - wrong base
|
* - wrong base
|
||||||
* - value overflow
|
* - value overflow
|
||||||
@ -64,7 +69,7 @@
|
|||||||
* - no conversion due to empty string or not representing a number
|
* - no conversion due to empty string or not representing a number
|
||||||
*/
|
*/
|
||||||
unsigned long int
|
unsigned long int
|
||||||
strtoul_err(const char *nptr, char **endptr, int base, int *err)
|
smb_strtoul(const char *nptr, char **endptr, int base, int *err, int flags)
|
||||||
{
|
{
|
||||||
unsigned long int val;
|
unsigned long int val;
|
||||||
int saved_errno = errno;
|
int saved_errno = errno;
|
||||||
@ -93,10 +98,12 @@ strtoul_err(const char *nptr, char **endptr, int base, int *err)
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* did we convert a negative "number" ? */
|
if ((flags & SMB_STR_ALLOW_NEGATIVE ) == 0) {
|
||||||
needle = strchr(nptr, '-');
|
/* did we convert a negative "number" ? */
|
||||||
if (needle != NULL && needle < tmp_endptr) {
|
needle = strchr(nptr, '-');
|
||||||
*err = EINVAL;
|
if (needle != NULL && needle < tmp_endptr) {
|
||||||
|
*err = EINVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
errno = saved_errno;
|
errno = saved_errno;
|
||||||
@ -110,8 +117,13 @@ strtoul_err(const char *nptr, char **endptr, int base, int *err)
|
|||||||
* @param endptr [optional] reference to remainder of the string
|
* @param endptr [optional] reference to remainder of the string
|
||||||
* @param base base of the numbering scheme
|
* @param base base of the numbering scheme
|
||||||
* @param err error occured during conversion
|
* @param err error occured during conversion
|
||||||
|
* @flags controlling conversion feature
|
||||||
* @result result of the conversion as provided by strtoull
|
* @result result of the conversion as provided by strtoull
|
||||||
*
|
*
|
||||||
|
* The following flags are supported
|
||||||
|
* SMB_STR_STANDARD # raise error if negative or non-numeric
|
||||||
|
* SMB_STR_ALLOW_NEGATIVE # allow strings with a leading "-"
|
||||||
|
*
|
||||||
* The following errors are detected
|
* The following errors are detected
|
||||||
* - wrong base
|
* - wrong base
|
||||||
* - value overflow
|
* - value overflow
|
||||||
@ -119,7 +131,7 @@ strtoul_err(const char *nptr, char **endptr, int base, int *err)
|
|||||||
* - no conversion due to empty string or not representing a number
|
* - no conversion due to empty string or not representing a number
|
||||||
*/
|
*/
|
||||||
unsigned long long int
|
unsigned long long int
|
||||||
strtoull_err(const char *nptr, char **endptr, int base, int *err)
|
smb_strtoull(const char *nptr, char **endptr, int base, int *err, int flags)
|
||||||
{
|
{
|
||||||
unsigned long long int val;
|
unsigned long long int val;
|
||||||
int saved_errno = errno;
|
int saved_errno = errno;
|
||||||
@ -148,10 +160,12 @@ strtoull_err(const char *nptr, char **endptr, int base, int *err)
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* did we convert a negative "number" ? */
|
if ((flags & SMB_STR_ALLOW_NEGATIVE ) == 0) {
|
||||||
needle = strchr(nptr, '-');
|
/* did we convert a negative "number" ? */
|
||||||
if (needle != NULL && needle < tmp_endptr) {
|
needle = strchr(nptr, '-');
|
||||||
*err = EINVAL;
|
if (needle != NULL && needle < tmp_endptr) {
|
||||||
|
*err = EINVAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
errno = saved_errno;
|
errno = saved_errno;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
Utility functions for Samba
|
Utility functions for Samba
|
||||||
Copyright (C) Andrew Tridgell 1992-1999
|
Copyright (C) Andrew Tridgell 1992-1999
|
||||||
Copyright (C) Jelmer Vernooij 2005
|
Copyright (C) Jelmer Vernooij 2005
|
||||||
|
Copyright (C) Swen Schillig 2019
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -29,11 +30,15 @@
|
|||||||
SMB_STR_ALLOW_NEGATIVE)
|
SMB_STR_ALLOW_NEGATIVE)
|
||||||
|
|
||||||
unsigned long int
|
unsigned long int
|
||||||
strtoul_err(const char *nptr, char **endptr, int base, int *err);
|
smb_strtoul(const char *nptr, char **endptr, int base, int *err, int flags);
|
||||||
|
|
||||||
unsigned long long int
|
unsigned long long int
|
||||||
strtoull_err(const char *nptr, char **endptr, int base, int *err);
|
smb_strtoull(const char *nptr, char **endptr, int base, int *err, int flags);
|
||||||
|
|
||||||
|
#define strtoul_err(nptr, endptr, base, err) \
|
||||||
|
smb_strtoul(nptr, endptr, base, err, SMB_STR_STANDARD)
|
||||||
|
#define strtoull_err(nptr, endptr, base, err) \
|
||||||
|
smb_strtoull(nptr, endptr, base, err, SMB_STR_STANDARD)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write dump of binary data to a callback
|
* Write dump of binary data to a callback
|
||||||
|
Loading…
Reference in New Issue
Block a user