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:
Eric Ju
2026-06-08 12:14:25 +02:00
committed by Junio C Hamano
parent aa245db50c
commit 0332ea7eb4

View File

@@ -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;