📄 intrade.c
字号:
/* * %W% %G% * 人行营业部同城票据处理系统 * Copyright (C) 2000 杭州信雅达系统工程有限责任公司 * * 查询未复核提入交易程序main() * 作者: * 日期: */#include "public.h"#include "tp_code.h"#include "global.h"#include "user_msg.h"#include "SDKpub.h"#include "tcpapi.h"#include "pubutil.h"#include "pltutil.h"#include <stdio.h>#include <stdlib.h>#include <time.h>#include <signal.h>#include <errno.h>#include "s_qry_in.h"#include "s_uflag.h"/* 全局变量声明 */int debug; void itom(char *str, int i, int len){ char strbuf[257]; memset(strbuf, 0, sizeof(strbuf)); sprintf(strbuf, "%.*d", len, i); memcpy(str, strbuf, len);}int mtoi(char *str, int len){ char strbuf[257]; memcpy(strbuf, str, len); strbuf[len] = 0; return atoi(strbuf);} long mtol(char *str, int len){ char strbuf[257]; memcpy(strbuf, str, len); strbuf[len] = 0; return atol(strbuf);} int main(argc, argv)int argc;char *argv[];{ struct s_qry_in note; struct s_uflag s; char tmp[1024],Result[3],pid_buf[64],infobuf[61]; char buffer[64],pidstr[9],bankno[7],level[2]; char bankno1[7],bankno2[7],filename[64]; int dlen,pid,result = 0; FILE *fp,*fp1,*fp2; int proc_num = 0; char profile[60]; char filercv[60]; char CliNumStr[9]; char PIDFILE[60]; TCPHEAD head; char svraddr[32]; int svrport; char buffout[200]; sprintf(debugfile,"%s.log",argv[0]); if( putenv( "ISCOUNTER=Y" ) != 0 ) { SDKerrlog( CLILOG, "[%s|%d] putenv() error! %s", __FILE__, __LINE__, strerror(errno) ); exit( -1 ); } GetProcess( (char *)getenv("LOGNAME"), argv[0], &proc_num ); if( proc_num > 1) { debugint(proc_num); SDKerrlog( CLILOG, "[%s|%d] 已有同名进程运行!", __FILE__, __LINE__ ); exit(0); } sprintf( profile, "%s/etc/%s", getenv("HOME"), CLI_PROFILE ); SDKerrlog( CLILOG, "[%s|%d] Step 1", __FILE__, __LINE__ ); memset(CliNumStr,0,sizeof(CliNumStr)); GetProfileString( profile, "NODE INFO", "CliNum", CliNumStr ); debugstr(CliNumStr); if( GetSvrAddr( svraddr, &svrport ) < 0 ) { SDKerrlog( CLILOG, "[%s|%d] 取后台通讯参数失败!", __FILE__, __LINE__ ); exit(0); } sprintf( PIDFILE, "%s/etc/%s", getenv("HOME"),"oper.pid" ); SDKerrlog( CLILOG, "[%s|%d] Ready open pidfile ...", __FILE__, __LINE__ ); if((fp2 = fopen(PIDFILE, "r")) == NULL) { SDKerrlog( CLILOG, "[%s|%d] open pidfile fail!", __FILE__, __LINE__ ); exit(-1); } while(!feof(fp2)) { fgets(buffer, 63, fp2); if(feof(fp2)) break; strcpy(pidstr,(char *)strtok(buffer,"|")); strcpy(bankno,(char *)strtok(NULL,"|")); strcpy(level,(char *)strtok(NULL,"|")); trim_all(pidstr); trim_all(bankno); trim_all(level); level[1] = 0; strcpy(bankno1,bankno); strcpy(bankno2,"000000"); memset(filename,0,sizeof(filename)); sprintf(filename,"%s/tmp/in_%08s.dat",getenv("HOME"),pidstr); pid = atoi(pidstr); if(kill(pid, 0) != 0) continue; dlen=sizeof(struct s_qry_in); sprintf(buffout, "%04d%6s%6s%60s%15s%15s%2s", REQ_QRY_INTRADE_UNCHECKED, bankno1,bankno2, "","netaddr","hostaddr","00"); memset( &head, 0, sizeof(head) ); sprintf( head.TrType, "%06d", REQ_QRY_INTRADE_UNCHECKED ); head.Sleng=strlen( buffout ); memcpy(head.NodeId,CliNumStr,strlen(CliNumStr)); memset(¬e,0,sizeof(note)); memset(filercv,0,sizeof(filercv)); SDKerrlog( CLILOG, "[%s|%d] Ready cli_sndrcv trtype = " "REQ_QRY_INTRADE_UNCHECKED ...", __FILE__, __LINE__ ); if( cli_sndrcv( svraddr, svrport, &head, buffout, NULL, (char *)¬e, filercv, GetAppTimeOut())<0 ) { SDKerrlog( CLILOG, "[%s|%d] 通信失败! RetCode=[%s]", __FILE__, __LINE__,head.RetCode ); exit(0); } memcpy(Result,note.result,2); Result[2]= 0 ; debugstr(Result); result=atoi(Result); if(!result) { memcpy(infobuf,note.infobuf,sizeof(note.infobuf)); infobuf[60] = 0; trim_all(infobuf); if((fp1 = fopen(filename, "w")) == NULL) continue; fprintf(fp1," %s\0",infobuf); fclose(fp1); kill(pid,SIGUSR1); } } fclose(fp2); if(note.flags[0] == '1') { result = system("cd ${FILES_DIR}; tar xf wdupgrade.pkg; sh wdupgrade.sh; rm -f wdupgrade.pkg")>>8; debugint(result); if( result == 0) { memset(&s, 0, sizeof(s)); itom(s.tradeid, REQ_UPDATE_UFLAG,sizeof(s.tradeid)); s.uflag = 'A'; itom(s.result, 0, sizeof(s.result)); memset( &head, 0, sizeof(head) ); sprintf( head.TrType, "%06d", REQ_UPDATE_UFLAG ); head.Sleng=strlen( buffout ); memcpy(head.NodeId,CliNumStr,strlen(CliNumStr)); debugstr("befor send"); if( cli_sndrcv( svraddr, svrport, &head, (char *)&s, NULL, NULL, NULL, GetAppTimeOut() )<0 ) { SDKerrlog( CLILOG, "[%s|%d] 通信失败! RetCode=[%s]", __FILE__, __LINE__,head.RetCode ); exit(0); } debugstr(" send end"); } } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -