1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2009 - DIGITEO - Allan CORNET
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15 
16 /*--------------------------------------------------------------------------*/
17 #include <string.h>
18 #include <stdio.h>
19 #ifdef _MSC_VER
20 #include <windows.h>
21 #include "../../../libs/GetWindowsVersion/GetWindowsVersion.h"
22 #else
23 #include <sys/utsname.h>
24 #endif
25 #include "getos.h"
26 #include "sci_malloc.h"
27 #include "os_string.h"
28 
29 /*--------------------------------------------------------------------------*/
getOSFullName(void)30 char *getOSFullName(void)
31 {
32 #ifndef _MSC_VER
33     struct utsname uname_pointer;
34     uname(&uname_pointer);
35 
36     return os_strdup(uname_pointer.sysname);
37 #else
38     return os_strdup("Windows");
39 #endif
40 }
41 /*--------------------------------------------------------------------------*/
getOSRelease(void)42 char *getOSRelease(void)
43 {
44 #ifndef _MSC_VER
45     struct utsname uname_pointer;
46     uname(&uname_pointer);
47 
48     return os_strdup(uname_pointer.release);
49 #else
50     switch (GetWindowsVersion())
51     {
52         case OS_ERROR :
53         default :
54             return os_strdup("Unknow");
55             break;
56         case OS_WIN32_WINDOWS_NT_3_51 :
57             return os_strdup("NT 3.51");
58             break;
59         case OS_WIN32_WINDOWS_NT_4_0 :
60             return os_strdup("NT 4.0");
61             break;
62         case OS_WIN32_WINDOWS_95 :
63             return os_strdup("95");
64             break;
65         case OS_WIN32_WINDOWS_98 :
66             return os_strdup("98");
67             break;
68         case OS_WIN32_WINDOWS_Me :
69             return os_strdup("ME");
70             break;
71         case OS_WIN32_WINDOWS_2000 :
72             return os_strdup("2000");
73             break;
74         case OS_WIN32_WINDOWS_XP :
75             return os_strdup("XP");
76             break;
77         case OS_WIN32_WINDOWS_XP_64 :
78             return os_strdup("XP x64");
79             break;
80         case OS_WIN32_WINDOWS_SERVER_2003 :
81             return os_strdup("Server 2003");
82             break;
83         case OS_WIN32_WINDOWS_SERVER_2003_R2 :
84             return os_strdup("Server 2003 R2");
85             break;
86         case OS_WIN32_WINDOWS_SERVER_2003_64 :
87             return os_strdup("Server 2003 x64");
88             break;
89         case OS_WIN32_WINDOWS_VISTA :
90             return os_strdup("Vista");
91             break;
92         case OS_WIN32_WINDOWS_VISTA_64 :
93             return os_strdup("Vista x64");
94             break;
95         case OS_WIN32_WINDOWS_SERVER_2008 :
96             return os_strdup("Server 2008");
97             break;
98         case OS_WIN32_WINDOWS_SERVER_2008_64 :
99             return os_strdup("Server 2008 x64");
100             break;
101         case OS_WIN32_WINDOWS_SEVEN :
102             return os_strdup("Seven");
103             break;
104         case OS_WIN32_WINDOWS_SEVEN_64 :
105             return os_strdup("Seven x64");
106             break;
107         case OS_WIN32_WINDOWS_SEVEN_SERVER :
108             return os_strdup("Seven Server");
109             break;
110         case OS_WIN32_WINDOWS_SEVEN_SERVER_64 :
111             return os_strdup("Seven Server x64");
112             break;
113         case OS_WIN32_WINDOWS_EIGHT:
114             return os_strdup("8");
115             break;
116         case OS_WIN32_WINDOWS_EIGHT_64:
117             return os_strdup("8 x64");
118             break;
119         case OS_WIN32_WINDOWS_EIGHT_SERVER:
120             return os_strdup("8 Server");
121             break;
122         case OS_WIN32_WINDOWS_EIGHT_SERVER_64:
123             return os_strdup("8 Server x64");
124             break;
125     }
126 #endif
127 }
128 /*--------------------------------------------------------------------------*/
129