I've discovered a gap in POSIX compliance in lib/sh/strftime.c on the devel
branch. POSIX mandates that the timeval struct be defined in <sys/time.h>,
although as can be seen on Line 67 of the file in question, the file is only
included here if the tm struct -- which POSIX mandates be defined in <time.h>
-- is defined in <sys/time.h>.
The libc implementation I'm working with defines timeval in <sys/time.h> and tm
in <time.h> as mandated by POSIX so here I encounter a compile failure on Line
193.
../../../bash-5.1/lib/sh/strftime.c: In function ‘strftime’:
../../../bash-5.1/lib/sh/strftime.c:193:17: error: storage size of ‘tv’ isn’t
known
struct timeval tv;
^~
Please correct me if I'm wrong as I may have missed something in the POSIX spec
that results in the definition of timeval being available from another header,
although I believe that the fix for this should be to move the <sys/time.h>
include on Line 69 outside the enclosing #if guard, as it should always be
required for POSIX compliance.