diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/H5.c | 20 | ||||
-rw-r--r-- | src/H5detect.c | 76 | ||||
-rw-r--r-- | src/H5private.h | 1 |
3 files changed, 70 insertions, 27 deletions
@@ -28,7 +28,7 @@ #include "H5Lprivate.h" /* Links */ #include "H5Pprivate.h" /* Property lists */ #include "H5Tprivate.h" /* Datatypes */ -#include "H5SLprivate.h" /* Skip lists */ +#include "H5SLprivate.h" /* Skip lists */ /****************/ @@ -623,6 +623,7 @@ H5check_version(unsigned majnum, unsigned minnum, unsigned relnum) static int checked = 0; /* If we've already checked the version info */ static int disable_version_check = 0; /* Set if the version check should be disabled */ herr_t ret_value=SUCCEED; /* Return value */ + static char *version_mismatch_warning=VERSION_MISMATCH_WARNING; FUNC_ENTER_API_NOINIT_NOFS(H5check_version) H5TRACE3("e", "IuIuIu", majnum, minnum, relnum); @@ -644,15 +645,16 @@ H5check_version(unsigned majnum, unsigned minnum, unsigned relnum) H5_VERS_RELEASE!=relnum) { switch (disable_version_check) { case 0: - HDfputs (VERSION_MISMATCH_WARNING + HDfprintf(stderr, "%s%s", version_mismatch_warning, "You can, at your own risk, disable this warning by setting the environment\n" "variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.\n" - "Setting it to 2 will suppress the warning messages totally.\n", - stderr); + "Setting it to 2 will suppress the warning messages totally.\n"); /* Mention the versions we are referring to */ HDfprintf (stderr, "Headers are %u.%u.%u, library is %u.%u.%u\n", majnum, minnum, relnum, (unsigned)H5_VERS_MAJOR, (unsigned)H5_VERS_MINOR, (unsigned)H5_VERS_RELEASE); + /* Show library settings if available */ + HDfprintf (stderr, "%s", H5libhdf5_settings); /* Bail out now. */ HDfputs ("Bye...\n", stderr); @@ -662,14 +664,18 @@ H5check_version(unsigned majnum, unsigned minnum, unsigned relnum) break; default: /* continue with a warning */ - HDfprintf (stderr, VERSION_MISMATCH_WARNING - "'HDF5_DISABLE_VERSION_CHECK' " + /* Note that the warning message is embedded in the format string. */ + HDfprintf (stderr, + "%s'HDF5_DISABLE_VERSION_CHECK' " "environment variable is set to %d, application will\n" - "continue at your own risk.\n", disable_version_check); + "continue at your own risk.\n", + version_mismatch_warning, disable_version_check); /* Mention the versions we are referring to */ HDfprintf (stderr, "Headers are %u.%u.%u, library is %u.%u.%u\n", majnum, minnum, relnum, (unsigned)H5_VERS_MAJOR, (unsigned)H5_VERS_MINOR, (unsigned)H5_VERS_RELEASE); + /* Show library settings if available */ + HDfprintf (stderr, "%s", H5libhdf5_settings); break; } /* end switch */ diff --git a/src/H5detect.c b/src/H5detect.c index 8d7b93b..d5801ef 100644 --- a/src/H5detect.c +++ b/src/H5detect.c @@ -108,7 +108,8 @@ static void detect_C99_integers16(void); static void detect_C99_integers32(void); static void detect_C99_integers64(void); static void detect_alignments(void); -static void insert_libhdf5_settings(void); +static void insert_libhdf5_settings(FILE *flibinfo); +static void make_libinfo(void); static size_t align_g[] = {1, 2, 4, 8, 16}; static jmp_buf jbuf_g; @@ -505,8 +506,10 @@ sigbus_handler(int UNUSED signo) /*------------------------------------------------------------------------- * Function: insert_libhdf5_settings * - * Purpose: Insert contents of libhdf5.settings so that it is included - * in all hdf5 executables. + * Purpose: insert the contents of libhdf5.settings into a file + * represented by flibinfo. + * Make it an empty string if H5_HAVE_EMBEDDED_LIBINFO is not + * defined, i.e., not enabled. * * Return: void * @@ -519,9 +522,10 @@ sigbus_handler(int UNUSED signo) */ #define LIBSETTINGSFNAME "libhdf5.settings" static void -insert_libhdf5_settings(void) +insert_libhdf5_settings(FILE *flibinfo) { - FILE *fsettings; +#ifdef H5_HAVE_EMBEDDED_LIBINFO + FILE *fsettings; /* for files libhdf5.settings */ int inchar; int bol=0; /* indicates the beginning of a new line */ @@ -529,34 +533,66 @@ insert_libhdf5_settings(void) perror(LIBSETTINGSFNAME); exit(1); } - /* print variable definition */ - printf("extern char H5libhdf5_settings[]=\n"); + /* print variable definition and the string */ + fprintf(flibinfo, "char H5libhdf5_settings[]=\n"); bol++; while (EOF != (inchar = getc(fsettings))){ if (bol){ /* Start a new line */ - printf("\t\""); + fprintf(flibinfo, "\t\""); bol = 0; } if (inchar == '\n'){ /* end of a line */ - printf("\\n\"\n"); + fprintf(flibinfo, "\\n\"\n"); bol++; }else{ - putchar(inchar); + putc(inchar, flibinfo); } } if (feof(fsettings)){ /* wrap up */ if (!bol){ /* EOF found without a new line */ - printf("\\n\"\n"); + fprintf(flibinfo, "\\n\"\n"); }; - printf(";\n\n"); + fprintf(flibinfo, ";\n\n"); }else{ fprintf(stderr, "Read errors encountered with %s\n", LIBSETTINGSFNAME); exit(1); } + if (0 != fclose(fsettings)){ + perror(LIBSETTINGSFNAME); + exit(1); + } +#else + /* print variable definition and an empty string */ + fprintf(flibinfo, "char H5libhdf5_settings[]=\"\";\n"); +#endif +} + + +/*------------------------------------------------------------------------- + * Function: make_libinfo + * + * Purpose: Create the embedded library information definition. + * This sets up for a potential extension that the declaration + * is printed to a file different from stdout. + * + * Return: void + * + * Programmer: Albert Cheng + * Sep 15, 2009 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +static void +make_libinfo(void) +{ + /* print variable definition and then the string as a macro. */ + insert_libhdf5_settings(stdout); } @@ -623,11 +659,13 @@ print_results(int nd, detected_t *d, int na, malign_t *misc_align) /********************/\n\ /* Public Variables */\n\ /********************/\n\ -\n\n\ +\n\ +\n\ /*****************************/\n\ /* Library Private Variables */\n\ /*****************************/\n\ -\n\n\ +\n\ +\n\ /*********************/\n\ /* Package Variables */\n\ /*********************/\n\ @@ -639,10 +677,8 @@ print_results(int nd, detected_t *d, int na, malign_t *misc_align) /*******************/\n\ \n"); -#ifdef H5_HAVE_EMBEDDED_LIBINFO - /* Insert content of libhdf5.settings */ - insert_libhdf5_settings(); -#endif + /* Generate embedded library information variable definition */ + make_libinfo(); /* The interface initialization function */ printf("\n\ @@ -1119,8 +1155,8 @@ find_bias(int epos, int esize, int *perm, void *_a) /*------------------------------------------------------------------------- * Function: print_header - * - * Purpose: Prints the C file header for the generated file. + * + * Purpose: Prints the C file header for the generated file. * * Return: void * diff --git a/src/H5private.h b/src/H5private.h index 9c18be2..2c4576f 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -1520,6 +1520,7 @@ typedef struct H5_debug_t { extern H5_debug_t H5_debug_g; #define H5DEBUG(X) (H5_debug_g.pkg[H5_PKG_##X].stream) +extern char H5libhdf5_settings[]; /* embedded library information */ /*------------------------------------------------------------------------- * Purpose: These macros are inserted automatically just after the |