key_serial_t is defined in keyutil.h, which wasn't included in the header list
in the test, so the test always failed. We were always compiling stuff with
!HAVE_KEY_SERIAL_T.
We could try to add keyutil.h to the test, but then we'd have to first check if
it is available, which just doesn't seem worth the trouble.
key_serial_t should always be defined as int32_t. Let's keep the uncoditional
define, since repeated compatible typedefs are not a problem, and it allows us
to compile even if the header file is missing. If there's ever a change in the
definition, we'll have to adjust the code for the different type anyway, and
our compiler will tell us.
#include <linux/fib_rules.h>
#include <sys/stat.h>
'''
#include <linux/fib_rules.h>
#include <sys/stat.h>
'''
-# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
foreach decl : ['char16_t',
'char32_t',
foreach decl : ['char16_t',
'char32_t',
'struct ethtool_link_settings',
'struct fib_rule_uid_range',
'struct statx',
'struct ethtool_link_settings',
'struct fib_rule_uid_range',
'struct statx',
#define KEY_ALS_TOGGLE 0x230
#endif
#define KEY_ALS_TOGGLE 0x230
#endif
typedef int32_t key_serial_t;
typedef int32_t key_serial_t;
#ifndef KEYCTL_JOIN_SESSION_KEYRING
#define KEYCTL_JOIN_SESSION_KEYRING 1
#ifndef KEYCTL_JOIN_SESSION_KEYRING
#define KEYCTL_JOIN_SESSION_KEYRING 1