static int do_test (void) { int result = 0; #define TEST_TYPE(name) \ printf ("%s: ", #name); \ if (sizeof (name) != sizeof (((name *) 0)->__size)) \ { \ printf ("expected %zu, is %zu\n", \ sizeof (((name *) 0)->__size), sizeof (name)); \ result = 1; \ } \ else \ puts ("OK") TEST_TYPE (pthread_mutex_t); TEST_TYPE (pthread_cond_t); TEST_TYPE (pthread_rwlock_t); #define TEST_TYPE2(name, internal) \ printf ("%s: ", #name); \ if (sizeof (((name *) 0)->__size) < sizeof (internal)) \ { \ printf ("expected %zu, is %zu\n", \ sizeof (((name *) 0)->__size), sizeof (internal)); \ result = 1; \ } \ else \ puts ("OK") TEST_TYPE2 (pthread_attr_t, struct pthread_attr); TEST_TYPE2 (pthread_mutexattr_t, struct pthread_mutexattr); TEST_TYPE2 (pthread_condattr_t, struct pthread_condattr); TEST_TYPE2 (pthread_rwlockattr_t, struct pthread_rwlockattr); TEST_TYPE2 (pthread_barrier_t, struct pthread_barrier); TEST_TYPE2 (pthread_barrierattr_t, struct pthread_barrierattr); TEST_TYPE2 (sem_t, struct new_sem); TEST_TYPE2 (sem_t, struct old_sem); for (size_t i = 0; i < sizeof (types) / sizeof (types[0]); ++i) if (types[i].expected != types[i].is) { printf ("%s: expected %zu, is %zu\n", types[i].name, types[i].expected, types[i].is); result = 1; } return result; }
static void test_pack_COMM_FAULT_OFFSETS(void) { /* COMM_FAULT_OFFSETS (pack 4) */ TEST_TYPE(COMM_FAULT_OFFSETS, 4, 2); TEST_FIELD(COMM_FAULT_OFFSETS, short, CommOffset, 0, 2, 2); TEST_FIELD(COMM_FAULT_OFFSETS, short, FaultOffset, 2, 2, 2); }
static void test_pack_SCONTEXT_QUEUE(void) { /* SCONTEXT_QUEUE (pack 4) */ TEST_TYPE(SCONTEXT_QUEUE, 8, 4); TEST_FIELD(SCONTEXT_QUEUE, ULONG, NumberOfObjects, 0, 4, 4); TEST_FIELD(SCONTEXT_QUEUE, NDR_SCONTEXT *, ArrayOfObjects, 4, 4, 4); }
static void test_pack_GOPHER_ASK_ATTRIBUTE_TYPEW(void) { /* GOPHER_ASK_ATTRIBUTE_TYPEW (pack 4) */ TEST_TYPE(GOPHER_ASK_ATTRIBUTE_TYPEW, 8, 4); TEST_FIELD(GOPHER_ASK_ATTRIBUTE_TYPEW, LPCWSTR, QuestionType, 0, 4, 4); TEST_FIELD(GOPHER_ASK_ATTRIBUTE_TYPEW, LPCWSTR, QuestionText, 4, 4, 4); }
static void test_pack_GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE(void) { /* GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE (pack 4) */ TEST_TYPE(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, 8, 4); TEST_FIELD(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, INT, LowerBound, 0, 4, 4); TEST_FIELD(GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE, INT, UpperBound, 4, 4, 4); }
static void test_pack_INTERNET_ASYNC_RESULT(void) { /* INTERNET_ASYNC_RESULT (pack 4) */ TEST_TYPE(INTERNET_ASYNC_RESULT, 8, 4); TEST_FIELD(INTERNET_ASYNC_RESULT, DWORD_PTR, dwResult, 0, 4, 4); TEST_FIELD(INTERNET_ASYNC_RESULT, DWORD, dwError, 4, 4, 4); }
static void test_pack_RPC_PROTSEQ_ENDPOINT(void) { /* RPC_PROTSEQ_ENDPOINT (pack 4) */ TEST_TYPE(RPC_PROTSEQ_ENDPOINT, 8, 4); TEST_FIELD(RPC_PROTSEQ_ENDPOINT, unsigned char*, RpcProtocolSequence, 0, 4, 4); TEST_FIELD(RPC_PROTSEQ_ENDPOINT, unsigned char*, Endpoint, 4, 4, 4); }
static void test_pack_GOPHER_ABSTRACT_ATTRIBUTE_TYPEW(void) { /* GOPHER_ABSTRACT_ATTRIBUTE_TYPEW (pack 4) */ TEST_TYPE(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, 8, 4); TEST_FIELD(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, LPCWSTR, ShortAbstract, 0, 4, 4); TEST_FIELD(GOPHER_ABSTRACT_ATTRIBUTE_TYPEW, LPCWSTR, AbstractFile, 4, 4, 4); }
static void test_pack_UUID_VECTOR(void) { /* UUID_VECTOR (pack 4) */ TEST_TYPE(UUID_VECTOR, 8, 4); TEST_FIELD(UUID_VECTOR, unsigned long, Count, 0, 4, 4); TEST_FIELD(UUID_VECTOR, UUID *[1], Uuid, 4, 4, 4); }
static void test_pack_RPC_BINDING_VECTOR(void) { /* RPC_BINDING_VECTOR (pack 4) */ TEST_TYPE(RPC_BINDING_VECTOR, 8, 4); TEST_FIELD(RPC_BINDING_VECTOR, unsigned long, Count, 0, 4, 4); TEST_FIELD(RPC_BINDING_VECTOR, RPC_BINDING_HANDLE[1], BindingH, 4, 4, 4); }
static void test_pack_GOPHER_ADMIN_ATTRIBUTE_TYPEW(void) { /* GOPHER_ADMIN_ATTRIBUTE_TYPEW (pack 4) */ TEST_TYPE(GOPHER_ADMIN_ATTRIBUTE_TYPEW, 8, 4); TEST_FIELD(GOPHER_ADMIN_ATTRIBUTE_TYPEW, LPCWSTR, Comment, 0, 4, 4); TEST_FIELD(GOPHER_ADMIN_ATTRIBUTE_TYPEW, LPCWSTR, EmailAddress, 4, 4, 4); }
static void test_pack_INTERNET_CONNECTED_INFO(void) { /* INTERNET_CONNECTED_INFO (pack 4) */ TEST_TYPE(INTERNET_CONNECTED_INFO, 8, 4); TEST_FIELD(INTERNET_CONNECTED_INFO, DWORD, dwConnectedState, 0, 4, 4); TEST_FIELD(INTERNET_CONNECTED_INFO, DWORD, dwFlags, 4, 4, 4); }
static void test_pack_INTERNET_VERSION_INFO(void) { /* INTERNET_VERSION_INFO (pack 4) */ TEST_TYPE(INTERNET_VERSION_INFO, 8, 4); TEST_FIELD(INTERNET_VERSION_INFO, DWORD, dwMajorVersion, 0, 4, 4); TEST_FIELD(INTERNET_VERSION_INFO, DWORD, dwMinorVersion, 4, 4, 4); }
static void test_pack_RPC_VERSION(void) { /* RPC_VERSION (pack 4) */ TEST_TYPE(RPC_VERSION, 4, 2); TEST_FIELD(RPC_VERSION, unsigned short, MajorVersion, 0, 2, 2); TEST_FIELD(RPC_VERSION, unsigned short, MinorVersion, 2, 2, 2); }
static void test_pack_RPC_SYNTAX_IDENTIFIER(void) { /* RPC_SYNTAX_IDENTIFIER (pack 4) */ TEST_TYPE(RPC_SYNTAX_IDENTIFIER, 20, 4); TEST_FIELD(RPC_SYNTAX_IDENTIFIER, GUID, SyntaxGUID, 0, 16, 4); TEST_FIELD(RPC_SYNTAX_IDENTIFIER, RPC_VERSION, SyntaxVersion, 16, 4, 2); }
static void test_pack_HTTP_VERSION_INFO(void) { /* HTTP_VERSION_INFO (pack 4) */ TEST_TYPE(HTTP_VERSION_INFO, 8, 4); TEST_FIELD(HTTP_VERSION_INFO, DWORD, dwMajorVersion, 0, 4, 4); TEST_FIELD(HTTP_VERSION_INFO, DWORD, dwMinorVersion, 4, 4, 4); }
static void test_pack_RPC_DISPATCH_TABLE(void) { /* RPC_DISPATCH_TABLE (pack 4) */ TEST_TYPE(RPC_DISPATCH_TABLE, 12, 4); TEST_FIELD(RPC_DISPATCH_TABLE, unsigned int, DispatchTableCount, 0, 4, 4); TEST_FIELD(RPC_DISPATCH_TABLE, RPC_DISPATCH_FUNCTION*, DispatchTable, 4, 4, 4); TEST_FIELD(RPC_DISPATCH_TABLE, LONG_PTR, Reserved, 8, 4, 4); }
static void test_pack_INTERNET_PROXY_INFOW(void) { /* INTERNET_PROXY_INFOW (pack 4) */ TEST_TYPE(INTERNET_PROXY_INFOW, 12, 4); TEST_FIELD(INTERNET_PROXY_INFOW, DWORD, dwAccessType, 0, 4, 4); TEST_FIELD(INTERNET_PROXY_INFOW, LPCWSTR, lpszProxy, 4, 4, 4); TEST_FIELD(INTERNET_PROXY_INFOW, LPCWSTR, lpszProxyBypass, 8, 4, 4); }
static void test_pack_GOPHER_VIEW_ATTRIBUTE_TYPEW(void) { /* GOPHER_VIEW_ATTRIBUTE_TYPEW (pack 4) */ TEST_TYPE(GOPHER_VIEW_ATTRIBUTE_TYPEW, 12, 4); TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEW, LPCWSTR, ContentType, 0, 4, 4); TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEW, LPCWSTR, Language, 4, 4, 4); TEST_FIELD(GOPHER_VIEW_ATTRIBUTE_TYPEW, DWORD, Size, 8, 4, 4); }
static void test_pack_DLLVERSIONINFO2(void) { /* DLLVERSIONINFO2 (pack 8) */ TEST_TYPE(DLLVERSIONINFO2, 32, 8); TEST_FIELD(DLLVERSIONINFO2, DLLVERSIONINFO, info1, 0, 20, 4); TEST_FIELD(DLLVERSIONINFO2, DWORD, dwFlags, 20, 4, 4); TEST_FIELD(DLLVERSIONINFO2, ULONGLONG, ullVersion, 24, 8, 8); }
static void test_pack_RPC_POLICY(void) { /* RPC_POLICY (pack 4) */ TEST_TYPE(RPC_POLICY, 12, 4); TEST_FIELD(RPC_POLICY, unsigned int, Length, 0, 4, 4); TEST_FIELD(RPC_POLICY, unsigned long, EndpointFlags, 4, 4, 4); TEST_FIELD(RPC_POLICY, unsigned long, NICFlags, 8, 4, 4); }
static void test_pack_CS_STUB_INFO(void) { /* CS_STUB_INFO (pack 4) */ TEST_TYPE(CS_STUB_INFO, 12, 4); TEST_FIELD(CS_STUB_INFO, ULONG, WireCodeset, 0, 4, 4); TEST_FIELD(CS_STUB_INFO, ULONG, DesiredReceivingCodeset, 4, 4, 4); TEST_FIELD(CS_STUB_INFO, void *, CSArrayInfo, 8, 4, 4); }
static void test_pack_FULL_PTR_TO_REFID_ELEMENT(void) { /* FULL_PTR_TO_REFID_ELEMENT (pack 4) */ TEST_TYPE(FULL_PTR_TO_REFID_ELEMENT, 16, 4); TEST_FIELD(FULL_PTR_TO_REFID_ELEMENT, struct _FULL_PTR_TO_REFID_ELEMENT *, Next, 0, 4, 4); TEST_FIELD(FULL_PTR_TO_REFID_ELEMENT, void *, Pointer, 4, 4, 4); TEST_FIELD(FULL_PTR_TO_REFID_ELEMENT, ULONG, RefId, 8, 4, 4); TEST_FIELD(FULL_PTR_TO_REFID_ELEMENT, unsigned char, State, 12, 1, 1); }
static void test_pack_INTERNET_AUTH_NOTIFY_DATA(void) { /* INTERNET_AUTH_NOTIFY_DATA (pack 4) */ TEST_TYPE(INTERNET_AUTH_NOTIFY_DATA, 16, 4); TEST_FIELD(INTERNET_AUTH_NOTIFY_DATA, DWORD, cbStruct, 0, 4, 4); TEST_FIELD(INTERNET_AUTH_NOTIFY_DATA, DWORD, dwOptions, 4, 4, 4); TEST_FIELD(INTERNET_AUTH_NOTIFY_DATA, PFN_AUTH_NOTIFY, pfnNotify, 8, 4, 4); TEST_FIELD(INTERNET_AUTH_NOTIFY_DATA, DWORD_PTR, dwContext, 12, 4, 4); }
static void test_pack_DLLVERSIONINFO(void) { /* DLLVERSIONINFO (pack 8) */ TEST_TYPE(DLLVERSIONINFO, 20, 4); TEST_FIELD(DLLVERSIONINFO, DWORD, cbSize, 0, 4, 4); TEST_FIELD(DLLVERSIONINFO, DWORD, dwMajorVersion, 4, 4, 4); TEST_FIELD(DLLVERSIONINFO, DWORD, dwMinorVersion, 8, 4, 4); TEST_FIELD(DLLVERSIONINFO, DWORD, dwBuildNumber, 12, 4, 4); TEST_FIELD(DLLVERSIONINFO, DWORD, dwPlatformID, 16, 4, 4); }
static void test_pack_GOPHER_FIND_DATAA(void) { /* GOPHER_FIND_DATAA (pack 4) */ TEST_TYPE(GOPHER_FIND_DATAA, 808, 4); TEST_FIELD(GOPHER_FIND_DATAA, CHAR[MAX_GOPHER_DISPLAY_TEXT + 1], DisplayString, 0, 129, 1); TEST_FIELD(GOPHER_FIND_DATAA, DWORD, GopherType, 132, 4, 4); TEST_FIELD(GOPHER_FIND_DATAA, DWORD, SizeLow, 136, 4, 4); TEST_FIELD(GOPHER_FIND_DATAA, DWORD, SizeHigh, 140, 4, 4); TEST_FIELD(GOPHER_FIND_DATAA, FILETIME, LastModificationTime, 144, 8, 4); TEST_FIELD(GOPHER_FIND_DATAA, CHAR[MAX_GOPHER_LOCATOR_LENGTH + 1], Locator, 152, 654, 1); }
static void test_pack_GOPHER_FIND_DATAW(void) { /* GOPHER_FIND_DATAW (pack 4) */ TEST_TYPE(GOPHER_FIND_DATAW, 1588, 4); TEST_FIELD(GOPHER_FIND_DATAW, WCHAR[MAX_GOPHER_DISPLAY_TEXT + 1], DisplayString, 0, 258, 2); TEST_FIELD(GOPHER_FIND_DATAW, DWORD, GopherType, 260, 4, 4); TEST_FIELD(GOPHER_FIND_DATAW, DWORD, SizeLow, 264, 4, 4); TEST_FIELD(GOPHER_FIND_DATAW, DWORD, SizeHigh, 268, 4, 4); TEST_FIELD(GOPHER_FIND_DATAW, FILETIME, LastModificationTime, 272, 8, 4); TEST_FIELD(GOPHER_FIND_DATAW, WCHAR[MAX_GOPHER_LOCATOR_LENGTH + 1], Locator, 280, 1308, 2); }
static void test_pack_MIDL_STUBLESS_PROXY_INFO(void) { /* MIDL_STUBLESS_PROXY_INFO (pack 4) */ TEST_TYPE(MIDL_STUBLESS_PROXY_INFO, 24, 4); TEST_FIELD(MIDL_STUBLESS_PROXY_INFO, PMIDL_STUB_DESC, pStubDesc, 0, 4, 4); TEST_FIELD(MIDL_STUBLESS_PROXY_INFO, PFORMAT_STRING, ProcFormatString, 4, 4, 4); TEST_FIELD(MIDL_STUBLESS_PROXY_INFO, unsigned short *, FormatStringOffset, 8, 4, 4); TEST_FIELD(MIDL_STUBLESS_PROXY_INFO, PRPC_SYNTAX_IDENTIFIER, pTransferSyntax, 12, 4, 4); TEST_FIELD(MIDL_STUBLESS_PROXY_INFO, ULONG_PTR, nCount, 16, 4, 4); TEST_FIELD(MIDL_STUBLESS_PROXY_INFO, PMIDL_SYNTAX_INFO, pSyntaxInfo, 20, 4, 4); }
static void test_pack_GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE(void) { /* GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE (pack 4) */ TEST_TYPE(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, 24, 4); TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, DegreesNorth, 0, 4, 4); TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, MinutesNorth, 4, 4, 4); TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, SecondsNorth, 8, 4, 4); TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, DegreesEast, 12, 4, 4); TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, MinutesEast, 16, 4, 4); TEST_FIELD(GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE, INT, SecondsEast, 20, 4, 4); }
static void test_pack_ARRAY_INFO(void) { /* ARRAY_INFO (pack 4) */ TEST_TYPE(ARRAY_INFO, 24, 4); TEST_FIELD(ARRAY_INFO, LONG, Dimension, 0, 4, 4); TEST_FIELD(ARRAY_INFO, ULONG *, BufferConformanceMark, 4, 4, 4); TEST_FIELD(ARRAY_INFO, ULONG *, BufferVarianceMark, 8, 4, 4); TEST_FIELD(ARRAY_INFO, ULONG *, MaxCountArray, 12, 4, 4); TEST_FIELD(ARRAY_INFO, ULONG *, OffsetArray, 16, 4, 4); TEST_FIELD(ARRAY_INFO, ULONG *, ActualCountArray, 20, 4, 4); }