mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +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 base base of the numbering scheme
|
||||
* @param err error occured during conversion
|
||||
* @flags controlling conversion feature
|
||||
* @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
|
||||
* - wrong base
|
||||
* - value overflow
|
||||
@ -64,7 +69,7 @@
|
||||
* - no conversion due to empty string or not representing a number
|
||||
*/
|
||||
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;
|
||||
int saved_errno = errno;
|
||||
@ -93,10 +98,12 @@ strtoul_err(const char *nptr, char **endptr, int base, int *err)
|
||||
return val;
|
||||
}
|
||||
|
||||
/* did we convert a negative "number" ? */
|
||||
needle = strchr(nptr, '-');
|
||||
if (needle != NULL && needle < tmp_endptr) {
|
||||
*err = EINVAL;
|
||||
if ((flags & SMB_STR_ALLOW_NEGATIVE ) == 0) {
|
||||
/* did we convert a negative "number" ? */
|
||||
needle = strchr(nptr, '-');
|
||||
if (needle != NULL && needle < tmp_endptr) {
|
||||
*err = EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
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 base base of the numbering scheme
|
||||
* @param err error occured during conversion
|
||||
* @flags controlling conversion feature
|
||||
* @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
|
||||
* - wrong base
|
||||
* - 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
|
||||
*/
|
||||
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;
|
||||
int saved_errno = errno;
|
||||
@ -148,10 +160,12 @@ strtoull_err(const char *nptr, char **endptr, int base, int *err)
|
||||
return val;
|
||||
}
|
||||
|
||||
/* did we convert a negative "number" ? */
|
||||
needle = strchr(nptr, '-');
|
||||
if (needle != NULL && needle < tmp_endptr) {
|
||||
*err = EINVAL;
|
||||
if ((flags & SMB_STR_ALLOW_NEGATIVE ) == 0) {
|
||||
/* did we convert a negative "number" ? */
|
||||
needle = strchr(nptr, '-');
|
||||
if (needle != NULL && needle < tmp_endptr) {
|
||||
*err = EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
errno = saved_errno;
|
||||
|
@ -3,6 +3,7 @@
|
||||
Utility functions for Samba
|
||||
Copyright (C) Andrew Tridgell 1992-1999
|
||||
Copyright (C) Jelmer Vernooij 2005
|
||||
Copyright (C) Swen Schillig 2019
|
||||
|
||||
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
|
||||
@ -29,11 +30,15 @@
|
||||
SMB_STR_ALLOW_NEGATIVE)
|
||||
|
||||
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
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user