From c9c6767b834aa55559cfa59bb9df8d564c6cd5b9 Mon Sep 17 00:00:00 2001 From: Florian Krohm Date: Sun, 31 Jul 2011 03:22:45 +0000 Subject: [PATCH] Fix prerequisite for memcheck/tests/linux/timerfd-syscall. The testcase was executed despite uname -r being 2.6.9-42.EL Extend tests/os_test.c to take an optional 2nd argument which is a minimum version number. Use os_test in the prerequisite expression. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11954 --- memcheck/tests/linux/timerfd-syscall.vgtest | 2 +- tests/os_test.c | 41 ++++++++++++++++++--- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/memcheck/tests/linux/timerfd-syscall.vgtest b/memcheck/tests/linux/timerfd-syscall.vgtest index 75a3f71752..117bb9e8a8 100644 --- a/memcheck/tests/linux/timerfd-syscall.vgtest +++ b/memcheck/tests/linux/timerfd-syscall.vgtest @@ -1,2 +1,2 @@ -prereq: [ "$(uname)" = "Linux" ] && awk 'END{exit("'$(uname -r)'" >= "2.6.25" ? 0 : 1)}' g1) return True; + if (a1 < g1) return False; + if (a2 > g2) return True; + if (a2 < g2) return False; + if (a3 >= g3) return True; + + return False; +} +#endif + +static Bool go(char* OS, char *min_version) { #if defined(VGO_linux) - if ( 0 == strcmp( OS, "linux" ) ) return True; + if ( 0 == strcmp( OS, "linux" ) && matches_version( min_version )) return True; #elif defined(VGO_darwin) if ( 0 == strcmp( OS, "darwin" ) ) return True; @@ -46,11 +75,11 @@ static Bool go(char* OS) int main(int argc, char **argv) { int i; - if ( argc != 2 ) { - fprintf( stderr, "usage: os_test \n" ); + if ( argc < 2 ) { + fprintf( stderr, "usage: os_test []\n" ); exit(3); // Usage error. } - if (go( argv[1] )) { + if (go( argv[1], argv[2] )) { return 0; // Matched. } for (i = 0; NULL != all_OSes[i]; i++) { -- 2.47.2