Browse Source

Z991431-1598 #comment fix: kill 解决文件结束符为\n的转换

陈良瑜80374463 4 years ago
parent
commit
e128806c2a
1 changed files with 56 additions and 13 deletions
  1. 56 13
      Module/mod_RomoteController/RemoteControllerCnn.cpp

+ 56 - 13
Module/mod_RomoteController/RemoteControllerCnn.cpp

@@ -769,19 +769,34 @@ ErrorCodeEnum CRemoteControllerCnn::HandleViewEntityConfigReq(const CSmartPointe
 	}
 
 	auto cfgSize = Base_filesize(strCfgPath.GetData());
-	int nRetLen = sizeof(RvcViewConfigRet) + cfgSize;
-	char* pBuf = new char[nRetLen];
-	memset(pBuf, 0, nRetLen);
-	RvcViewConfigRet* pRet = (RvcViewConfigRet*)pBuf;
+	
+	char* tmpBuf = new char[cfgSize];
+	memset(tmpBuf, 0, cfgSize);
+	
 
-	auto readRet = Base_readFile(strCfgPath.GetData(), 0, pRet->ConfigData, cfgSize);
+	auto readRet = Base_readFile(strCfgPath.GetData(), 0, tmpBuf, cfgSize);
 	if(!readRet.first)
 	{
 		pReplyPkg->SetErrMsg(0, 0, SP::Utility::UTF8ToGBK("open entity config file fail").c_str());
 		LogError(Severity_Low, Error_NotExist, 0, CSimpleStringA::Format("open config [%s] fail", (const char*)strCfgPath));
 	}
 	else
-		pReplyPkg->AddStruct("ViewCfgA", false, false, (BYTE*)pBuf, nRetLen);
+	{
+		int nRetLen = sizeof(RvcViewConfigRet) + cfgSize * 2;	//需自行转换\n和\r\n
+		char* pBuf = new char[nRetLen];
+		memset(pBuf, 0, nRetLen);
+		RvcViewConfigRet* pRet = (RvcViewConfigRet*)pBuf;
+		int dstPos = 0;
+
+		for (auto i = 0; i < cfgSize; i++)
+		{
+			if ((i == 0 && tmpBuf[i] == '\n') || (tmpBuf[i] == '\n' && tmpBuf[i - 1] != '\r'))
+				pRet->ConfigData[dstPos++] = '\r';
+			pRet->ConfigData[dstPos++] = tmpBuf[i];
+		}
+
+		pReplyPkg->AddStruct("ViewCfgA", false, false, (BYTE*)pBuf, dstPos + sizeof(RvcViewConfigRet));
+	}
 
 	
 	SendPackage(pReplyPkg);
@@ -1956,19 +1971,35 @@ ErrorCodeEnum CRemoteControllerCnn::HandleViewRunCfgReq(const CSmartPointer<IPac
 	}
 
 	auto cfgSize = Base_filesize(strCfgPath.GetData());
-	int nRetLen = sizeof(RvcViewRunCfgRet) + cfgSize;
-	char* pBuf = new char[nRetLen];
-	memset(pBuf, 0, nRetLen);
-	RvcViewRunCfgRet* pRet = (RvcViewRunCfgRet*)pBuf;
 
-	auto readRet = Base_readFile(strCfgPath.GetData(), 0, pRet->ConfigData, cfgSize);
+	char* tmpBuf = new char[cfgSize];
+	memset(tmpBuf, 0, cfgSize);
+
+
+	auto readRet = Base_readFile(strCfgPath.GetData(), 0, tmpBuf, cfgSize);
 	if (!readRet.first)
 	{
 		pReplyPkg->SetErrMsg(0, 0, SP::Utility::UTF8ToGBK("open runcfg fail").c_str());
 		Dbg("open file [%s] fail", (const char*)strCfgPath);
 	}
 	else
-		pReplyPkg->AddStruct("VRunCfgA", false, false, (BYTE*)pBuf, nRetLen);
+	{
+		int nRetLen = sizeof(RvcViewRunCfgRet) + cfgSize * 2;
+		char* pBuf = new char[nRetLen];
+		memset(pBuf, 0, nRetLen);
+		RvcViewRunCfgRet* pRet = (RvcViewRunCfgRet*)pBuf;
+
+		int dstPos = 0;
+		for (auto i = 0; i < cfgSize; i++)
+		{
+			if ((i == 0 && tmpBuf[i] == '\n') || (tmpBuf[i] == '\n' && tmpBuf[i - 1] != '\r'))
+				pRet->ConfigData[dstPos++] = '\r';
+			pRet->ConfigData[dstPos++] = tmpBuf[i];
+		}
+
+		pReplyPkg->AddStruct("VRunCfgA", false, false, (BYTE*)pBuf, dstPos + sizeof(RvcViewConfigRet));
+	}
+		
 
 	SendPackage(pReplyPkg);
 	return Error_Succeed;
@@ -2045,8 +2076,20 @@ ErrorCodeEnum CRemoteControllerCnn::HandleViewInstallLogReq(const CSmartPointer<
 	} while (nReadLen >0 && nHasRead < nFileSize);
 	fclose(file);
 
-	pReplyPkg->AddStruct("VPkgLogA", false, false, (BYTE*)pBuf, nRetLen);
+	std::string gbkLogStr = SP::Utility::UTF8ToGBK(pLogData);
+
+	int gbkLen = sizeof(RvcViewInstallLogRet) + gbkLogStr.length();
+	char* gbkBuf = new char[gbkLen];
+	memset(gbkBuf, 0, gbkLen);
+
+	RvcViewInstallLogRet* gbkRet = (RvcViewInstallLogRet*)gbkBuf;
+	gbkRet->TaskID = req.TaskID;
+	memcpy(gbkRet->LogData, gbkLogStr.c_str(), gbkLogStr.length());
+
+
+	pReplyPkg->AddStruct("VPkgLogA", false, false, (BYTE*)gbkRet, gbkLen);
 	delete[] pBuf;
+	delete[] gbkBuf;
 
 	SendPackage(pReplyPkg);
 	return Error_Succeed;