⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpack.c

📁 这是我们的一个在linux上运行的软件了个源码
💻 C
📖 第 1 页 / 共 4 页
字号:
	Reverse((unsigned char *)&pPack->head.hook.queuetype,sizeof(pPack->head.hook.queuetype));

	if (pPack->head.recCount>1 && packArray == NULL)
	{
		strcpy(eMsg,"多纪录解包要求packArray != NULL");
		return FALSE;
	}

	*recCount = pPack->head.recCount;

	p+=sizeof(ST_PACKHEAD);
	ph = &pPack->head;
	memset(&pPack->pack,0,sizeof(pPack->pack));

	pp = &pPack->pack;
	for(cnt = 0; cnt < *recCount ;cnt ++)
	{
		for(i=0;i<PARMBITS/BITSPERBYTE;i++)
		{
			b0 = ph->ParmBits[i];
			for(j=0;j<8;j++)
			{
				if (b0 & _bits[j])
					result = (i<<8)+_bits[j];
				else
					continue;
				_DecodeSingleItem(result,pp,(char **)&p);
			}
		}
		if (packArray == NULL)
			break;
		pp = &packArray[cnt];
	}
	return TRUE;
}

void _EncodeSingleItem(int idx,ST_PACK *pPack,char **pDst,int *len)
{
	unsigned char *p;
	int l;
	short vsl,vosl;

	l = *len;
	p = (unsigned char *)*pDst;

#define CP(a)	memcpy(p,pPack->a,sizeof(pPack->a)); \
				p+=sizeof(pPack->a); \
				l+=sizeof(pPack->a);
#define DP(a)	memcpy(p,&pPack->a,sizeof(pPack->a));\
				Reverse(p,sizeof(pPack->a));\
				p+=sizeof(pPack->a); \
				l+=sizeof(pPack->a);
#define VP(a)	vsl=strlen(pPack->a)+1;\
			    vosl=vsl;\
				Reverse((unsigned char *)&vsl,sizeof(short));\
				memcpy(p,&vsl,2);\
	            p=p+2;\
				memcpy(p,pPack->a,vosl);\
				p+=vosl;\
			    l+=2+vosl;
	switch(idx)
	{
	case F_SCUST_NO:
		CP(scust_no);
		break;
	case F_SCUST_NO2:
		CP(scust_no2);
		break;
	case F_SHOLDER_AC_NO:
		CP(sholder_ac_no);
		break;
	case F_SHOLDER_AC_NO2:
		CP(sholder_ac_no2);
		break;
	case F_SHOLDER_TYPE:
		CP(sholder_type);
		break;
	case F_SHOLDER_TYPE2:
		CP(sholder_type2);
		break;
	case F_SNAME:
		CP(sname);
		break;
	case F_SNAME2:
		CP(sname2);
		break;

	case F_SALL_NAME:
		CP(sall_name);
		break;
	case F_SMARKET_CODE:
		CP(smarket_code);
		break;
	case F_SMARKET_CODE2:
		CP(smarket_code2);
		break;
	case F_SDATE0:
		CP(sdate0);
		break;
	case F_SDATE1:
		CP(sdate1);
		break;
	case F_SDATE2:
		CP(sdate2);
		break;
	case F_SDATE3:
		CP(sdate3);
		break;
	case F_STIME0:
		CP(stime0);
		break;

	case F_STIME1:
		CP(stime1);
		break;
	case F_STIME2:
		CP(stime2);
		break;
	case F_STIME3:
		CP(stime3);
		break;
	case F_LVOL0:
		DP(lvol0);
		break;
	case F_LVOL1:
		DP(lvol1);
		break;
	case F_LVOL2:
		DP(lvol2);
		break;
	case F_LVOL3:
		DP(lvol3);
		break;
	case F_LVOL4:
		DP(lvol4);
		break;

	case F_LVOL5:
		DP(lvol5);
		break;
	case F_LVOL6:
		DP(lvol6);
		break;
	case F_LVOL7:
		DP(lvol7);
		break;
	case F_LVOL8:
		DP(lvol8);
		break;
	case F_LVOL9:
		DP(lvol9);
		break;
	case F_LVOL10:
		DP(lvol10);
		break;
	case F_LVOL11:
		DP(lvol11);
		break;
	case F_LVOL12:
		DP(lvol12);
		break;

	case F_DAMT0:
		DP(damt0);
		break;
	case F_DAMT1:
		DP(damt1);
		break;
	case F_DAMT2:
		DP(damt2);
		break;
	case F_DAMT3:
		DP(damt3);
		break;
	case F_DAMT4:
		DP(damt4);
		break;
	case F_DAMT5:
		DP(damt5);
		break;
	case F_DAMT6:
		DP(damt6);
		break;
	case F_DAMT7:
		DP(damt7);
		break;

	case F_DAMT8:
		DP(damt8);
		break;
	case F_DAMT9:
		DP(damt9);
		break;
	case F_DAMT10:
		DP(damt10);
		break;
	case F_DAMT11:
		DP(damt11);
		break;
	case F_DAMT12:
		DP(damt12);
		break;
	case F_DAMT13:
		DP(damt13);
		break;
	case F_DAMT14:
		DP(damt14);
		break;
	case F_DAMT15:
		DP(damt15);
		break;

	case F_DAMT16:
		DP(damt16);
		break;
	case F_DAMT17:
		DP(damt17);
		break;
	case F_DAMT18:
		DP(damt18);
		break;
	case F_DAMT19:
		DP(damt19);
		break;
	case F_DAMT20:
		DP(damt20);
		break;
	case F_DAMT21:
		DP(damt21);
		break;
	case F_DAMT22:
		DP(damt22);
		break;
	case F_DAMT23:
		DP(damt23);
		break;

	case F_DAMT24:
		DP(damt24);
		break;
	case F_DAMT25:
		DP(damt25);
		break;
	case F_DAMT26:
		DP(damt26);
		break;
	case F_DAMT27:
		DP(damt27);
		break;
	case F_DAMT28:
		DP(damt28);
		break;
	case F_DAMT29:
		DP(damt29);
		break;
	case F_DAMT30:
		DP(damt30);
		break;
	case F_DAMT31:
		DP(damt31);
		break;

	case F_DAMT32:
		DP(damt32);
		break;
	case F_DAMT33:
		DP(damt33);
		break;
	case F_SSTOCK_CODE:
		CP(sstock_code);
		break;
	case F_SSTOCK_CODE2:
		CP(sstock_code2);
		break;
	case F_SCUST_TYPE:
		CP(scust_type);
		break;
	case F_SCUST_TYPE2:
		CP(scust_type2);
		break;
	case F_SSTAT_TYPE:
		CP(sstat_type);
		break;
	case F_SSTAT_TYPE2:
		CP(sstat_type2);
		break;

	case F_SROOM_NO:
		CP(sroom_no);
		break;
	case F_SROOM_NO2:
		CP(sroom_no2);
		break;
	case F_SOPEN_EMP:
		CP(sopen_emp);
		break;
	case F_SCLOSE_EMP:
		CP(sclose_emp);
		break;
	case F_SCHANGE_EMP:
		CP(schange_emp);
		break;
	case F_SCHECK_EMP:
		CP(scheck_emp);
		break;
	case F_SEMP:
		CP(semp);
		break;
	case F_SNATION_CODE:
		CP(snation_code);
		break;

	case F_LCERT_CODE:
		DP(lcert_code);
		break;
	case F_STX_PWD:
		CP(stx_pwd);
		break;
	case F_STX_PWD2:
		CP(stx_pwd2);
		break;
	case F_SWITHDRAW_PWD:
		CP(swithdraw_pwd);
		break;
	case F_SWITHDRAW_PWD2:
		CP(swithdraw_pwd2);
		break;
	case F_SEMP_PWD:
		CP(semp_pwd);
		break;
	case F_SEMP_PWD2:
		CP(semp_pwd2);
		break;
	case F_SBANK_PWD:
		CP(sbank_pwd);
		break;

	case F_SBANK_PWD2:
		CP(sbank_pwd2);
		break;
	case F_SCUST_AUTH:
		CP(scust_auth);
		break;
	case F_SCUST_AUTH2:
		CP(scust_auth2);
		break;
	case F_SCUST_LIMIT:
		CP(scust_limit);
		break;
	case F_SCUST_LIMIT2:
		CP(scust_limit2);
		break;
	case F_LSAFE_LEVEL:
		DP(lsafe_level);
		break;
	case F_LSAFE_LEVEL2:
		DP(lsafe_level2);
		break;
	case F_SPOST_CODE:
		CP(spost_code);
		break;

	case F_SPOST_CODE2:
		CP(spost_code2);
		break;
	case F_SPHONE:
		CP(sphone);
		break;
	case F_SPHONE2:
		CP(sphone2);
		break;
	case F_SPHONE3:
		CP(sphone3);
		break;
	case F_SPAGER:
		CP(spager);
		break;
	case F_SEMAIL:
		CP(semail);
		break;
	case F_SEMAIL2:
		CP(semail2);
		break;
	case F_SNOTE:
		CP(snote);
		break;

	case F_SNOTE2:
		CP(snote2);
		break;
	case F_SCERT_NO:
		CP(scert_no);
		break;
	case F_SCERT_NO2:
		CP(scert_no2);
		break;
	case F_SCERT_ADDR:
		CP(scert_addr);
		break;
	case F_SSTATUS0:
		CP(sstatus0);
		break;
	case F_SSTATUS1:
		CP(sstatus1);
		break;
	case F_SSTATUS2:
		CP(sstatus2);
		break;
	case F_SSTATUS3:
		CP(sstatus3);
		break;

	case F_SSTATUS4:
		CP(sstatus4);
		break;
	case F_LWITHDRAW_FLAG:
		DP(lwithdraw_flag);
		break;
	case F_SADDR:
		CP(saddr);
		break;
	case F_SADDR2:
		CP(saddr2);
		break;
	case F_SSERIAL0:
		CP(sserial0);
		break;
	case F_SSERIAL1:
		CP(sserial1);
		break;
	case F_SSERIAL2:
		CP(sserial2);
		break;
	case F_SSERIAL3:
		CP(sserial3);
		break;

	case F_SSERIAL4:
		CP(sserial4);
		break;
	case F_SCURRENCY_TYPE:
		CP(scurrency_type);
		break;
	case F_SCURRENCY_TYPE2:
		CP(scurrency_type2);
		break;
	case F_SBRANCH_CODE0:
		CP(sbranch_code0);
		break;
	case F_SBRANCH_CODE1:
		CP(sbranch_code1);
		break;
	case F_SBRANCH_CODE2:
		CP(sbranch_code2);
		break;
	case F_USSET0:
		CP(usset0);
		break;
	case F_USSET1:
		CP(usset1);
		break;
	case F_USSET2:
		CP(usset2);
		break;
	case F_USSET3:
		CP(usset3);
		break;
	case F_USSET4:
		CP(usset4);
		break;
	case F_USSET5:
		CP(usset5);
		break;
	case F_USSET6:
		CP(usset6);
		break;
	case F_SSTATION0:
		CP(sstation0);
		break;
	case F_SSTATION1:
		CP(sstation1);
		break;
	case F_SBANK_ACC:
		CP(sbank_acc);
		break;

	case F_SBANK_ACC2:
		CP(sbank_acc2);
		break;
	case F_LBANK_ACC_TYPE:
		DP(lbank_acc_type);
		break;
	case F_LBANK_ACC_TYPE2:
		DP(lbank_acc_type2);
		break;
	case F_SMAIN_FLAG:
		CP(smain_flag);
		break;
	case F_SMAIN_FLAG2:
		CP(smain_flag2);
		break;
	case F_SBANK_CODE:
		CP(sbank_code);
		break;
	case F_SBANK_CODE2:
		CP(sbank_code2);
		break;
	case F_SEMP_NO:
		CP(semp_no);
		break;

	case F_SEMP_NO2:
		CP(semp_no2);
		break;
	case F_DRATE0:
		DP(drate0);
		break;
	case F_DRATE1:
		DP(drate1);
		break;
	case F_LSERIAL0:
		DP(lserial0);
		break;
	case F_LSERIAL1:
		DP(lserial1);
		break;
	case F_SBANKNAME:
		CP(sbankname);
		break;
	case F_SBANKNAME2:
		CP(sbankname2);
		break;
	case F_SCARD0:
		CP(scard0);
		break;

	case F_SCARD1:
		CP(scard1);
		break;
	case F_SORDER0:
		CP(sorder0);
		break;
	case F_SORDER1:
		CP(sorder1);
		break;
	case F_SORDER2:
		CP(sorder2);
		break;
	case F_SCUSTTYPES:
		CP(scusttypes);
		break;
	case F_SSECTYPES:
		CP(ssectypes);
		break;
	case F_VSMESS:
		VP(vsmess);
		break;
	case F_VSVARSTR0:
		VP(vsvarstr0);
		break;
	case F_VSVARSTR1:
		VP(vsvarstr1);
		break;
	case F_VSVARSTR2:
		VP(vsvarstr2);
		break;

	case F_VSVARSTR3:
		VP(vsvarstr3);
		break;
	default:
		printf("encodesingleitem no this param =%d ......\n",idx);

	}
	*len = l;
	*pDst = (char *)p;
#undef CP
#undef DP
#undef VP
}

BOOL ModifyHead(ST_PACKHEAD *pHeadPack,unsigned char *buf)
{
	unsigned char *p;
	ST_PACKHEAD *ph;

	p = buf;
	memcpy(p,pHeadPack,sizeof(ST_PACKHEAD));
	ph = (ST_PACKHEAD*)p;
	Reverse((unsigned char *)&ph->RequestType,sizeof(pHeadPack->RequestType));
	Reverse((unsigned char *)&ph->firstflag,sizeof(pHeadPack->firstflag));
	Reverse((unsigned char *)&ph->nextflag,sizeof(pHeadPack->nextflag));
	Reverse((unsigned char *)&ph->recCount,sizeof(pHeadPack->recCount));
	Reverse((unsigned char *)&ph->retCode,sizeof(pHeadPack->retCode));
	Reverse((unsigned char *)&ph->hook.UserID,sizeof(pHeadPack->hook.UserID));
	Reverse((unsigned char *)&ph->hook.queuetype,sizeof(pHeadPack->hook.queuetype));
	return TRUE;
}

BOOL EncodeRow(ST_PACKHEAD *pHeadPack,ST_PACK *pRowPack,unsigned char *buf,int *len,char *eMsg)
{
	int l;
	unsigned char *p;
	int i,j;
	unsigned char b0;
	int result;

	p = buf;
	l = 0;
	for(i=0;i<PARMBITS/BITSPERBYTE;i++)
	{
		b0 = pHeadPack->ParmBits[i];
		for(j=0;j<8;j++)
		{
			if (b0 & _bits[j])
				result = (i<<8)+_bits[j];
			else
				continue;
			_EncodeSingleItem(result,pRowPack,(char **)&p,&l);
		}
	}
	*len = l;
	return TRUE;
}


BOOL EncodeBuf(ST_CPACK *pPack,unsigned char *buf,int *len,char *eMsg)
{
	int l;
	unsigned char *p;
	int i,j;
	unsigned char b0;
	int result;
	ST_PACKHEAD *ph;

	l = sizeof(ST_PACKHEAD);
	p = buf;
	memcpy(p,&pPack->head,sizeof(pPack->head));
	ph = (ST_PACKHEAD*)p;
	Reverse((unsigned char *)&ph->RequestType,sizeof(pPack->head.RequestType));
	Reverse((unsigned char *)&ph->firstflag,sizeof(pPack->head.firstflag));
	Reverse((unsigned char *)&ph->nextflag,sizeof(pPack->head.nextflag));
	Reverse((unsigned char *)&ph->recCount,sizeof(pPack->head.recCount));
	Reverse((unsigned char *)&ph->retCode,sizeof(pPack->head.retCode));
	Reverse((unsigned char *)&ph->hook.UserID,sizeof(pPack->head.hook.UserID));
	Reverse((unsigned char *)&ph->hook.queuetype,sizeof(pPack->head.hook.queuetype));
	ph = &pPack->head;
	p+=sizeof(pPack->head);
	for(i=0;i<PARMBITS/BITSPERBYTE;i++)
	{
		b0 = ph->ParmBits[i];
		for(j=0;j<8;j++)
		{
			if (b0 & _bits[j])
				result = (i<<8)+_bits[j];
			else
				continue;
			_EncodeSingleItem(result,&pPack->pack,(char **)&p,&l);
		}
	}
	*len = l;
	return TRUE;
}
BOOL EncodeBufArray(ST_CPACK *pPack,ST_PACK *pArray,unsigned char *buf,int *len,char *eMsg)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -