vshost-util-vserver

Build script and sources for util-vserver.
git clone https://ccx.te2000.cz/git/vshost-util-vserver
Log | Files | Refs

getkernel.c (1424B)


      1 // $Id$    --*- c++ -*--
      2 
      3 // Copyright (C) 2011 Daniel Hokka Zakrisson <daniel@hozac.com>
      4 //  
      5 // This program is free software; you can redistribute it and/or modify
      6 // it under the terms of the GNU General Public License as published by
      7 // the Free Software Foundation; version 2 of the License.
      8 //  
      9 // This program is distributed in the hope that it will be useful,
     10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12 // GNU General Public License for more details.
     13 //  
     14 // You should have received a copy of the GNU General Public License
     15 // along with this program; if not, write to the Free Software
     16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     17 
     18 
     19 #ifdef HAVE_CONFIG_H
     20 #  include <config.h>
     21 #endif
     22 
     23 #include <sys/utsname.h>
     24 #include <ctype.h>
     25 
     26 int
     27 vc_get_kernel()
     28 {
     29   static int linux_ver = -1;
     30   if (linux_ver == -1) {
     31     struct utsname uts;
     32     char *p;
     33     int part, n;
     34     if (uname(&uts) == -1)
     35       return -1;
     36     part = 0;
     37     n = 0;
     38     linux_ver = 0;
     39     for (p = uts.release; *p && part < 3; p++) {
     40       if (*p == '.') {
     41 	if (part < 3) {
     42 	  linux_ver |= n << (8 * (2 - part));
     43 	  n = 0;
     44 	  part++;
     45 	}
     46       }
     47       else if (isdigit(*p)) {
     48 	n *= 10;
     49 	n += *p - '0';
     50       }
     51       else
     52 	break;
     53     }
     54     if (n > 0 && part < 3)
     55       linux_ver |= n << (8 * (2 - part));
     56   }
     57   return linux_ver;
     58 }