From 049775b2ef39a20dc08a6bf89e2831e8422f7363 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 8 Oct 2021 15:50:36 +0200 Subject: libbb.h: fix logic selecting incorrect BB_STRTOOFF for !LFS configs BB_STRTOOFF() was equal to bb_strtou(). On x86_64, it's incorrect. Signed-off-by: Denys Vlasenko --- include/libbb.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/libbb.h b/include/libbb.h index 02cc008f0..b72576f28 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -305,9 +305,13 @@ typedef unsigned long long uoff_t; # endif #else /* CONFIG_LFS is off */ -# if UINT_MAX == 0xffffffff -/* While sizeof(off_t) == sizeof(int), off_t is typedef'ed to long anyway. - * gcc will throw warnings on printf("%d", off_t). Crap... */ +/* sizeof(off_t) == sizeof(long). + * May or may not be == sizeof(int). If it is, use xatoi_positive() + * and bb_strtou() instead of xatoul_range() and bb_strtoul(). + * Even if sizeof(off_t) == sizeof(int), off_t is typedef'ed to long anyway. + * gcc will throw warnings on printf("%d", off_t)... Have to use %ld etc. + */ +# if UINT_MAX == ULONG_MAX typedef unsigned long uoff_t; # define XATOOFF(a) xatoi_positive(a) # define BB_STRTOOFF bb_strtou -- cgit v1.2.1