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

📄 callcli.c

📁 tuxede下面的编程
💻 C
字号:

#include <stdio.h>
#include <io.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <stdarg.h>
#include "atmi.h"		
#include "fml32.h"
#include "myfml.h"



FBFR32 *sendbuf=NULL;
char *rcvbuf;
char *filebuf;
FILE *fp;



log(const char *fmt, ...)
{
	va_list ap;	
	va_start(ap, fmt);
		
	vfprintf(stdout, fmt, ap);
	fflush(stdout);	
	va_end(ap);
	
	fclose(fp);
	tpfree((char *)sendbuf);
	tpfree((char *)rcvbuf);
	free(filebuf);
	tpterm();
	exit(1);
}


#if defined(__STDC__) || defined(__cplusplus)
main(int argc, char *argv[])
#else
main(argc, argv)
int argc;
char *argv[];
#endif

{

	
	long rcvlen=1000,filelen,i;
	int ret;
	long reallen;
	long bnum,bsize=1024;	
	FLDLEN32 len=0;
	char *size;
	
	
	
	
	if(argc != 2)
	{
		(void) fprintf(stderr, "Usage: %s filename\n",argv[0]);
		exit(1);
	}
	fp = fopen( argv[1], "rb" );
	if(fp == NULL)
	{
		printf("open file:%s failure\n",argv[1]);
		exit(1);
	}
	if(fseek(fp, 0, SEEK_END)!=0)
	{
		perror("fseek() failure:");
		exit(1);
	}
	filelen=ftell(fp);
	if(filelen== -1)
	{
		perror("ftell() failure:");
		exit(1);	
	}
	rewind(fp);
	
	if((sendbuf = (FBFR32 *)tpalloc("FML32", NULL, filelen+100)) == (FBFR32 *)NULL) 
	{
		printf("Error allocating send buffer\n");
		exit(1);
	}
	len = Fsizeof32(sendbuf);
	if(Finit32(sendbuf, (FLDLEN32)len)== -1)
	{
		printf("finit32() failure\n");
		exit(1);
	}
	if((rcvbuf = (char *) tpalloc("STRING", NULL, rcvlen)) == NULL) 
	{
		printf("Error allocating receive buffer\n");
		exit(1);
	}
			
	if (tpinit(NULL) == -1) 
	{
        	printf("tpinit() failure");
        	exit(1);
        }
	filebuf=(char *)malloc(bsize);
	if(filebuf == NULL)
	{
		printf("malloc(filebuf) failure");
        	exit(1);		
	}	
	bnum=(filelen -1)/bsize + 1; 
	if(Fchg32( sendbuf, FNAME, 0, argv[1], (FLDLEN32)len )<0)
	{
		log("Fchg32(FNAME) failure\n",Fstrerror32(Ferror32));
	}
	if(Fchg32( sendbuf, BNUM, 0, (char *)&bnum, (FLDLEN32)len )<0)
	{
		log("Fchg32(BNUM) failure\n",Fstrerror32(Ferror32));
	}
	printf("filelen = %ld, block num = %ld\n",filelen,bnum);
	for(i=0;i<bnum;i++)
	{
		if(fseek(fp, i*bsize, 0)!=0)
		{
			log("fseek failure\n");	
		}
		reallen=fread(filebuf, 1, bsize, fp);
		if(reallen!=bsize && feof(fp)==0 )
		{
			log("fread() failure\n");	
		}	
		if(Fchg32(sendbuf, BID, 0, (char *)&i, 0)<0)
		{
			log("Fchg32(BID) failure:%s\n",Fstrerror32(Ferror32));
		}
		printf("bid=%ld\n",i);
		if(Fchg32( sendbuf, FDATA, 0, filebuf, (FLDLEN32)reallen)<0)
		{
			log("Fchg32(FDATA) failure:%s\n",Fstrerror32(Ferror32));
		}
		ret = tpcall("CALL", (char *)sendbuf, 0, (char **)&rcvbuf, &rcvlen, (long)0);
		if(ret == -1)
		{
			log("tpcall() failure:tperrno=%ld,errstr=%s\n",tperrno,tpstrerror(tperrno));
		}	
	}
	log("finished\n");
}


⌨️ 快捷键说明

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