From: Joerg B. <jo...@sq...> - 2001-09-20 13:32:47
|
Dear MinGW users, I am looking for the Win32 equivalent of the Unix "uname" function - getting textual information about machine name, OS version etc. Is there any such thing? A search for the Unix keywords "uname", "nodename", and "sysname" in our local MSDN did not lead me to any suitable reference, so the keyword seemt to be something different. TIA, Joerg Bruehe -- Joerg Bruehe, SQL Datenbanksysteme GmbH, Berlin, Germany (speaking only for himself) mailto: jo...@sq... |
From: Mark E. <me...@ge...> - 2001-09-20 15:38:31
|
Joerg Bruehe wrote: > Dear MinGW users, > > I am looking for the Win32 equivalent of the Unix "uname" function - > getting textual information about machine name, OS version etc. > > Is there any such thing? > > A search for the Unix keywords "uname", "nodename", and "sysname" > in our local MSDN did not lead me to any suitable reference, > so the keyword seemt to be something different. > > TIA, > Joerg Bruehe > > Try gethostname for the machine name, followed by GetVersionEx for os version. TTFN Mark Elliss |
From: Jesper E. <jo...@vi...> - 2001-09-20 15:44:28
|
Joerg Bruehe <jo...@sq...> writes: > Dear MinGW users, > > I am looking for the Win32 equivalent of the Unix "uname" function - > getting textual information about machine name, OS version etc. > > Is there any such thing? > > A search for the Unix keywords "uname", "nodename", and "sysname" > in our local MSDN did not lead me to any suitable reference, > so the keyword seemt to be something different. The function you want to look at is GetVersionEx(). /Jesper -- Jesper Eskilson Virtutech |
From: Gary L. S. <gs...@in...> - 2001-09-20 15:52:36
|
Here is a code sample. Gary /*********************************************************** * uname - returns name of OS **********************************************************/ #include <windows.h> #include <stdlib.h> #include <stdio.h> #define index(s, c) strchr((s), (c)) #define streq(a, b) (strcmp ((a), (b)) == 0) static char ** getlistOfOptions (char **pArgv, char * pOptions); static void getUnameOption ( char option ); /*********************************************************************** * -a Print all information. * * -m Print the machine hardware name. * * -n Print the nodename (the nodename is the name by which * the system is known to a communications network). * * -p Print the current host's processor type. * * -r Print the operating system release. * * -s Print the name of the operating system. This is the * default. * * -v Print the operating system version. * * -S systemname * The nodename may be changed by specifying a system name * argument. The system name argument is restricted to * SYS_NMLN characters. SYS_NMLN is an implementation * specific value defined in <sys/utsname.h>. Only the * super-user is allowed this capability. ***********************************************************************/ main( int argc, char *argv[ ], char *envp[ ] ) { char options[1024]; char *pOptions; char **pArgv; char c; pArgv = &argv[1]; pArgv = getlistOfOptions (pArgv, options); /* if no options specified, then return operating system */ pOptions = options; if ( *pOptions == '\0' ) { options[0] = 's'; options[1] = '\0'; } while (c = *pOptions++ ) { if ( c == 'a' ) { getUnameOption ( 's' ); printf (" " ); getUnameOption ( 'n' ); printf (" " ); getUnameOption ( 'r' ); printf (" " ); getUnameOption ( 'v' ); printf (" " ); getUnameOption ( 'm' ); printf (" " ); getUnameOption ( 'p' ); } else { getUnameOption ( c ); } printf("\n"); } return 0; } static char ** getlistOfOptions (char **pArgv, char * pOptions) { char *pArg; while ( *pArgv && (**pArgv == '-') ) { pArg = *pArgv; pArg++; /* skip over '-' */ while ( *pArg ) *pOptions++ = *pArg++; pArgv++; } *pOptions = '\0'; return pArgv; } void getUnameOption ( char option ) { char computerName[128]; SYSTEM_INFO systemInfo; OSVERSIONINFO versionInfo; DWORD computerNameLength = sizeof(computerName); GetSystemInfo( &systemInfo); GetComputerName( (LPTSTR)&computerName, &computerNameLength ); versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx( &versionInfo ); switch ( option ) { case 'a': printf ( getenv ("OS") ); break; case 'm': case 'S': printf ( "Mingw32" ); break; case 'n': printf ( computerName ); break; case 'p': switch ( systemInfo.wProcessorArchitecture ) { case PROCESSOR_ARCHITECTURE_INTEL: printf("I386"); break; case PROCESSOR_ARCHITECTURE_MIPS: printf("MIPS"); break; case PROCESSOR_ARCHITECTURE_ALPHA: printf("ALPHA"); break; case PROCESSOR_ARCHITECTURE_PPC: printf("PPC"); break; default: printf("UNKNOWN_PROCESSOR"); break; } break; case 'r': printf ("%d.%d", versionInfo.dwMajorVersion, versionInfo.dwMinorVersion ); break; case 's': switch ( versionInfo.dwPlatformId ) { case VER_PLATFORM_WIN32s: printf("WIN32S"); break; case VER_PLATFORM_WIN32_WINDOWS: printf("WIN95"); break; case VER_PLATFORM_WIN32_NT: printf("WINNT"); break; default: printf("UNKNOWN_OS"); break; } break; case 'v': printf ("%d", versionInfo.dwBuildNumber ); break; default: printf ( "uname -%c is unimplemented", option ); break; } } -----Original Message----- From: min...@li... [mailto:min...@li...]On Behalf Of Jesper Eskilson Sent: Thursday, September 20, 2001 11:44 PM To: Joerg Bruehe Cc: MinGW Mailing List Subject: Re: [Mingw-users] "uname" equivalent ? Joerg Bruehe <jo...@sq...> writes: > Dear MinGW users, > > I am looking for the Win32 equivalent of the Unix "uname" function - > getting textual information about machine name, OS version etc. > > Is there any such thing? > > A search for the Unix keywords "uname", "nodename", and "sysname" > in our local MSDN did not lead me to any suitable reference, > so the keyword seemt to be something different. The function you want to look at is GetVersionEx(). /Jesper -- Jesper Eskilson Virtutech _______________________________________________ MinGW-users mailing list Min...@li... You may change your MinGW Account Options at: https://lists.sourceforge.net/lists/listinfo/mingw-users |