@@ -211,6 +211,12 @@ PHPAPI char *php_get_uname(char mode)
211
211
DWORD dwVersion = GetVersion ();
212
212
DWORD dwWindowsMajorVersion = (DWORD )(LOBYTE (LOWORD (dwVersion )));
213
213
DWORD dwWindowsMinorVersion = (DWORD )(HIBYTE (LOWORD (dwVersion )));
214
+ DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1 ;
215
+ char ComputerName [MAX_COMPUTERNAME_LENGTH + 1 ];
216
+ SYSTEM_INFO SysInfo ;
217
+
218
+ GetComputerName (ComputerName , & dwSize );
219
+ GetSystemInfo (& SysInfo );
214
220
215
221
if (mode == 's' ) {
216
222
if (dwVersion < 0x80000000 ) {
@@ -222,25 +228,57 @@ PHPAPI char *php_get_uname(char mode)
222
228
snprintf (tmp_uname , sizeof (tmp_uname ), "%d.%d" , dwWindowsMajorVersion , dwWindowsMinorVersion );
223
229
php_uname = tmp_uname ;
224
230
} else if (mode == 'n' ) {
225
- /* XXX HOW TO GET THIS ON WINDOWS? */
226
- php_uname = "localhost" ;
231
+ php_uname = ComputerName ;
227
232
} else if (mode == 'v' ) {
228
233
dwBuild = (DWORD )(HIWORD (dwVersion ));
229
234
snprintf (tmp_uname , sizeof (tmp_uname ), "build %d" , dwBuild );
230
235
php_uname = tmp_uname ;
231
236
} else if (mode == 'm' ) {
232
- /* XXX HOW TO GET THIS ON WINDOWS? */
233
- php_uname = "i386" ;
237
+ switch (SysInfo .wProcessorArchitecture ) {
238
+ case PROCESSOR_ARCHITECTURE_INTEL :
239
+ snprintf (tmp_uname , sizeof (tmp_uname ), "i%d" , SysInfo .dwProcessorType );
240
+ php_uname = tmp_uname ;
241
+ break ;
242
+ case PROCESSOR_ARCHITECTURE_MIPS :
243
+ php_uname = "MIPS R4000" ;
244
+ php_uname = tmp_uname ;
245
+ break ;
246
+ case PROCESSOR_ARCHITECTURE_ALPHA :
247
+ snprintf (tmp_uname , sizeof (tmp_uname ), "Alpha %d" , SysInfo .wProcessorLevel );
248
+ php_uname = tmp_uname ;
249
+ break ;
250
+ case PROCESSOR_ARCHITECTURE_PPC :
251
+ snprintf (tmp_uname , sizeof (tmp_uname ), "PPC 6%02d" , SysInfo .wProcessorLevel );
252
+ php_uname = tmp_uname ;
253
+ break ;
254
+ case PROCESSOR_ARCHITECTURE_IA64 :
255
+ php_uname = "IA64" ;
256
+ break ;
257
+ #if defined(PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 )
258
+ case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 :
259
+ php_uname = "IA32" ;
260
+ break ;
261
+ #endif
262
+ #if defined(PROCESSOR_ARCHITECTURE_AMD64 )
263
+ case PROCESSOR_ARCHITECTURE_AMD64 :
264
+ php_uname = "AMD64" ;
265
+ break ;
266
+ #endif
267
+ case PROCESSOR_ARCHITECTURE_UNKNOWN :
268
+ default :
269
+ php_uname = "Unknown" ;
270
+ break ;
271
+ }
234
272
} else { /* assume mode == 'a' */
235
273
/* Get build numbers for Windows NT or Win95 */
236
274
if (dwVersion < 0x80000000 ){
237
275
dwBuild = (DWORD )(HIWORD (dwVersion ));
238
276
snprintf (tmp_uname , sizeof (tmp_uname ), "%s %s %d.%d build %d" ,
239
- "Windows NT" , "localhost" ,
277
+ "Windows NT" , ComputerName ,
240
278
dwWindowsMajorVersion , dwWindowsMinorVersion , dwBuild );
241
279
} else {
242
280
snprintf (tmp_uname , sizeof (tmp_uname ), "%s %s %d.%d" ,
243
- "Windows 9x" , "localhost" ,
281
+ "Windows 9x" , ComputerName ,
244
282
dwWindowsMajorVersion , dwWindowsMinorVersion );
245
283
}
246
284
php_uname = tmp_uname ;
0 commit comments