Index: wizcfg/cvsdiag.cpp =================================================================== RCS file: /scotty/wizard/wizcfg/cvsdiag.cpp,v retrieving revision 1.1.2.9 diff -c -r1.1.2.9 cvsdiag.cpp *** wizcfg/cvsdiag.cpp 6 Aug 2024 11:11:16 -0000 1.1.2.9 --- wizcfg/cvsdiag.cpp 7 Aug 2024 06:59:39 -0000 *************** *** 3336,3353 **** #define get_licreg_int(key) get_reg_subkey_int(key,_T("Software\\CVS\\License")) #define get_licreg_intx(key,x) get_reg_subkey_int(key,_T("Software\\CVS\\License"),x) int get_reg_subkey_int(LPCTSTR key, LPCTSTR subkey, int defaultval=-1) { HKEY hKey; DWORD dwVal=defaultval; DWORD dwType,dwLen; if(RegOpenKey(HKEY_LOCAL_MACHINE,subkey,&hKey)) return defaultval; dwLen=sizeof(dwVal); ! if(RegQueryValueEx(hKey,key,NULL,&dwType,(LPBYTE)&dwVal,&dwLen)) return defaultval; return dwVal; } --- 3336,3395 ---- #define get_licreg_int(key) get_reg_subkey_int(key,_T("Software\\CVS\\License")) #define get_licreg_intx(key,x) get_reg_subkey_int(key,_T("Software\\CVS\\License"),x) + // needs a fallback if not DWAD try loading string and see if the string is a number? int get_reg_subkey_int(LPCTSTR key, LPCTSTR subkey, int defaultval=-1) { HKEY hKey; DWORD dwVal=defaultval; DWORD dwType,dwLen; + #ifdef LSTATUS + LSTATUS queryResult; + #else + DWORD queryResult; + #endif if(RegOpenKey(HKEY_LOCAL_MACHINE,subkey,&hKey)) return defaultval; dwLen=sizeof(dwVal); ! if (dwLen<sizeof(DWORD)) ! dwLen=sizeof(DWORD); ! queryResult=RegQueryValueEx(hKey,key,NULL,&dwType,(LPBYTE)&dwVal,&dwLen); ! if((queryResult!=ERROR_SUCCESS) || ((queryResult==ERROR_SUCCESS) && ! ((dwType==REG_EXPAND_SZ) || (dwType==REG_MULTI_SZ) || (dwType==REG_SZ))) ) ! { ! if (queryResult==ERROR_FILE_NOT_FOUND) ! return defaultval; ! ! if ((dwType==REG_EXPAND_SZ) || (dwType==REG_MULTI_SZ) || (dwType==REG_SZ)) ! { ! // typically what happens is the buffer is too small for the data ! TCHAR buf[4096]; ! #ifdef LSTATUS ! LSTATUS res; ! #else ! DWORD res; ! #endif ! dwLen=sizeof(buf); ! res=RegQueryValueEx(hKey,key,NULL,&dwType,(LPBYTE)buf,&dwLen); ! if (res == ERROR_SUCCESS) ! { ! for (unsigned short kk=0; kk<dwLen; ++kk) ! { ! if (!isdigit(buf[kk])) ! return defaultval; ! } ! // so we have a string, that is a number ! #ifdef _UNICODE ! dwVal=_wtoi(buf); ! #else ! dwVal=atoi(buf); ! #endif ! } ! } ! // OK I don't know what else to do here... return defaultval; + } return dwVal; } *************** *** 3951,3957 **** #else _ftprintf(output,_T("Platform does not have setlocale - locale override ignored\n")); #endif ! //_ftprintf(output,_T("Build platform is %s-%s-%s\n"), CVSNT_TARGET_VENDOR, CVSNT_TARGET_OS, CVSNT_TARGET_CPU); //CoInitialize(NULL); HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); if( FAILED(hr) ) --- 3993,3999 ---- #else _ftprintf(output,_T("Platform does not have setlocale - locale override ignored\n")); #endif ! // _ftprintf(output,_T("Build platform is %s-%s-%s\n"), CVSNT_TARGET_VENDOR, CVSNT_TARGET_OS, CVSNT_TARGET_CPU); //CoInitialize(NULL); HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); if( FAILED(hr) ) Index: wizcfg/wizcfg.cpp =================================================================== RCS file: /scotty/wizard/wizcfg/wizcfg.cpp,v retrieving revision 1.1.2.12.2.94 diff -c -r1.1.2.12.2.94 wizcfg.cpp *** wizcfg/wizcfg.cpp 7 Aug 2024 04:07:39 -0000 1.1.2.12.2.94 --- wizcfg/wizcfg.cpp 7 Aug 2024 11:10:19 -0000 *************** *** 1746,1753 **** --- 1746,1810 ---- cvs::sprintf(logmsg,255,"CVS Suite Server Configurator Wizard - SLN is read-only \"%s\".",szPathToFileReal); CServerIo::log(CServerIo::logError,logmsg.c_str()); }*/ + + + HANDLE hFile = CreateFileW (szPathToFile, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); + if (hFile == INVALID_HANDLE_VALUE) + { + szMessage.FormatMessage(_T("CVS Suite Server Configurator Wizard - cannot open file \"%1!s!\"."), szPathToFile); + CT2A strMessage(szMessage); + CServerIo::log(CServerIo::logError,strMessage.m_psz); + AfxMessageBox(szMessage,MB_ICONSTOP); + return; + } + + DWORD dwBufferTotal = GetFileSize (hFile, NULL); + + TCHAR ReadBuffer[8194]; + + BOOL bRead; + DWORD sum = 0; + DWORD dwBytesRead = 0; + do + { + if(!(bRead = ReadFile (hFile, ReadBuffer, sizeof(ReadBuffer), &dwBytesRead, NULL))) + break; + sum += dwBytesRead; + } while (dwBytesRead == sizeof(ReadBuffer)); + + CloseHandle (hFile); + szPathToNewFile = szPathToFile; szPathToNewFile.Replace(szOldSLNSuffix,szNewSLNSuffix); + CString slnContents = ReadBuffer; + slnContents.Replace(szOldVCPROJSuffix,szNewVCPROJSuffix); + + + DWORD dwBytesWritten=0; + hFile = CreateFileW (szPathToNewFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile == INVALID_HANDLE_VALUE) + { + szMessage.FormatMessage(_T("CVS Suite Server Configurator Wizard - cannot create file \"%1!s!\"."), szPathToNewFile); + CT2A strMessage(szMessage); + CServerIo::log(CServerIo::logError,strMessage.m_psz); + AfxMessageBox(szMessage,MB_ICONSTOP); + return; + } + + BOOL bWrite = WriteFile (hFile, slnContents, slnContents.GetLength(), &dwBytesWritten, NULL); + if (bWrite != TRUE) + { + szMessage.FormatMessage(_T("CVS Suite Server Configurator Wizard - cannot write file \"%1!s!\"."), szPathToNewFile); + CT2A strMessage(szMessage); + CServerIo::log(CServerIo::logError,strMessage.m_psz); + AfxMessageBox(szMessage,MB_ICONSTOP); + return; + } + + CloseHandle (hFile); + + + szMessage.FormatMessage(_T("CVS Suite Server Configurator Wizard - Copy Visual Studio Solution - Completed copy of \"%2!s!\" to \"%3!s!\" . CVSNT %1!s!."), CVSNT_PRODUCTVERSION_TSTRING, szPathToFile, szPathToNewFile); CT2A strMessage(szMessage);