fix remaining direct use of stat syscalls outside fstatat.c
authorRich Felker <dalias@aerifal.cx>
Wed, 12 Feb 2020 22:23:29 +0000 (17:23 -0500)
committerRich Felker <dalias@aerifal.cx>
Wed, 12 Feb 2020 22:34:17 +0000 (17:34 -0500)
commitc9ebff4736128186121424364c1c62224b02aee3
treeb139c394ce0831b1e933ae51f89c0ab33582fb22
parenta662220df547e5c2446518e74440a7d834f9ebe6
fix remaining direct use of stat syscalls outside fstatat.c

because struct stat is no longer assumed to correspond to the
structure used by the stat-family syscalls, it's not valid to make any
of these syscalls directly using a buffer of type struct stat.

commit 9493892021eac4edf1776d945bcdd3f7a96f6978 moved all logic around
this change for stat-family functions into fstatat.c, making the
others wrappers for it. but a few other direct uses of the syscall
were overlooked. the ones in tmpnam/tempnam are harmless since the
syscalls are just used to test for file existence. however, the uses
in fchmodat and __map_file depend on getting accurate file properties,
and these functions may actually have been broken one or more mips
variants due to removal of conversion hacks from syscall_arch.h.

as a low-risk fix, simply use struct kstat in place of struct stat in
the affected places.
src/stat/fchmodat.c
src/stdio/tempnam.c
src/stdio/tmpnam.c
src/time/__map_file.c