mirror of
https://github.com/git-for-windows/git.git
synced 2026-06-17 07:21:10 -05:00
git-compat-util: add strtoul_ul() with error handling
We already have strtoul_ui() and similar functions that provide proper error handling using strtoul from the standard library. However, there isn't currently a variant that returns an unsigned long. This variant is needed in a subsequent commit. Add strtoul_ul() to address this gap, enabling the return of an unsigned long with proper error handling. Signed-off-by: Pablo Sabater <pabloosabaterr@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@@ -975,6 +975,26 @@ static inline int strtoul_ui(char const *s, int base, unsigned int *result)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a string to an unsigned long using the standard library's strtoul,
|
||||
* with additional error handling to ensure robustness.
|
||||
*/
|
||||
static inline int strtoul_ul(char const *s, int base, unsigned long *result)
|
||||
{
|
||||
unsigned long ul;
|
||||
char *p;
|
||||
|
||||
errno = 0;
|
||||
/* negative values would be accepted by strtoul */
|
||||
if (strchr(s, '-'))
|
||||
return -1;
|
||||
ul = strtoul(s, &p, base);
|
||||
if (errno || *p || p == s)
|
||||
return -1;
|
||||
*result = ul;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int strtol_i(char const *s, int base, int *result)
|
||||
{
|
||||
long ul;
|
||||
|
||||
Reference in New Issue
Block a user