--- cws_srx645_ooo11rc_unchanged/setup2/mow/source/loader/loader.c Thu Jun 12 09:52:13 2003 +++ cws_srx645_ooo11rc/setup2/mow/source/loader/loader.c Sat Jun 28 07:50:37 2003 @@ -853,7 +853,13 @@ void *handle; void * (*pverfunc)(void); char *pvstr; + int maj_ver; + int min_ver; + int mic_ver; + char *pos; + maj_ver = min_ver = mic_ver = 0; + handle = dlopen("libc.so.6", RTLD_LAZY); /* new API for glibc-2.1, not available in glibc-2.0.7 */ @@ -862,8 +868,25 @@ if ( pverfunc ) { pvstr = pverfunc(); printf("glibc version: %s\n", pvstr); - if ( strncmp( "2.2", pvstr, 3 ) <= 0 ) + pos = pvstr; + if (NULL != pos) { + maj_ver = atoi(pos); + + pos = strchr (pos, '.'); + if ((NULL != pos) && (strlen (pos) > 1)) { + min_ver = atoi (++pos); + + pos = strchr (pos, '.'); + if ((NULL != pos) && (strlen (pos) > 1)) + mic_ver = atoi (++pos); + } + } + dlclose (handle); + + if ((maj_ver > 2) || ((maj_ver == 2) && (min_ver >= 2))) return; + } else { + dlclose (handle); } printf("error: wrong glibc version, you need at least 2.2.0\n" );