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

📄 cpack.c

📁 这是我们的一个在linux上运行的软件了个源码
💻 C
📖 第 1 页 / 共 4 页
字号:
{
	int l;
	unsigned char *p;
	int i,j;
	unsigned char b0;
	int result;
	ST_PACKHEAD *ph;
	int cnt;
	ST_PACK *pp;

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

	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);
	pp = &pPack->pack;

	for(cnt = 0; cnt < pPack->head.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;
				_EncodeSingleItem(result,pp,(char **)&p,&l);
			}
		}
		if (pArray == NULL)
			break;
		pp = &pArray[cnt];
	}
	*len = l;
	return TRUE;
}

BOOL SetParmBit(ST_PACKHEAD *ph,int bit)
{
	unsigned short hi,low;

	hi = (bit&0xFF00)>>8;
	low = (bit &0x00ff);
	if (hi>PARMBITS/BITSPERBYTE)
		return FALSE;
	ph->ParmBits[hi]|=low;
	return TRUE;
}

void ShowPackNext(ST_CPACK *pPack,ST_PACK *pack,char *buf)
{
	int i;
	unsigned char b0;
	int j;
	int result;

	sprintf(buf,"\n");
	for(i=0;i<PARMBITS/BITSPERBYTE;i++)
	{
		b0 = pPack->head.ParmBits[i];
		for(j=0;j<8;j++)
		{
			if (b0 & _bits[j])
				result = (i<<8)+_bits[j];
			else
				continue;
			ShowPackItem(result,pack,buf+strlen(buf));
		}
	}
}


BOOL SetErrorPack(ST_CPACK *inPack,ST_CPACK *outPack,
				  char *emsg,int eCode)
{
	char e[300];

	memcpy(&outPack->head.addr,&inPack->head.addr,sizeof(outPack->head.addr));
	memcpy(outPack->head.hook.queuename,inPack->head.hook.queuename,
		sizeof(inPack->head.hook.queuename));
	outPack->head.hook.queuetype = inPack->head.hook.queuetype;
	memcpy(outPack->head.hook.hostname,inPack->head.hook.hostname,
		sizeof(inPack->head.hook.hostname));
	outPack->head.firstflag = 1;
	outPack->head.nextflag = 0;
	outPack->head.recCount = 1;
	outPack->head.retCode = eCode;
	memset(outPack->head.ParmBits,0,sizeof(outPack->head.ParmBits));
	outPack->head.hook.UserID = inPack->head.hook.UserID;

	if (strlen(emsg)>250)
		memcpy(e,emsg,250);
	else
		strcpy(e,emsg);
	e[250]=0;
	strcpy(outPack->pack.vsmess,e);
	SetParmBit(&outPack->head , F_VSMESS);
	return 1;
}

BOOL SetErrorPack2(ST_CPACK *outPack,char *emsg,int eCode)
{
	char e[300];

	memset((char *)outPack,0,sizeof(ST_CPACK));
	outPack->head.firstflag = 1;
	outPack->head.nextflag = 0;
	outPack->head.recCount = 1;
	outPack->head.retCode = eCode;
	memset(outPack->head.ParmBits,0,sizeof(outPack->head.ParmBits));

	if (strlen(emsg)>250)
		memcpy(e,emsg,250);
	else
		strcpy(e,emsg);
	e[250]=0;
	strcpy(outPack->pack.vsmess,e);
	SetParmBit(&outPack->head , F_VSMESS);
	return 1;
}

BOOL SetErrorPackNew(ST_CPACK *inPack,ST_CPACK *outPack,
				  char *emsg,char *emsg2,int eCode)
{
	char e[300];

	memcpy(&outPack->head.addr,&inPack->head.addr,sizeof(outPack->head.addr));
	memcpy(outPack->head.hook.queuename,inPack->head.hook.queuename,
		sizeof(inPack->head.hook.queuename));
	outPack->head.hook.queuetype = inPack->head.hook.queuetype;
	memcpy(outPack->head.hook.hostname,inPack->head.hook.hostname,
		sizeof(inPack->head.hook.hostname));
	outPack->head.firstflag = 1;
	outPack->head.nextflag = 0;
	outPack->head.recCount = 1;
	outPack->head.retCode = eCode;
	memset(outPack->head.ParmBits,0,sizeof(outPack->head.ParmBits));
	outPack->head.hook.UserID = inPack->head.hook.UserID;

	if (strlen(emsg)>250)
		memcpy(e,emsg,250);
	else
		strcpy(e,emsg);
	e[250]=0;
	strcpy(outPack->pack.vsmess,e);
	SetParmBit(&outPack->head , F_VSMESS);

	if (strlen(emsg2)>250)
		memcpy(e,emsg2,250);
	else
		strcpy(e,emsg2);
	e[250]=0;
	strcpy(outPack->pack.vsvarstr0,e);
	SetParmBit(&outPack->head , F_VSVARSTR0);
	return 1;
}

BOOL SetErrorPack2New(ST_CPACK *outPack,char *emsg,char *emsg2,int eCode)
{
	char e[300];

	memset((char *)outPack,0,sizeof(ST_CPACK));
	outPack->head.firstflag = 1;
	outPack->head.nextflag = 0;
	outPack->head.recCount = 1;
	outPack->head.retCode = eCode;
	memset(outPack->head.ParmBits,0,sizeof(outPack->head.ParmBits));

	if (strlen(emsg)>250)
		memcpy(e,emsg,250);
	else
		strcpy(e,emsg);
	e[250]=0;
	strcpy(outPack->pack.vsmess,e);
	SetParmBit(&outPack->head , F_VSMESS);

	if (strlen(emsg2)>250)
		memcpy(e,emsg2,250);
	else
		strcpy(e,emsg2);
	e[250]=0;
	strcpy(outPack->pack.vsvarstr0,e);
	SetParmBit(&outPack->head , F_VSVARSTR0);
	return 1;
}

BOOL SetNormalPack(ST_CPACK *inPack,ST_CPACK *outPack,int nextflag,
				   int recCount)
{

	memcpy(&outPack->head.addr,&inPack->head.addr,sizeof(inPack->head.addr));
	memcpy(outPack->head.hook.queuename,inPack->head.hook.queuename,
		sizeof(inPack->head.hook.queuename));
	outPack->head.hook.queuetype = inPack->head.hook.queuetype;
	memcpy(outPack->head.hook.hostname,inPack->head.hook.hostname,
		sizeof(inPack->head.hook.hostname));
	outPack->head.firstflag = inPack->head.firstflag;
	outPack->head.nextflag = nextflag;
	outPack->head.recCount = recCount;
	outPack->head.retCode = 0;
	memset(outPack->head.ParmBits,0,sizeof(outPack->head.ParmBits));
	outPack->head.hook.UserID = inPack->head.hook.UserID;
	return TRUE;
}

void ShowPack(ST_CPACK *pack,char *buf)
{
	int i;
	unsigned char b0;
	int j;
	int result;

	sprintf(buf,"<HEAD>\n");
	sprintf(buf+strlen(buf),"<REQUESTTYPE=%d,",pack->head.RequestType);
	sprintf(buf+strlen(buf),"FIRSTFLAG=%d,",pack->head.firstflag);
	sprintf(buf+strlen(buf),"NEXTFLAG=%d,",pack->head.nextflag);
	sprintf(buf+strlen(buf),"RECCOUNT=%d,",pack->head.recCount);
	sprintf(buf+strlen(buf),"RETCODE=%d,",pack->head.retCode);
	sprintf(buf+strlen(buf),"USERDATA=%d,",pack->head.userdata);
	sprintf(buf+strlen(buf),"USERID=%d,",pack->head.hook.UserID);
	sprintf(buf+strlen(buf),"HOSTNAME=%s,",pack->head.hook.hostname);
	sprintf(buf+strlen(buf),"QUEUENAME=%s,",pack->head.hook.queuename);
	sprintf(buf+strlen(buf),"QUEUETYPE=%d,",pack->head.hook.queuetype);

	sprintf(buf+strlen(buf),"ADDR=");
	ShowHex((unsigned char *)&pack->head.addr,sizeof(pack->head.addr),buf+strlen(buf));
	sprintf(buf+strlen(buf),">\n</HEAD>\n");

	/*
	sprintf(buf+strlen(buf),"PACK.HEAD.ParmBits:");
	ShowHex(pack->head.ParmBits,sizeof(pack->head.ParmBits),buf+strlen(buf));
	*/

	sprintf(buf+strlen(buf),"<PACK>\n<");
	for(i=0;i<PARMBITS/BITSPERBYTE;i++)
	{
		b0 = pack->head.ParmBits[i];
		for(j=0;j<8;j++)
		{
			if (b0 & _bits[j])
				result = (i<<8)+_bits[j];
			else
				continue;
			ShowPackItem(result,&(pack->pack),buf+strlen(buf));
		}
	}
	sprintf(buf+strlen(buf)-1,">\n</PACK>\n");
}

void ShowHex(unsigned char *p,int len,char* buf)
{
	int i;
	for(i=0;i<len;i++)
	{
		sprintf(buf+i*4,"[%02x]",p[i]);
	}
}

void ShowPackItem(int idx,ST_PACK *pack,char *buf)
{
#define PC(b,a,c)	sprintf(c,"%s=%s,",b,pack->a);
#define PI(b,a,c)	sprintf(c,"%s=%d,",b,pack->a);
#define PD(b,a,c)	sprintf(c,"%s=%f,",b,pack->a);
#define PH(b,a,c)	sprintf(c,"%s=",b); \
					ShowHex(pack->a,sizeof(pack->a),c+strlen(c)); \
					sprintf(c+strlen(c),"%s",",");
#define PV(b,a,c)	sprintf(c,"%s=%s,",b,pack->a);

	switch(idx)
	{
	case F_SCUST_NO:
		PC("SCUST_NO",scust_no,buf);
		break;
	case F_SCUST_NO2:
		PC("SCUST_NO2",scust_no2,buf);
		break;
	case F_SHOLDER_AC_NO:
		PC("SHOLDER_AC_NO",sholder_ac_no,buf);
		break;
	case F_SHOLDER_AC_NO2:
		PC("SHOLDER_AC_NO2",sholder_ac_no2,buf);
		break;
	case F_SHOLDER_TYPE:
		PC("SHOLDER_TYPE",sholder_type,buf);
		break;
	case F_SHOLDER_TYPE2:
		PC("SHOLDER_TYPE2",sholder_type2,buf);
		break;
	case F_SNAME:
		PC("SNAME",sname,buf);
		break;
	case F_SNAME2:
		PC("SNAME2",sname2,buf);
		break;

	case F_SALL_NAME:
		PC("SALL_NAME",sall_name,buf);
		break;
	case F_SMARKET_CODE:
		PC("SMARKET_CODE",smarket_code,buf);
		break;
	case F_SMARKET_CODE2:
		PC("SMARKET_CODE2",smarket_code2,buf);
		break;
	case F_SDATE0:
		PC("SDATE0",sdate0,buf);
		break;
	case F_SDATE1:
		PC("SDATE1",sdate1,buf);
		break;
	case F_SDATE2:
		PC("SDATE2",sdate2,buf);
		break;
	case F_SDATE3:
		PC("SDATE3",sdate3,buf);
		break;
	case F_STIME0:
		PC("STIME0",stime0,buf);
		break;

	case F_STIME1:
		PC("STIME1",stime1,buf);
		break;
	case F_STIME2:
		PC("STIME2",stime2,buf);
		break;
	case F_STIME3:
		PC("STIME3",stime3,buf);
		break;
	case F_LVOL0:
		PI("LVOL0",lvol0,buf);
		break;
	case F_LVOL1:
		PI("LVOL1",lvol1,buf);
		break;
	case F_LVOL2:
		PI("LVOL2",lvol2,buf);
		break;
	case F_LVOL3:
		PI("LVOL3",lvol3,buf);
		break;
	case F_LVOL4:
		PI("LVOL4",lvol4,buf);
		break;

	case F_LVOL5:
		PI("LVOL5",lvol5,buf);
		break;
	case F_LVOL6:
		PI("LVOL6",lvol6,buf);
		break;
	case F_LVOL7:
		PI("LVOL7",lvol7,buf);
		break;
	case F_LVOL8:
		PI("LVOL8",lvol8,buf);
		break;
	case F_LVOL9:
		PI("LVOL9",lvol9,buf);
		break;
	case F_LVOL10:
		PI("LVOL10",lvol10,buf);
		break;
	case F_LVOL11:
		PI("LVOL11",lvol11,buf);
		break;
	case F_LVOL12:
		PI("LVOL12",lvol12,buf);
		break;

	case F_DAMT0:
		PD("DAMT0",damt0,buf);
		break;
	case F_DAMT1:
		PD("DAMT1",damt1,buf);
		break;
	case F_DAMT2:
		PD("DAMT2",damt2,buf);
		break;
	case F_DAMT3:
		PD("DAMT3",damt3,buf);
		break;
	case F_DAMT4:
		PD("DAMT4",damt4,buf);
		break;
	case F_DAMT5:
		PD("DAMT5",damt5,buf);
		break;
	case F_DAMT6:
		PD("DAMT6",damt6,buf);
		break;
	case F_DAMT7:
		PD("DAMT7",damt7,buf);
		break;

	case F_DAMT8:
		PD("DAMT8",damt8,buf);
		break;
	case F_DAMT9:
		PD("DAMT9",damt9,buf);
		break;
	case F_DAMT10:
		PD("DAMT10",damt10,buf);
		break;
	case F_DAMT11:
		PD("DAMT11",damt11,buf);
		break;
	case F_DAMT12:
		PD("DAMT12",damt12,buf);
		break;
	case F_DAMT13:
		PD("DAMT13",damt13,buf);
		break;
	case F_DAMT14:
		PD("DAMT14",damt14,buf);
		break;
	case F_DAMT15:
		PD("DAMT15",damt15,buf);
		break;

	case F_DAMT16:
		PD("DAMT16",damt16,buf);
		break;
	case F_DAMT17:
		PD("DAMT17",damt17,buf);
		break;
	case F_DAMT18:
		PD("DAMT18",damt18,buf);
		break;
	case F_DAMT19:
		PD("DAMT19",damt19,buf);
		break;
	case F_DAMT20:
		PD("DAMT20",damt20,buf);
		break;
	case F_DAMT21:
		PD("DAMT21",damt21,buf);
		break;
	case F_DAMT22:
		PD("DAMT22",damt22,buf);
		break;
	case F_DAMT23:
		PD("DAMT23",damt23,buf);
		break;

	case F_DAMT24:
		PD("DAMT24",damt24,buf);
		break;
	case F_DAMT25:
		PD("DAMT25",damt25,buf);
		break;
	case F_DAMT26:
		PD("DAMT26",damt26,buf);
		break;
	case F_DAMT27:
		PD("DAMT27",damt27,buf);
		break;
	case F_DAMT28:
		PD("DAMT28",damt28,buf);
		break;
	case F_DAMT29:
		PD("DAMT29",damt29,buf);
		break;
	case F_DAMT30:
		PD("DAMT30",damt30,buf);
		break;
	case F_DAMT31:
		PD("DAMT31",damt31,buf);
		break;

	case F_DAMT32:
		PD("DAMT32",damt32,buf);
		break;
	case F_DAMT33:
		PD("DAMT33",damt33,buf);
		break;
	case F_SSTOCK_CODE:
		PC("SSTOCK_CODE",sstock_code,buf);
		break;
	case F_SSTOCK_CODE2:
		PC("SSTOCK_CODE2",sstock_code2,buf);
		break;
	case F_SCUST_TYPE:
		PC("SCUST_TYPE",scust_type,buf);
		break;
	case F_SCUST_TYPE2:
		PC("SCUST_TYPE2",scust_type2,buf);
		break;
	case F_SSTAT_TYPE:
		PC("SSTAT_TYPE",sstat_type,buf);
		break;
	case F_SSTAT_TYPE2:
		PC("SSTAT_TYPE2",sstat_type2,buf);
		break;

	case F_SROOM_NO:
		PC("SROOM_NO",sroom_no,buf);
		break;
	case F_SROOM_NO2:
		PC("SROOM_NO2",sroom_no2,buf);
		break;
	case F_SOPEN_EMP:
		PC("SOPEN_EMP",sopen_emp,buf);
		break;
	case F_SCLOSE_EMP:
		PC("SCLOSE_EMP",sclose_emp,buf);
		break;
	case F_SCHANGE_EMP:
		PC("SCHANGE_EMP",schange_emp,buf);
		break;
	case F_SCHECK_EMP:
		PC("SCHECK_EMP",scheck_emp,buf);
		break;
	case F_SEMP:
		PC("SEMP",semp,buf);
		break;
	case F_SNATION_CODE:
		PC("SNATION_CODE",snation_code,buf);
		break;

	case F_LCERT_CODE:
		PI("LCERT_CODE",lcert_code,buf);
		break;
	case F_STX_PWD:
		PC("STX_PWD",stx_pwd,buf);
		break;
	case F_STX_PWD2:
		PC("STX_PWD2",stx_pwd2,buf);
		break;
	case F_SWITHDRAW_PWD:
		PC("SWITHDRAW_PWD",swithdraw_pwd,buf);
		break;
	case F_SWITHDRAW_PWD2:
		PC("SWITHDRAW_PWD2",swithdraw_pwd2,buf);
		break;
	case F_SEMP_PWD:
		PC("SEMP_PWD",semp_pwd,buf);
		break;
	case F_SEMP_PWD2:
		PC("SEMP_PWD2",semp_pwd2,buf);
		break;
	case F_SBANK_PWD:
		PC("SBANK_PWD",sbank_pwd,buf);
		break;

	case F_SBANK_PWD2:
		PC("SBANK_PWD2",sbank_pwd2,buf);
		break;
	case F_SCUST_AUTH:
		PC("SCUST_AUTH",scust_auth,buf);
		break;
	case F_SCUST_AUTH2:
		PC("SCUST_AUTH2",scust_auth2,buf);
		break;
	case F_SCUST_LIMIT:
		PC("SCUST_LIMIT",scust_limit,buf);
		break;
	case F_SCUST_LIMIT2:
		PC("SCUST_LIMIT2",scust_limit2,buf);
		break;
	case F_LSAFE_LEVEL:
		PI("LSAFE_LEVEL",lsafe_level,buf);
		break;
	case F_LSAFE_LEVEL2:
		PI("LSAFE_LEVEL2",lsafe_level2,buf);
		break;
	case F_SPOST_CODE:
		PC("SPOST_CODE",spost_code,buf);
		break;

	case F_SPOST_CODE2:
		PC("SPOST_CODE2",spost_code2,buf);
		break;
	case F_SPHONE:
		PC("SPHONE",sphone,buf);
		break;
	case F_SPHONE2:
		PC("SPHONE2",sphone2,buf);
		break;
	case F_SPHONE3:
		PC("SPHONE3",sphone3,buf);
		break;
	case F_SPAGER:
		PC("SPAGER",spager,buf);
		break;
	case F_SEMAIL:
		PC("SEMAIL",semail,buf);
		break;
	case F_SEMAIL2:
		PC("SEMAIL2",semail2,buf);
		break;
	case F_SNOTE:
		PC("SNOTE",snote,buf);
		break;

	case F_SNOTE2:
		PC("SNOTE2",snote2,buf);
		break;
	case F_SCERT_NO:
		PC("SCERT_NO",scert_no,buf);
		break;
	case F_SCERT_NO2:
		PC("SCERT_NO2",scert_no2,buf);
		break;
	case F_SCERT_ADDR:
		PC("SCERT_ADDR",scert_addr,buf);
		break;
	case F_SSTATUS0:
		PC("SSTATUS0",sstatus0,buf);
		break;
	case F_SSTATUS1:
		PC("SSTATUS1",sstatus1,buf);
		break;
	case F_SSTATUS2:
		PC("SSTATUS2",sstatus2,buf);
		break;
	case F_SSTATUS3:
		PC("SSTATUS3",sstatus3,buf);
		break;

	case F_SSTATUS4:
		PC("SSTATUS4",sstatus4,buf);
		break;
	case F_LWITHDRAW_FLAG:
		PI("LWITHDRAW_FLAG",lwithdraw_flag,buf);
		break;
	case F_SADDR:
		PC("SADDR",saddr,buf);
		break;
	case F_SADDR2:
		PC("SADDR2",saddr2,buf);
		break;
	case F_SSERIAL0:
		PC("SSERIAL0",sserial0,buf);
		break;
	case F_SSERIAL1:
		PC("SSERIAL1",sserial1,buf);
		break;
	case F_SSERIAL2:
		PC("SSERIAL2",sserial2,buf);
		break;
	case F_SSERIAL3:
		PC("SSERIAL3",sserial3,buf);
		break;

	case F_SSERIAL4:
		PC("SSERIAL4",sserial4,buf);
		break;

⌨️ 快捷键说明

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