134 lines
2.8 KiB
C++
134 lines
2.8 KiB
C++
//+----------------------------------------------------------------------------
|
|
//
|
|
// File: cm_misc.cpp
|
|
//
|
|
// Module: CMPBK32.DLL
|
|
//
|
|
// Synopsis: Miscellaneous functions.
|
|
//
|
|
// Copyright (c) 1998 Microsoft Corporation
|
|
//
|
|
// Author: quintinb created header 08/17/99
|
|
//
|
|
//+----------------------------------------------------------------------------
|
|
|
|
// ############################################################################
|
|
// INCLUDES
|
|
|
|
#include "cmmaster.h"
|
|
|
|
HINSTANCE g_hInst;
|
|
|
|
#if 0
|
|
/*
|
|
int MyStrICmpWithRes(HINSTANCE hInst, LPCTSTR psz1, UINT n2) {
|
|
LPTSTR psz2;
|
|
int iRes;
|
|
|
|
if (!psz1) {
|
|
return (-1);
|
|
}
|
|
if (!2) {
|
|
return (1);
|
|
}
|
|
psz2 = CmLoadString(hInst,n2);
|
|
iRes = lstrcmpi(psz1,psz2);
|
|
CmFree(psz2);
|
|
return (iRes);
|
|
}
|
|
*/
|
|
#endif
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function: GetBaseDirFromCms
|
|
//
|
|
// Synopsis: Strips the filename part and sub-directiory from the specified
|
|
// src path which is expected to be a fully qualified path to a .CMS
|
|
//
|
|
// Arguments: LPCSTR pszSrc - The src path and filename
|
|
//
|
|
// Returns: LPTSTR - Ptr to allocated Base Directory name including trailing "\"
|
|
//
|
|
// History: nickball Created 3/8/98
|
|
//
|
|
//+----------------------------------------------------------------------------
|
|
LPTSTR GetBaseDirFromCms(LPCSTR pszSrc)
|
|
{
|
|
LPTSTR pszBase = NULL;
|
|
|
|
MYDBGASSERT(pszSrc);
|
|
|
|
if (NULL == pszSrc || 0 == pszSrc[0])
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
//
|
|
// The source filename should exist
|
|
//
|
|
|
|
HANDLE hFile = CreateFile(pszSrc, 0, FILE_SHARE_READ | FILE_SHARE_WRITE,
|
|
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
|
|
|
|
if (INVALID_HANDLE_VALUE == hFile)
|
|
{
|
|
MYDBGASSERT(FALSE);
|
|
return NULL;
|
|
}
|
|
|
|
CloseHandle(hFile);
|
|
|
|
//
|
|
// File name is good allocate a buffer to work with
|
|
//
|
|
LPTSTR pszSlash = NULL;
|
|
pszBase = (LPTSTR) CmMalloc((_tcslen(pszSrc) +1)*sizeof(TCHAR));
|
|
|
|
if (pszBase)
|
|
{
|
|
_tcscpy(pszBase, pszSrc);
|
|
|
|
pszSlash = CmStrrchr(pszBase,TEXT('\\'));
|
|
|
|
if (!pszSlash)
|
|
{
|
|
MYDBGASSERT(FALSE); // should be a full path
|
|
CmFree(pszBase);
|
|
return NULL;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
CMASSERTMSG(FALSE, TEXT("GetBaseDirFromCms -- Unable to allocate pszBase."));
|
|
return NULL;
|
|
}
|
|
|
|
//
|
|
// Null terminate at slash and find next
|
|
//
|
|
|
|
*pszSlash = TEXT('\0');
|
|
pszSlash = CmStrrchr(pszBase,TEXT('\\'));
|
|
|
|
if (!pszSlash)
|
|
{
|
|
MYDBGASSERT(FALSE); // should be a full path
|
|
CmFree(pszBase);
|
|
return NULL;
|
|
}
|
|
|
|
//
|
|
// Null terminate at slash again and we're done
|
|
//
|
|
|
|
// pszSlash = _tcsinc(pszSlash);
|
|
*pszSlash = TEXT('\0');
|
|
|
|
return pszBase;
|
|
}
|
|
|
|
|
|
|