| Index: base/file_ver.cc
|
| diff --git a/base/file_ver.cc b/base/file_ver.cc
|
| deleted file mode 100644
|
| index a97f90edfb9b9572a4d27c3d6bd5042006682d93..0000000000000000000000000000000000000000
|
| --- a/base/file_ver.cc
|
| +++ /dev/null
|
| @@ -1,178 +0,0 @@
|
| -// Copyright 2003-2009 Google Inc.
|
| -//
|
| -// Licensed under the Apache License, Version 2.0 (the "License");
|
| -// you may not use this file except in compliance with the License.
|
| -// You may obtain a copy of the License at
|
| -//
|
| -// http://www.apache.org/licenses/LICENSE-2.0
|
| -//
|
| -// Unless required by applicable law or agreed to in writing, software
|
| -// distributed under the License is distributed on an "AS IS" BASIS,
|
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -// See the License for the specific language governing permissions and
|
| -// limitations under the License.
|
| -// ========================================================================
|
| -
|
| -#include "omaha/base/file_ver.h"
|
| -#include "omaha/base/commontypes.h"
|
| -#include "omaha/base/debug.h"
|
| -
|
| -namespace omaha {
|
| -
|
| -// TODO(omaha): Write unittest for this class.
|
| -
|
| -FileVer::FileVer() {
|
| - file_ver_data_ = NULL;
|
| - lang_charset_ = 0;
|
| -}
|
| -
|
| -FileVer::~FileVer() {
|
| - Close();
|
| -}
|
| -
|
| -void FileVer::Close() {
|
| - delete[] file_ver_data_;
|
| - file_ver_data_ = NULL;
|
| - lang_charset_ = 0;
|
| -}
|
| -
|
| -BOOL FileVer::Open(const TCHAR* lpszModuleName) {
|
| - ASSERT1(lpszModuleName);
|
| -
|
| - // Get the version information size and allocate the buffer.
|
| - DWORD handle;
|
| - DWORD ver_info_size =
|
| - ::GetFileVersionInfoSize(const_cast<TCHAR*>(lpszModuleName), &handle);
|
| - if (ver_info_size == 0) {
|
| - return FALSE;
|
| - }
|
| -
|
| - // Get version information.
|
| - // file_ver_data_ is allocated here and deleted in Close() (or implicitly
|
| - // in the destructor).
|
| - file_ver_data_ = new byte[ver_info_size];
|
| - ASSERT1(file_ver_data_);
|
| - if (!file_ver_data_) {
|
| - return FALSE;
|
| - }
|
| -
|
| - if (!::GetFileVersionInfo(const_cast<TCHAR*>(lpszModuleName), handle,
|
| - ver_info_size,
|
| - reinterpret_cast<void**>(file_ver_data_))) {
|
| - Close();
|
| - return FALSE;
|
| - }
|
| -
|
| - // Get the first language and character-set identifier.
|
| - UINT query_size = 0;
|
| - DWORD* translation_table = NULL;
|
| - if (!::VerQueryValue(file_ver_data_,
|
| - _T("\\VarFileInfo\\Translation"),
|
| - reinterpret_cast<void**>(&translation_table),
|
| - &query_size) ||
|
| - query_size == 0) {
|
| - Close();
|
| - return FALSE;
|
| - }
|
| -
|
| - ASSERT1(query_size != 0);
|
| - ASSERT1(translation_table);
|
| -
|
| - // Create charset.
|
| - lang_charset_ = MAKELONG(HIWORD(translation_table[0]),
|
| - LOWORD(translation_table[0]));
|
| - return TRUE;
|
| -}
|
| -
|
| -CString FileVer::QueryValue(const TCHAR* lpszValueName) const {
|
| - ASSERT1(lpszValueName);
|
| -
|
| - if (file_ver_data_ == NULL) {
|
| - return (CString)_T("");
|
| - }
|
| -
|
| - // Query version information value.
|
| - UINT query_size = 0;
|
| - LPVOID query_data = NULL;
|
| - CString str_query_value, str_block_name;
|
| - str_block_name.Format(_T("\\StringFileInfo\\%08lx\\%s"),
|
| - lang_charset_,
|
| - lpszValueName);
|
| -
|
| - if (::VerQueryValue(reinterpret_cast<void**>(file_ver_data_),
|
| - str_block_name.GetBuffer(0),
|
| - &query_data,
|
| - &query_size) &&
|
| - query_size != 0 &&
|
| - query_data) {
|
| - str_query_value = reinterpret_cast<const TCHAR*>(query_data);
|
| - }
|
| -
|
| - str_block_name.ReleaseBuffer();
|
| -
|
| - return str_query_value;
|
| -}
|
| -
|
| -BOOL FileVer::GetFixedInfo(VS_FIXEDFILEINFO& vsffi) const { // NOLINT
|
| - if (file_ver_data_ == NULL) {
|
| - return FALSE;
|
| - }
|
| -
|
| - UINT query_size = 0;
|
| - VS_FIXEDFILEINFO* pVsffi = NULL;
|
| - if (::VerQueryValue(reinterpret_cast<void**>(file_ver_data_),
|
| - _T("\\"),
|
| - reinterpret_cast<void**>(&pVsffi),
|
| - &query_size) &&
|
| - query_size != 0 &&
|
| - pVsffi) {
|
| - vsffi = *pVsffi;
|
| - return TRUE;
|
| - }
|
| -
|
| - return FALSE;
|
| -}
|
| -
|
| -CString FileVer::FormatFixedFileVersion() const {
|
| - CString str_version;
|
| - VS_FIXEDFILEINFO vsffi = {0};
|
| -
|
| - if (GetFixedInfo(vsffi)) {
|
| - str_version.Format(NOTRANSL(_T("%u.%u.%u.%u")),
|
| - HIWORD(vsffi.dwFileVersionMS),
|
| - LOWORD(vsffi.dwFileVersionMS),
|
| - HIWORD(vsffi.dwFileVersionLS),
|
| - LOWORD(vsffi.dwFileVersionLS));
|
| - }
|
| - return str_version;
|
| -}
|
| -
|
| -CString FileVer::FormatFixedProductVersion() const {
|
| - CString str_version;
|
| - VS_FIXEDFILEINFO vsffi = {0};
|
| -
|
| - if (GetFixedInfo(vsffi)) {
|
| - str_version.Format(NOTRANSL(_T("%u.%u.%u.%u")),
|
| - HIWORD(vsffi.dwProductVersionMS),
|
| - LOWORD(vsffi.dwProductVersionMS),
|
| - HIWORD(vsffi.dwProductVersionLS),
|
| - LOWORD(vsffi.dwProductVersionLS));
|
| - }
|
| - return str_version;
|
| -}
|
| -
|
| -ULONGLONG FileVer::GetFileVersionAsULONGLONG() const {
|
| - ULONGLONG version = 0;
|
| - VS_FIXEDFILEINFO vsffi = {0};
|
| -
|
| - if (GetFixedInfo(vsffi)) {
|
| - version = MAKEDLLVERULL(HIWORD(vsffi.dwProductVersionMS),
|
| - LOWORD(vsffi.dwProductVersionMS),
|
| - HIWORD(vsffi.dwProductVersionLS),
|
| - LOWORD(vsffi.dwProductVersionLS));
|
| - }
|
| - return version;
|
| -}
|
| -
|
| -} // namespace omaha
|
| -
|
|
|