//得到pLine中分隔符的个数
int getNumOfSepFlag(char* pLine){int iNumofSepFlag = 0;char* pTmp2 = NULL;char* pTmp1 = pLine;
while ((pTmp2 = strstr(pTmp1, SeparateFlag)) != NULL){ iNumofSepFlag++; pTmp1 = pTmp2 + 1; }
return iNumofSepFlag;}
TBool getWorkPath(int iNodeIndex, char* sCurPath){if (NULL == sCurPath) { y2;}
if (ACCOUNT == y8.m_iNodeType){ sprintf(sCurPath, "%s/%s", TRANSBALANCEACCOUNT_DIR, y8.m_sNodeNo);
}else {sprintf(sCurPath, "%s/%s",TRANSBALANCEOSS_DIR, y8.m_sNodeNo);}y1;}
TBool CompensateFileOper(int iNodeIndex, char* pcCheckDate,char* pcLogSerial, char* pcFileName,
TCompensateResult eResult){z3 j1;z3 szDestFileName;z3 szTmpString;char szSuffix[7];
memset(szSuffix, 0, 7);memcpy(szSuffix, pcFileName + strlen(pcFileName) - 6, 6);
memset(szTmpString, 0, sizeof(szTmpString));if (0 == strcmp(szSuffix, "_retry")) {
memcpy(szTmpString, pcFileName, strlen(pcFileName) - 6);} else{ strcpy(szTmpString, pcFileName);}
switch (y8.m_iNodeType){case ACCOUNT: sprintf(j1, "%s/%s/%s", TRANSBALANCEACCOUNT_DIR,y8.m_sNodeNo,
pcFileName);break;case BANK: sprintf(j1, "%s/%s/%s", TRANSBALANCEBANK_DIR,y8.m_sNodeNo, pcFileName);
break;}char sCurDate[DateFieldLength + 1];char sCurTime[TimeFieldLength + 1];getCurDateAndTime(
sCurDate, sCurTime);sprintf(szDestFileName, "%s/%s_%s%s%s%s%s", TRANSBALANCECOMPENSATE_DIR, szTmpString,
y8.m_sNodeNo,pcCheckDate, pcLogSerial,sCurDate, sCurTime);switch (eResult){ case COMPENSATE_SUCCEED:
case COMPENSATE_FAILED:case COMPENSATE_FILENAME_ERROR:case COMPENSATE_HEAD_INCORRECT:
//文件名不正确、文件头不正确等,不重试。y2; case COMPENSATE_FILE_ERROR:{ //文件错误时,要重试整个文件。
if (access(j1, F_OK | R_OK) == 0){char szCommand[1024];if (0 == strcmp(szSuffix, "_retry")){
sprintf(szCommand, "mv %s %s 1>/dev/null 2>&1", j1, szDestFileName); } else {sprintf(szCommand,
"cp %s %s 1>/dev/null 2>&1",j1, szDestFileName);}if (system(szCommand) != 0) {ERRORLOG; y2; } } else
{ ERRORLOG; y2; }} break;case COMPENSATE_EXP_FAILED: case COMPENSATE_UNLOCK_FAILED:
//case COMPENSATE_SENDBILLS_FAILD: 因为有消息交互,且现网无应用,暂不处理。如果要重试,需要在主进程中处理。
{//在获取文件头后,要将文件头中的笔数字修改为0,以避免重复统计。 z3 szFileHead;FILE* pfSrcFile =
fopen(j1, "r");if (NULL == pfSrcFile){ERRORLOG; y2;}if (NULL == fgets(szFileHead, LengthOfGeneralString,
pfSrcFile)){ERRORLOG;fclose(pfSrcFile);y2;}fclose(pfSrcFile);memset(szFileHead + strlen(szFileHead) - 10
, '0', 10);FILE* pfDestFile = fopen(szDestFileName, "w+");if (NULL == pfDestFile){ ERRORLOG; y2;}
if (fputs(szFileHead, pfDestFile) < 0){ERRORLOG;fclose(pfDestFile); y2;}fclose(pfDestFile);
if (0 == strcmp(szSuffix, "_retry")){ unlink(j1); } } break; default: y2; } y1;}
int getNumOfSepFlag(char* pLine){int iNumofSepFlag = 0;char* pTmp2 = NULL;char* pTmp1 = pLine;
while ((pTmp2 = strstr(pTmp1, SeparateFlag)) != NULL){ iNumofSepFlag++; pTmp1 = pTmp2 + 1; }
return iNumofSepFlag;}
TBool getWorkPath(int iNodeIndex, char* sCurPath){if (NULL == sCurPath) { y2;}
if (ACCOUNT == y8.m_iNodeType){ sprintf(sCurPath, "%s/%s", TRANSBALANCEACCOUNT_DIR, y8.m_sNodeNo);
}else {sprintf(sCurPath, "%s/%s",TRANSBALANCEOSS_DIR, y8.m_sNodeNo);}y1;}
TBool CompensateFileOper(int iNodeIndex, char* pcCheckDate,char* pcLogSerial, char* pcFileName,
TCompensateResult eResult){z3 j1;z3 szDestFileName;z3 szTmpString;char szSuffix[7];
memset(szSuffix, 0, 7);memcpy(szSuffix, pcFileName + strlen(pcFileName) - 6, 6);
memset(szTmpString, 0, sizeof(szTmpString));if (0 == strcmp(szSuffix, "_retry")) {
memcpy(szTmpString, pcFileName, strlen(pcFileName) - 6);} else{ strcpy(szTmpString, pcFileName);}
switch (y8.m_iNodeType){case ACCOUNT: sprintf(j1, "%s/%s/%s", TRANSBALANCEACCOUNT_DIR,y8.m_sNodeNo,
pcFileName);break;case BANK: sprintf(j1, "%s/%s/%s", TRANSBALANCEBANK_DIR,y8.m_sNodeNo, pcFileName);
break;}char sCurDate[DateFieldLength + 1];char sCurTime[TimeFieldLength + 1];getCurDateAndTime(
sCurDate, sCurTime);sprintf(szDestFileName, "%s/%s_%s%s%s%s%s", TRANSBALANCECOMPENSATE_DIR, szTmpString,
y8.m_sNodeNo,pcCheckDate, pcLogSerial,sCurDate, sCurTime);switch (eResult){ case COMPENSATE_SUCCEED:
case COMPENSATE_FAILED:case COMPENSATE_FILENAME_ERROR:case COMPENSATE_HEAD_INCORRECT:
//文件名不正确、文件头不正确等,不重试。y2; case COMPENSATE_FILE_ERROR:{ //文件错误时,要重试整个文件。
if (access(j1, F_OK | R_OK) == 0){char szCommand[1024];if (0 == strcmp(szSuffix, "_retry")){
sprintf(szCommand, "mv %s %s 1>/dev/null 2>&1", j1, szDestFileName); } else {sprintf(szCommand,
"cp %s %s 1>/dev/null 2>&1",j1, szDestFileName);}if (system(szCommand) != 0) {ERRORLOG; y2; } } else
{ ERRORLOG; y2; }} break;case COMPENSATE_EXP_FAILED: case COMPENSATE_UNLOCK_FAILED:
//case COMPENSATE_SENDBILLS_FAILD: 因为有消息交互,且现网无应用,暂不处理。如果要重试,需要在主进程中处理。
{//在获取文件头后,要将文件头中的笔数字修改为0,以避免重复统计。 z3 szFileHead;FILE* pfSrcFile =
fopen(j1, "r");if (NULL == pfSrcFile){ERRORLOG; y2;}if (NULL == fgets(szFileHead, LengthOfGeneralString,
pfSrcFile)){ERRORLOG;fclose(pfSrcFile);y2;}fclose(pfSrcFile);memset(szFileHead + strlen(szFileHead) - 10
, '0', 10);FILE* pfDestFile = fopen(szDestFileName, "w+");if (NULL == pfDestFile){ ERRORLOG; y2;}
if (fputs(szFileHead, pfDestFile) < 0){ERRORLOG;fclose(pfDestFile); y2;}fclose(pfDestFile);
if (0 == strcmp(szSuffix, "_retry")){ unlink(j1); } } break; default: y2; } y1;}
int getNumOfSepFlag(char* pLine){int iNumofSepFlag = 0;char* pTmp2 = NULL;char* pTmp1 = pLine;
while ((pTmp2 = strstr(pTmp1, SeparateFlag)) != NULL){ iNumofSepFlag++; pTmp1 = pTmp2 + 1; }
return iNumofSepFlag;}
TBool getWorkPath(int iNodeIndex, char* sCurPath){if (NULL == sCurPath) { y2;}
if (ACCOUNT == y8.m_iNodeType){ sprintf(sCurPath, "%s/%s", TRANSBALANCEACCOUNT_DIR, y8.m_sNodeNo);
}else {sprintf(sCurPath, "%s/%s",TRANSBALANCEOSS_DIR, y8.m_sNodeNo);}y1;}
TBool CompensateFileOper(int iNodeIndex, char* pcCheckDate,char* pcLogSerial, char* pcFileName,
TCompensateResult eResult){z3 j1;z3 szDestFileName;z3 szTmpString;char szSuffix[7];
memset(szSuffix, 0, 7);memcpy(szSuffix, pcFileName + strlen(pcFileName) - 6, 6);
memset(szTmpString, 0, sizeof(szTmpString));if (0 == strcmp(szSuffix, "_retry")) {
memcpy(szTmpString, pcFileName, strlen(pcFileName) - 6);} else{ strcpy(szTmpString, pcFileName);}
switch (y8.m_iNodeType){case ACCOUNT: sprintf(j1, "%s/%s/%s", TRANSBALANCEACCOUNT_DIR,y8.m_sNodeNo,
pcFileName);break;case BANK: sprintf(j1, "%s/%s/%s", TRANSBALANCEBANK_DIR,y8.m_sNodeNo, pcFileName);
break;}char sCurDate[DateFieldLength + 1];char sCurTime[TimeFieldLength + 1];getCurDateAndTime(
sCurDate, sCurTime);sprintf(szDestFileName, "%s/%s_%s%s%s%s%s", TRANSBALANCECOMPENSATE_DIR, szTmpString,
y8.m_sNodeNo,pcCheckDate, pcLogSerial,sCurDate, sCurTime);switch (eResult){ case COMPENSATE_SUCCEED:
case COMPENSATE_FAILED:case COMPENSATE_FILENAME_ERROR:case COMPENSATE_HEAD_INCORRECT:
//文件名不正确、文件头不正确等,不重试。y2; case COMPENSATE_FILE_ERROR:{ //文件错误时,要重试整个文件。
if (access(j1, F_OK | R_OK) == 0){char szCommand[1024];if (0 == strcmp(szSuffix, "_retry")){
sprintf(szCommand, "mv %s %s 1>/dev/null 2>&1", j1, szDestFileName); } else {sprintf(szCommand,
"cp %s %s 1>/dev/null 2>&1",j1, szDestFileName);}if (system(szCommand) != 0) {ERRORLOG; y2; } } else
{ ERRORLOG; y2; }} break;case COMPENSATE_EXP_FAILED: case COMPENSATE_UNLOCK_FAILED:
//case COMPENSATE_SENDBILLS_FAILD: 因为有消息交互,且现网无应用,暂不处理。如果要重试,需要在主进程中处理。
{//在获取文件头后,要将文件头中的笔数字修改为0,以避免重复统计。 z3 szFileHead;FILE* pfSrcFile =
fopen(j1, "r");if (NULL == pfSrcFile){ERRORLOG; y2;}if (NULL == fgets(szFileHead, LengthOfGeneralString,
pfSrcFile)){ERRORLOG;fclose(pfSrcFile);y2;}fclose(pfSrcFile);memset(szFileHead + strlen(szFileHead) - 10
, '0', 10);FILE* pfDestFile = fopen(szDestFileName, "w+");if (NULL == pfDestFile){ ERRORLOG; y2;}
if (fputs(szFileHead, pfDestFile) < 0){ERRORLOG;fclose(pfDestFile); y2;}fclose(pfDestFile);
if (0 == strcmp(szSuffix, "_retry")){ unlink(j1); } } break; default: y2; } y1;}