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 <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2021-10-08 15:50:36 +02:00
parent 84874785c2
commit 049775b2ef

View File

@ -305,9 +305,13 @@ typedef unsigned long long uoff_t;
# endif # endif
#else #else
/* CONFIG_LFS is off */ /* CONFIG_LFS is off */
# if UINT_MAX == 0xffffffff /* sizeof(off_t) == sizeof(long).
/* While sizeof(off_t) == sizeof(int), off_t is typedef'ed to long anyway. * May or may not be == sizeof(int). If it is, use xatoi_positive()
* gcc will throw warnings on printf("%d", off_t). Crap... */ * 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; typedef unsigned long uoff_t;
# define XATOOFF(a) xatoi_positive(a) # define XATOOFF(a) xatoi_positive(a)
# define BB_STRTOOFF bb_strtou # define BB_STRTOOFF bb_strtou