text: 
  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  
  // This program determines which OS that this Valgrind installation
  // supports, which depends on what was chosen at configure-time.
  //
  // We return:
  // - 0 if the machine matches the asked-for OS and satisfies a
  //     version requirement, if any
  // - 1 if it doesn't match but does match the name of another OS
  // - 2 if it doesn't match the name of any OS
  // - 3 if there was a usage error (it also prints an error message)
  
  // Nb: When updating this file for a new OS, add the name to
  // 'all_OSes' as well as adding go().
  
  #define False  0
  #define True   1
  typedef int    Bool;
  
  char* all_OSes[] = {
     "linux",
     "darwin",
     NULL
  };
  
  #if defined(VGO_linux)
  static Bool matches_version(char *min_version)
  {
     int a1, a2, a3, g1, g2, g3;  // 'a' = actual;  'g' = given
  
     if (min_version == NULL)  return True;  // no version specified
  
     // get actual version number
     FILE *fp = fopen("/proc/sys/kernel/osrelease", "r");
     if (fp == NULL || fscanf(fp, "%d.%d.%d", &a1, &a2, &a3) != 3) return False;
     fclose(fp);
  
     // parse given version number
     if (sscanf(min_version, "%d.%d.%d", &g1, &g2, &g3) != 3) return False;
  
  //   printf("actual %d %d %d\n", a1, a2,a3);
  //   printf("given  %d %d %d\n", g1, g2,g3);
  
     if (a1 > 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" ) && matches_version( min_version )) return True;
  
  #elif defined(VGO_darwin)
     if ( 0 == strcmp( OS, "darwin" ) ) return True;
  
  #else
  #  error Unknown OS
  #endif   // VGO_*
  
     return False;
  }
  
  //---------------------------------------------------------------------------
  // main
  //---------------------------------------------------------------------------
  int main(int argc, char **argv)
  {
     int i;
     if ( argc < 2 ) {
        fprintf( stderr, "usage: os_test <OS-type> [<min-version>]\n" );
        exit(3);             // Usage error.
     }
     if (go( argv[1], argv[2] )) {
        return 0;            // Matched.
     }
     for (i = 0; NULL != all_OSes[i]; i++) {
        if ( 0 == strcmp( argv[1], all_OSes[i] ) )
           return 1;         // Didn't match, but named another OS.
     }
     return 2;               // Didn't match any OSes.
  }
  
  