📄 callcli.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 + -