* Normalization with develop * Removes checks and work-arounds for strtoll and strtoull (#769) * Removes checks for (v)snprintf, which are C99 (#772) * Update missing release note info. (#776) * Replaces the H5_OVERRIDE macro with override (#773) The macro is no longer necessary now that we require C++11. * Cleans up some POSIX header bits in H5private.h (#783) * Removes outdated checks for ways inline might be defined (#781) These are obsolete now that we require C99. * Removes checks for system(), which is C89/90 (#782) * Removes C++ dependency on H5private.h (#774) * Removes C++ dependency on H5private.h Most C API calls have been removed, aside from a few uses of free, where we just dropped the 'HD'. A couple of H5_ATTR_UNUSED macros were also replaced with (void) statements. * Committing clang-format changes Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Further simplifies Autotools type size checks (#789) Also fixes an issue where clock_gettime and difftime are not detected due to earlier simplifications of this code. * Release Note (#784) * Normalization of CMake H5pubconf.h with Autotools (#791) Mostly just moving things around and changing the comments to keep the delta small. The only symbol change is that for curl/curl.h which I changed to H5_HAVE_CURL_CURL_H to match the Autotools. This symbol is not used in the library and is just an artifact of the checks. * Fix tools test (#794) * Removes ancient Autotools cruft (#790) * Reorganization of C and POSIX headers in H5public.h & H5private.h (#793) * Reorganization of C and POSIX headers in H5public.h & H5private.h Consolidated and removed duplicates * It turns out Windows has sys/types.h Co-authored-by: Larry Knox <lrknox@hdfgroup.org> * Removes checks for signal and set/longjmp, which are C89 (#798) Also removes checks for setjmp.h and stddef.h * Assume frexpl/f and fabsl/f, which are C99 (#799) * Assume the library has C99 types in C++ type code (#806) * Assume the library has C99 types in C++ type code * Committing clang-format changes Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Removes obsolete equivalents of C99's __func__ (#800) * Cleans up POSIX/C bits in H5private.h (#804) * Cleans up POSIX/C bits in H5private.h * Assume difftime exists (C89) * Reorg AC_CHECK_HEADERS so headers are in alphabetical order * Split off networking-related AC_CHECK_HEADERS * Remove unused UNAME_CYGWIN from configure.ac * Remove checks for unused sys/timeb.h * Tidying pass over H5private.h HD prefix macros * Tidy H5win32defs.h * Add HD prefix to various scanf calls * Committing clang-format changes * Fixes to the alarm(2) code used in the tests to make Windows happy Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> * Brings the tools getopt(3) replacement into the main library (#803) * Moves get_option from the tools library to the C library * Adds H5 prefix to get_option call and variables * Renames the H5_get_option long options struct and enum * Removes type guesses when C99 types are missing (#807) * Assume C99 types exist in H5detect.c (#808) * Fixes parallel issues from recent C99 changes * Adds MPE FUNC --> __func__ changes missed in earlier PRs * Fix typo * Fixes parallel issues from recent C99 changes (#809) * Fixes parallel issues from recent C99 changes * Adds MPE FUNC --> __func__ changes missed in earlier PRs * Even more missed FUNC --> __func__ macros * Removes remaining H5_TIME_WITH_SYS_TIME cruft (#810) Mostly from CMake Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Larry Knox <lrknox@hdfgroup.org>
294 lines
5.6 KiB
C
294 lines
5.6 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* Copyright by The HDF Group. *
|
|
* All rights reserved. *
|
|
* *
|
|
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
|
* terms governing use, modification, and redistribution, is contained in *
|
|
* the COPYING file, which can be found at the root of the source code *
|
|
* distribution tree, or in https://www.hdfgroup.org/licenses. *
|
|
* If you do not have access to either file, you may request a copy from *
|
|
* help@hdfgroup.org. *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
#define SIMPLE_TEST(x) int main(){ x; return 0; }
|
|
|
|
#ifdef HAVE_C99_DESIGNATED_INITIALIZER
|
|
|
|
#ifdef FC_DUMMY_MAIN
|
|
#ifndef FC_DUMMY_MAIN_EQ_F77
|
|
# ifdef __cplusplus
|
|
extern "C"
|
|
# endif
|
|
int FC_DUMMY_MAIN()
|
|
{ return 1;}
|
|
#endif
|
|
#endif
|
|
int
|
|
main ()
|
|
{
|
|
|
|
typedef struct
|
|
{
|
|
int x;
|
|
union
|
|
{
|
|
int i;
|
|
double d;
|
|
}u;
|
|
}di_struct_t;
|
|
di_struct_t x =
|
|
{ 0,
|
|
{ .d = 0.0}};
|
|
;
|
|
return 0;
|
|
}
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_ATTRIBUTE
|
|
|
|
#if 0
|
|
static void test int __attribute((unused)) var)
|
|
{
|
|
int __attribute__((unused)) x = var;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
test(19);
|
|
}
|
|
|
|
#else
|
|
int
|
|
main ()
|
|
{
|
|
int __attribute__((unused)) x
|
|
;
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif /* HAVE_ATTRIBUTE */
|
|
|
|
#ifdef HAVE_TIMEZONE
|
|
|
|
#ifdef HAVE_SYS_TIME_H
|
|
#include <sys/time.h>
|
|
#endif
|
|
#include <time.h>
|
|
SIMPLE_TEST(timezone=0);
|
|
|
|
#endif /* HAVE_TIMEZONE */
|
|
|
|
#ifdef PRINTF_LL_WIDTH
|
|
|
|
#ifdef HAVE_LONG_LONG
|
|
# define LL_TYPE long long
|
|
#else /* HAVE_LONG_LONG */
|
|
# define LL_TYPE __int64
|
|
#endif /* HAVE_LONG_LONG */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#if defined(_MSC_VER) && defined(_DEBUG)
|
|
# include <crtdbg.h>
|
|
int DebugReport(int reportType, char* message, int* returnValue)
|
|
{
|
|
(void)reportType;
|
|
(void)message;
|
|
(void)returnValue;
|
|
return 1; /* no further handling required */
|
|
}
|
|
#endif
|
|
|
|
int main(void)
|
|
{
|
|
char *llwidthArgs[] = { "I64", "l64", "ll", "l", "L", "q", NULL };
|
|
char *s = malloc(128);
|
|
char **currentArg = NULL;
|
|
LL_TYPE x = (LL_TYPE)1048576 * (LL_TYPE)1048576;
|
|
#if defined(_MSC_VER) && defined(_DEBUG)
|
|
_CrtSetReportHook(DebugReport);
|
|
#endif
|
|
for (currentArg = llwidthArgs; *currentArg != NULL; currentArg++)
|
|
{
|
|
char formatString[64];
|
|
sprintf(formatString, "%%%sd", *currentArg);
|
|
sprintf(s, formatString, x);
|
|
if (strcmp(s, "1099511627776") == 0)
|
|
{
|
|
printf("PRINTF_LL_WIDTH=[%s]\n", *currentArg);
|
|
return 0;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
#endif /* PRINTF_LL_WIDTH */
|
|
|
|
#ifdef SYSTEM_SCOPE_THREADS
|
|
#include <stdlib.h>
|
|
#include <pthread.h>
|
|
|
|
int main(void)
|
|
{
|
|
pthread_attr_t attribute;
|
|
int ret;
|
|
|
|
pthread_attr_init(&attribute);
|
|
ret=pthread_attr_setscope(&attribute, PTHREAD_SCOPE_SYSTEM);
|
|
if (ret==0)
|
|
return 0;
|
|
return 1;
|
|
}
|
|
|
|
#endif /* SYSTEM_SCOPE_THREADS */
|
|
|
|
#ifdef HAVE_SOCKLEN_T
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#ifdef HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
#include <sys/socket.h>
|
|
#endif
|
|
|
|
SIMPLE_TEST(socklen_t foo);
|
|
|
|
#endif /* HAVE_SOCKLEN_T */
|
|
|
|
#ifdef DEV_T_IS_SCALAR
|
|
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif
|
|
|
|
int main ()
|
|
{
|
|
dev_t d1, d2;
|
|
if(d1==d2)
|
|
return 0;
|
|
return 1;
|
|
}
|
|
|
|
#endif /* DEV_T_IS_SCALAR */
|
|
|
|
#ifdef HAVE_OFF64_T
|
|
#include <sys/types.h>
|
|
int main()
|
|
{
|
|
off64_t n = 0;
|
|
return (int)n;
|
|
}
|
|
#endif
|
|
|
|
#ifdef TEST_DIRECT_VFD_WORKS
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
int main(void)
|
|
{
|
|
int fid;
|
|
if((fid=open("tst_file", O_CREAT | O_TRUNC | O_DIRECT, 0755))<0)
|
|
return 1;
|
|
close(fid);
|
|
remove("tst_file");
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
#ifdef HAVE_DIRECT
|
|
SIMPLE_TEST(posix_memalign());
|
|
#endif
|
|
|
|
#ifdef HAVE_DEFAULT_SOURCE
|
|
/* check default source */
|
|
#include <features.h>
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
#ifdef __GLIBC_PREREQ
|
|
return __GLIBC_PREREQ(2,19);
|
|
#else
|
|
return 0;
|
|
#endif /* defined(__GLIBC_PREREQ) */
|
|
}
|
|
#endif
|
|
|
|
#ifdef TEST_LFS_WORKS
|
|
/* Return 0 when LFS is available and 1 otherwise. */
|
|
#define _LARGEFILE_SOURCE
|
|
#define _LARGEFILE64_SOURCE
|
|
#define _LARGE_FILES
|
|
#define _FILE_OFFSET_BITS 64
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <assert.h>
|
|
#include <stdio.h>
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
/* check that off_t can hold 2^63 - 1 and perform basic operations... */
|
|
#define OFF_T_64 (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
|
if (OFF_T_64 % 2147483647 != 1)
|
|
return 1;
|
|
|
|
/* stat breaks on SCO OpenServer */
|
|
struct stat buf;
|
|
stat( argv[0], &buf );
|
|
if (!S_ISREG(buf.st_mode))
|
|
return 2;
|
|
|
|
FILE *file = fopen( argv[0], "r" );
|
|
off_t offset = ftello( file );
|
|
fseek( file, offset, SEEK_CUR );
|
|
fclose( file );
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
#ifdef GETTIMEOFDAY_GIVES_TZ
|
|
#include <time.h>
|
|
#ifdef HAVE_SYS_TIME_H
|
|
#include <sys/time.h>
|
|
#endif
|
|
int main(void)
|
|
{
|
|
struct timeval tv;
|
|
struct timezone tz;
|
|
tz.tz_minuteswest = 7777; /* Initialize to an unreasonable number */
|
|
tz.tz_dsttime = 7;
|
|
gettimeofday(&tv, &tz);
|
|
/* Check whether the function returned any value at all */
|
|
if(tz.tz_minuteswest == 7777 && tz.tz_dsttime == 7)
|
|
return 1;
|
|
else return 0;
|
|
}
|
|
#endif
|
|
|
|
#ifdef HAVE_IOEO
|
|
|
|
#include <windows.h>
|
|
typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
|
|
int main ()
|
|
{
|
|
PGNSI pGNSI;
|
|
pGNSI = (PGNSI) GetProcAddress(
|
|
GetModuleHandle(TEXT("kernel32.dll")),
|
|
"InitOnceExecuteOnce");
|
|
if(NULL == pGNSI)
|
|
return 1;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
#endif /* HAVE_IOEO */
|