/**Checkthelzinsn.*/#include<stdio.h>#include<stdlib.h>#include<stdint.h>#include"sys.h"#define__LINUX_KERNEL_VERSION131584#defineDL_SYSDEP_OSCHECK(FATAL)\do{\/*Testwhetherthekernelisnewenough.Thistestisonly\performedifthelibraryisnotcompiledtorunonall\kernels.*/\if(__LINUX_KERNEL_VERSION>0)\{\charbufmem[64];\char*buf=bufmem;\unsignedintversion;\intparts;\char*cp;\structutsnameuts;\\/* Try the uname syscall */\if(__uname(&uts))\{\/*Thiswasnotsuccessful.Nowtryreadingthe/proc\filesystem.*/\ssize_treslen;\intfd=__open("/proc/sys/kernel/osrelease",O_RDONLY);\if(fd==-1\||(reslen=__read(fd,bufmem,sizeof(bufmem)))<=0)\/*Thisalsodidn'twork.Wegiveupsincewecannot\makesurethelibrarycanactuallywork.*/\FATAL("FATAL: cannot determine library version\n");\__close(fd);\buf[MIN(reslen,(ssize_t)sizeof(bufmem)-1)]='\0';\}\else\buf=uts.release;\\/*Nowconvertitintoanumber.Thestringconsistsofatmost\threeparts.*/\version=0;\parts=0;\cp=buf;\while((*cp>='0')&&(*cp<='9'))\{\unsignedinthere=*cp++-'0';\\while((*cp>='0')&&(*cp<='9'))\{\here*=10;\here+=*cp++-'0';\}\\++parts;\version<<=8;\version|=here;\\if(*cp++!='.')\/* Another part following? */\break;\}\\if(parts<3)\version<<=8*(3-parts);\\/* Now we can test with the required version. */\if(version<__LINUX_KERNEL_VERSION)\/* Not sufficent. */\FATAL("FATAL: kernel too old\n");\\_dl_osversion=version;\}\}while(0)intmain(void){charbufmem[64]="2.6.22";char*buf=bufmem;unsignedintversion;intparts;char*cp;version=0;parts=0;cp=buf;while((*cp>='0')&&(*cp<='9')){unsignedinthere=*cp++-'0';while((*cp>='0')&&(*cp<='9')){here*=10;here+=*cp++-'0';}++parts;version<<=8;version|=here;if(*cp++!='.')/* Another part following? */break;}if(parts<3)version<<=8*(3-parts);if(version<__LINUX_KERNEL_VERSION)err();pass();exit(0);}