home *** CD-ROM | disk | FTP | other *** search
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
- #include "stdafx.h"
-
- #ifdef AFXCTL_FACT_SEG
- #pragma code_seg(AFXCTL_FACT_SEG)
- #endif
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- #define new DEBUG_NEW
-
- /////////////////////////////////////////////////////////////////////////////
- // AfxVerifyLicFile - Checks that a license file exists and contains a
- // specific byte pattern.
-
- BOOL AFXAPI AfxVerifyLicFile(HINSTANCE hInstance, LPCTSTR pszLicFileName,
- LPCOLESTR pszLicFileContents, UINT cch)
- {
- // Assume the worst...
- BOOL bVerified = FALSE;
-
- // Look for license file in same directory as this DLL.
- TCHAR szPathName[_MAX_PATH];
- ::GetModuleFileName(hInstance, szPathName, _MAX_PATH);
- LPTSTR pszFileName = _tcsrchr(szPathName, '\\') + 1;
- lstrcpy(pszFileName, pszLicFileName);
-
- #ifndef OLE2ANSI
- LPSTR pszKey = NULL;
- #endif
- LPBYTE pbContent = NULL;
-
- TRY
- {
- // Open file, read content and compare.
-
- CFile file(szPathName, CFile::modeRead);
-
- if (cch == -1)
- #ifdef OLE2ANSI
- cch = lstrlen(pszLicFileContents);
- #else
- cch = wcslen(pszLicFileContents);
-
- pszKey = (char*)_alloca(cch*2 + 1);
- cch = _wcstombsz(pszKey, pszLicFileContents, cch*2 + 1);
- #endif
-
- if (cch != 0)
- {
- --cch; // license file won't contain the terminating null char
- pbContent = (BYTE*)_alloca(cch);
- file.Read(pbContent, cch);
-
- #ifndef OLE2ANSI
- if (memcmp(pszKey, pbContent, (size_t)cch) == 0)
- #else
- if (memcmp(pszLicFileContents, pbContent, (size_t)cch) == 0)
- #endif
- bVerified = TRUE;
- }
- }
- END_TRY
-
- return bVerified;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // Force any extra compiler-generated code into AFX_INIT_SEG
-
- #ifdef AFX_INIT_SEG
- #pragma code_seg(AFX_INIT_SEG)
- #endif
-