/*++ Copyright (c) 1997 Microsoft Corporation Module Name: utils.c Abstract: Cross Language Migration Tools String-Search/Replacemet Util Author: Xiaofeng Zang (xiaoz) 17-Sep-2001 Created Revision History: --*/ #include "StdAfx.h" #include "clmt.h" #ifdef NEVER LONG UpdateMszTableInReg(HKEY,LPTSTR,LPTSTR*,LPTSTR); LONG UpdateDWORDArrayInReg(HKEY,LPTSTR,PDWORD*,DWORD); #endif BOOL AddItemToStrRepaceTable( LPTSTR szUserName, LPTSTR szOriginalStr, LPTSTR szReplacingStr, LPTSTR szFullPathStr, DWORD nId, PREG_STRING_REPLACE pTable) { if (!szUserName || !szOriginalStr || !szReplacingStr || !szFullPathStr) { return FALSE; } if (!szUserName[0] || !szOriginalStr[0] || !szReplacingStr[0] || !szFullPathStr[0]) { return FALSE; } if (!MyStrCmpI(szOriginalStr,szReplacingStr)) { return TRUE; } if (!AppendSzToMultiSz(szUserName, &(pTable->szUserNameLst), &(pTable->cchUserName))) { return FALSE; } if (!AppendSzToMultiSz(szOriginalStr, &(pTable->lpSearchString), &(pTable->cchSearchString))) { return FALSE; } if (!AppendSzToMultiSz(szReplacingStr, &(pTable->lpReplaceString), &(pTable->cchReplaceString))) { return FALSE; } if (!AppendSzToMultiSz(szFullPathStr, &(pTable->lpFullStringList), &(pTable->cchFullStringList))) { } if ((pTable->nNumOfElem+1) > pTable->cchAttribList) { LPDWORD lpTmp = malloc( (pTable->cchAttribList + DWORD_BUF_DELTA) * sizeof(DWORD) ); if (!lpTmp) { return FALSE; } memcpy((PBYTE)lpTmp,(PBYTE)pTable->lpAttrib,pTable->cchAttribList * sizeof(DWORD)); free(pTable->lpAttrib); pTable->lpAttrib = lpTmp; pTable->cchAttribList += DWORD_BUF_DELTA; } pTable->lpAttrib[pTable->nNumOfElem] = nId; pTable->nNumOfElem++; return TRUE; } BOOL InitStrRepaceTable() { BOOL bRet = TRUE; int i, n; //Initialize the global table used to do string replacement g_StrReplaceTable.nNumOfElem = 0; g_StrReplaceTable.szUserNameLst = malloc(MULTI_SZ_BUF_DELTA * sizeof(TCHAR)); if (!g_StrReplaceTable.szUserNameLst ) { bRet = FALSE; goto Cleanup; } memset(g_StrReplaceTable.szUserNameLst,0,MULTI_SZ_BUF_DELTA * sizeof(TCHAR)); g_StrReplaceTable.cchUserName = MULTI_SZ_BUF_DELTA; g_StrReplaceTable.lpSearchString = malloc(MULTI_SZ_BUF_DELTA * sizeof(TCHAR)); if (!g_StrReplaceTable.lpSearchString ) { bRet = FALSE; goto Cleanup; } memset(g_StrReplaceTable.lpSearchString,0,MULTI_SZ_BUF_DELTA * sizeof(TCHAR)); g_StrReplaceTable.cchSearchString = MULTI_SZ_BUF_DELTA; g_StrReplaceTable.lpReplaceString = malloc(MULTI_SZ_BUF_DELTA * sizeof(TCHAR)); if (!g_StrReplaceTable.lpReplaceString ) { bRet = FALSE; goto Cleanup; } memset(g_StrReplaceTable.lpReplaceString,0,MULTI_SZ_BUF_DELTA * sizeof(TCHAR)); g_StrReplaceTable.cchReplaceString = MULTI_SZ_BUF_DELTA; g_StrReplaceTable.lpFullStringList = malloc(MULTI_SZ_BUF_DELTA * sizeof(TCHAR)); if (!g_StrReplaceTable.lpFullStringList ) { bRet = FALSE; goto Cleanup; } g_StrReplaceTable.cchFullStringList = MULTI_SZ_BUF_DELTA; memset(g_StrReplaceTable.lpFullStringList,0,MULTI_SZ_BUF_DELTA * sizeof(TCHAR)); g_StrReplaceTable.lpAttrib = malloc(DWORD_BUF_DELTA * sizeof(DWORD)) ; if (!g_StrReplaceTable.lpAttrib) { bRet = FALSE; goto Cleanup; } memset(g_StrReplaceTable.lpAttrib,0,DWORD_BUF_DELTA * sizeof(DWORD)); g_StrReplaceTable.cchAttribList = DWORD_BUF_DELTA; Cleanup: if (!bRet) { if (g_StrReplaceTable.lpSearchString) { free(g_StrReplaceTable.lpSearchString); g_StrReplaceTable.lpSearchString = NULL; } if (g_StrReplaceTable.lpReplaceString) { free(g_StrReplaceTable.lpReplaceString); g_StrReplaceTable.lpReplaceString = NULL; } if (g_StrReplaceTable.lpAttrib) { free(g_StrReplaceTable.lpAttrib); g_StrReplaceTable.lpAttrib = NULL; } if (g_StrReplaceTable.lpFullStringList) { free(g_StrReplaceTable.lpFullStringList); g_StrReplaceTable.lpFullStringList = NULL; } } return bRet; } void DeInitStrRepaceTable() { if (g_StrReplaceTable.lpSearchString) { free(g_StrReplaceTable.lpSearchString); g_StrReplaceTable.lpSearchString = NULL; } if (g_StrReplaceTable.lpReplaceString) { free(g_StrReplaceTable.lpReplaceString); g_StrReplaceTable.lpReplaceString = NULL; } if (g_StrReplaceTable.lpAttrib) { free(g_StrReplaceTable.lpAttrib); g_StrReplaceTable.lpAttrib = NULL; } if (g_StrReplaceTable.lpFullStringList) { free(g_StrReplaceTable.lpFullStringList); g_StrReplaceTable.lpFullStringList = NULL; } if (g_StrReplaceTable.szUserNameLst) { free(g_StrReplaceTable.szUserNameLst); g_StrReplaceTable.szUserNameLst = NULL; } }