📄 call.c
字号:
#include <stdio.h>
#include <ctype.h>
#include <atmi.h> /* TUXEDO Header File */
#include <userlog.h> /* TUXEDO Header File */
#include "fml32.h"
#include "myfml.h"
CALL(TPSVCINFO *rqst)
{
FILE *fp;
long i=0;
FBFR32 *rcvbuf;
char fname[100]="";
FLDLEN32 len=0;
long bnum,bid,bsize=1024;
char *fdata;
rcvbuf=(FBFR32 *)rqst->data;
len=sizeof(bid);
if(Fget32(rcvbuf,BID,0,(char *)&bid,&len) == -1)
{
userlog("Fget32(BID) failure :%s",(char *)Fstrerror32(Ferror32));
tpreturn(TPFAIL,0,0,0,0);
}
len=sizeof(fname);
if(Fget32(rcvbuf,FNAME,0,fname,&len) == -1)
{
userlog("Fget32(FNAME) failure :%s",(char *)Fstrerror32(Ferror32));
tpreturn(TPFAIL,0,0,0,0);
}
if ((fp=fopen(fname, "rb"))==NULL)
{
fp=fopen(fname, "wb");
}
else if(bid == 0 )
{
fclose(fp);
fp=fopen(fname, "wb");
}
else
{
fclose(fp);
fp = fopen(fname, "r+b");
}
if(fp == NULL)
{
userlog("fopen() %s failure\n",fname);
tpreturn(TPFAIL,0,0,0,0);
}
fdata=(char *)malloc(bsize);
if(fdata == NULL)
{
userlog("malloc(fdata) failure");
tpreturn(TPFAIL,0,0,0,0);
}
len=sizeof(bnum);
if(Fget32(rcvbuf,BNUM,0,(char *)&bnum,&len) == -1)
{
userlog("Fget32(BNUM) failure :%s",(char *)Fstrerror32(Ferror32));
tpreturn(TPFAIL,0,0,0,0);
}
len=bsize;
if(Fget32(rcvbuf,FDATA,0,fdata,(FLDLEN32 *)&len) == -1)
{
userlog("Fget32(FDATA) failure :%s",(char *)Fstrerror32(Ferror32));
tpreturn(TPFAIL,0,0,0,0);
}
i=bid * bsize;
if(fseek(fp, i, 0)!=0)
{
userlog("fseek() failure\n");
tpreturn(TPFAIL,0,0,0,0);
}
i = fwrite(fdata,1,len,fp);
if(i != len)
{
userlog("fwrite()fail\n");
tpreturn(TPFAIL,0,0,0,0);
}
fclose(fp);
tpreturn(TPSUCCESS, 0, NULL, 0L, 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -