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);