summaryrefslogtreecommitdiffstats
path: root/tools/globalcode/utility/winutil.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tools/globalcode/utility/winutil.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/tools/globalcode/utility/winutil.c b/tools/globalcode/utility/winutil.c
new file mode 100644
index 0000000..9493c8b
--- /dev/null
+++ b/tools/globalcode/utility/winutil.c
@@ -0,0 +1,69 @@
+//-----------------------------------------------------------------------------
+// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved.
+//
+// winutil.h
+//
+// Description: A set of utilities which are specific to the windows development
+// environment.
+//
+// Modification History:
+// + Created Aug 03, 2001 -- bkusy
+//-----------------------------------------------------------------------------
+
+//----------------------------------------
+// System Includes
+//----------------------------------------
+#include <windows.h>
+#include <stdio.h>
+#include <assert.h>
+
+//----------------------------------------
+// Project Includes
+//----------------------------------------
+#include "winutil.h"
+
+//----------------------------------------
+// Constants
+//----------------------------------------
+#define BUFFER_SIZE 256
+
+
+//-----------------------------------------------------------------------------
+// w i n u t i l _ V e r s i o n I n f o
+//
+// Synopsis: Retrieve a version info string for the specified module.
+//
+// Parameters: name - the module to retrieve the information for.
+// info - a reference parameter to receive the info string.
+// info_size - the size of the buffer pointed to by info.
+//
+// Returns: the length of the string returned in info.
+//
+// Constraints: NONE
+//
+//-----------------------------------------------------------------------------
+int winutil_VersionInfo( const char* name, char* info, int info_size )
+{
+ char buffer[ BUFFER_SIZE + 1 ];
+ char* data = 0;
+ DWORD data_length, unused;
+ VS_FIXEDFILEINFO* fixed_file_info;
+ UINT fixed_file_info_length;
+ int major, minor;
+ int result;
+
+ GetModuleFileName( GetModuleHandle( name ), buffer, BUFFER_SIZE );
+ data_length = GetFileVersionInfoSize( buffer, &unused );
+ data = calloc( data_length, sizeof( char ) );
+ assert( data );
+ GetFileVersionInfo( buffer, unused, data_length, data );
+ VerQueryValue( data, "\\", (void**)(&fixed_file_info), &fixed_file_info_length );
+
+ major = fixed_file_info->dwFileVersionMS >> 16;
+ minor = fixed_file_info->dwFileVersionMS & 0x0ffff;
+ result = _snprintf( info, info_size, "%d.%d", major, minor );
+ return result;
+}
+
+
+