summaryrefslogtreecommitdiffstats
path: root/test/tcheck_version.c
diff options
context:
space:
mode:
authorAlbert Cheng <acheng@hdfgroup.org>2009-10-18 04:59:16 (GMT)
committerAlbert Cheng <acheng@hdfgroup.org>2009-10-18 04:59:16 (GMT)
commitf3986a1b59971362f08f2ddfe400022e1dac79e5 (patch)
tree6f97065cff825903890dbf7ac932e06acd23abcb /test/tcheck_version.c
parent40834120338a80f15a12723073a72ca892be6d8a (diff)
downloadhdf5-f3986a1b59971362f08f2ddfe400022e1dac79e5.zip
hdf5-f3986a1b59971362f08f2ddfe400022e1dac79e5.tar.gz
hdf5-f3986a1b59971362f08f2ddfe400022e1dac79e5.tar.bz2
[svn-r17669] Bug 1656 fix:
added a signal handler to the tcheck_version to intercept the abort signal from H5check_version. Some systems would prints extra messages and/or core dump if the abort signal is not handled. This eliminates those unwanted side effect. Tested: h5committested.
Diffstat (limited to 'test/tcheck_version.c')
-rw-r--r--test/tcheck_version.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/test/tcheck_version.c b/test/tcheck_version.c
index 7a34b26..d8894b3 100644
--- a/test/tcheck_version.c
+++ b/test/tcheck_version.c
@@ -25,14 +25,19 @@
*
* Programmer: Albert Cheng
* September 20, 2009
+ * Modifications:
+ * Added abort signal intercept. AKC - 2009/10/16 -
*/
-
-#include <stdlib.h>
-#include "hdf5.h"
+#include "h5test.h"
#define progname "tcheck_version"
+/* prototypes */
+void showhelp(void);
+void parse(int ac, char **av);
+void abort_intercept (int UNUSED sig);
+
/* global variables */
unsigned major = H5_VERS_MAJOR;
unsigned minor = H5_VERS_MINOR;
@@ -90,10 +95,24 @@ parse(int ac, char **av)
}
}
+/* Handler for SIGABRT - catch the abort signal supposedly from check_version()
+ * and exit(134). 134 would have been the return code in Unix systems.
+ * This handles the abort signal instead letting it interrupt the OS because
+ * some systems may produce extra messages and/or produce core dump.
+ * This tries to eliminate those side effects.
+ */
+void
+abort_intercept (int UNUSED sig)
+{
+ HDexit(134);
+}
+
int
main(int ac, char **av)
{
parse(ac, av);
+ HDsignal(SIGABRT, &abort_intercept);
H5check_version(major, minor, release);
+ HDsignal(SIGABRT, SIG_DFL);
return 0;
}