overhaul siginfo_t definition in signal.h
authorRich Felker <dalias@aerifal.cx>
Sun, 25 May 2014 00:39:46 +0000 (20:39 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 25 May 2014 00:39:46 +0000 (20:39 -0400)
commit44d28e55121f9a7d736df59c09b963e17c8c4cfa
treeb60d331719601cfeebfcf9e4ad081fe0717dc7c8
parent0b4e0732db5e6ed0cca78d787cbd764248fcbaac
overhaul siginfo_t definition in signal.h

the main motivation for this change is that, with the previous
definition, it was arguably illegal, in standard C, to initialize both
si_value and si_pid/si_uid with designated initializers, due to the
rule that only one member of a union can have an initializer. whether
or not this affected real-world application code, it affected some
internal code, and clang was producing warnings (and possibly
generating incorrect code).

the new definition uses a more complex hierarchy of structs and unions
to avoid the need to initialize more than one member of a single union
in usage cases that make sense. further work would be needed to
eliminate even the ones with no practical applications.

at the same time, some fixes are made to the exposed names for
nonstandard fields, to match what software using them expects.
include/signal.h