📄 readtab.c
字号:
/*======================================================================
功能:查询返回码对照表
USIGN: readtab("rtcd.tab","81To01","33",val);
RETURN: 0 val = "35"
RETURN: -1 没有该项
======================================================================*/
#include <stdio.h>
#include <errno.h>
#include "mytools.h"
#include "macro_def.h"
#ifdef zgx010920_added
#else
char G_system[128];
char G_comp[128];
char G_tele[128];
char GV_filehead[128]; /* 打印报表的标题名称, 缺省为"中国银行 NAS 系统",
可以通过修改"SYSPARAM_CONF的[REPORT_FILEHEAD]->FILEHEAD */
/*
* 从etc/"SYSPARAM_CONF中读取系统版本配置信息
* G_system--系统标题, monitor,net_watch等模块显示时用
* G_comp--公司名称 用于屏幕底部显示
* G_tele--公司电话号码
* 若未配置, 则使用macro_def.h中的缺省定义
*/
get_version_info()
{
char tmp_buf[1024];
int i, ret;
ret = readtab("SYSPARAM_CONF", "VERSION", "SYSTEM_NAME", tmp_buf);
if (ret < 0 || tmp_buf[0] == '\0') {
strcpy(tmp_buf, M_system);
}
strncpy(G_system, tmp_buf, sizeof(G_system)-1);
G_system[sizeof(G_system)-1] = '\0';
for (i = 0; i < strlen(G_system); i++) {
if (G_system[i] == '%')
G_system[i] = ' ';
}
ret = readtab("SYSPARAM_CONF", "VERSION", "COMP_NAME", tmp_buf);
if (ret < 0 || tmp_buf[0] == '\0') {
strcpy(tmp_buf, M_comp);
}
strncpy(G_comp, tmp_buf, sizeof(G_comp)-1);
G_comp[sizeof(G_comp)-1] = '\0';
for (i = 0; i < strlen(G_comp); i++) {
if (G_comp[i] == '%')
G_comp[i] = ' ';
}
ret = readtab("SYSPARAM_CONF", "VERSION", "COMP_TELE", tmp_buf);
if (ret < 0 || tmp_buf[0] == '\0') {
strcpy(tmp_buf, M_tele);
}
strncpy(G_tele, tmp_buf, sizeof(G_tele)-1);
G_tele[sizeof(G_tele)-1] = '\0';
for (i = 0; i < strlen(G_tele); i++) {
if (G_tele[i] == '%')
G_tele[i] = ' ';
}
memset(GV_filehead, '\0', sizeof(GV_filehead));
ret = readtab("SYSPARAM_CONF", "REPORT_FILEHEAD", "FILEHEAD", tmp_buf);
if ((ret < 0) || tmp_buf[0] == '\0') {
strcpy(tmp_buf, M_filehead);
}
strncpy(GV_filehead, tmp_buf, sizeof(GV_filehead)-1);
GV_filehead[sizeof(GV_filehead)-1] = '\0';
for (i = 0; i < strlen(GV_filehead); i++) {
if (GV_filehead[i] == '%')
GV_filehead[i] = ' ';
}
}
#endif
int readtab(Tabname,grp,key,val)
char *Tabname;
char *grp;
char *key;
char *val;
{
FILE *fp;
char tmp[81],tmp1[81],tmp2[81];
val[0] = '\0';
if( Tabname[0] != '/' )
sprintf(tmp,"%s/etc/%s",getenv("WORKDIR"),Tabname);
else
sprintf(tmp,"%s",Tabname);
fp = fopen(tmp,"r");
if(fp == (FILE *)NULL)
{
fprintf(stdout,"Fopen [%s] Error , Error No is %d\n",Tabname,errno);
return(-1);
}
while(!feof(fp))
{
fgets(tmp,81,fp);
deleteln(tmp);
if(tmp[0] == '[' && strcmp(tmp+1,grp)==0)
break;
}
if(!feof(fp))
while(!feof(fp))
{
fgets(tmp,81,fp);
if(tmp[0] == '#' || tmp[0] == '$' || tmp[0] == '*'
|| tmp[0] == '\n' || tmp[0] == '\r')
continue;
deleteln(tmp);
if(tmp[0] == '[')
{
fclose(fp);
return(-1);
}
sscanf(tmp,"%s %s",tmp1,tmp2);
if(strcmp(key,tmp1)==0)
{
strcpy(val,tmp2);
fclose(fp);
return(0);
}
}
fclose(fp);
return(-1);
}
deleteln(buf)
char *buf;
{
int i;
for(i=strlen(buf); i>=0; i--)
{
if( buf[i] == '\r')
{
buf[i] = 0;
return(deleteln(buf));
}
else if( buf[i] == '\n')
{
buf[i] = 0;
return(deleteln(buf));
}
else if( buf[i] == ']')
{
buf[i] = 0;
return(deleteln(buf));
}
}
}
/*********************************************************
功能:
根据省级发卡行识别号到etc/SYSPARAM_CONF中查找发卡行行号
输入:
BIN
输出:
0 FOUND, 行号放到参数2中
-1 NOT DEFINE
*********************************************************/
#ifndef wyz_add_010817
int search_iss_bank_id(p_bin, buf)
char *p_bin;
char *buf;
{
readtab("SYSPARAM_CONF", "PROVINCE_BIN_CODE", p_bin, buf);
if (buf[0] == '\0')
return -1;
return 0;
}
#endif
/*================== WuBin 2001-9-9 18:26 ======Start==============
功能:查询字典中对应组内容到目标数组
USIGN: readtab2arry("rtcd.tab","GROUP",table_arry);
RETURN: 0 table_arry = …………
RETURN: -1 没有该项
===========================2001-9-9 18:26=======End==============*/
int readtab2arry(Tabname,grp,table_arry)
char *Tabname;
char *grp;
struct table_arry_st *table_arry; /* 目标数组名 */
{
FILE *fp;
char tmp[81],tmp1[81],tmp2[81];
int i ;
i = 0;
if( Tabname[0] != '/' )
sprintf(tmp,"%s/etc/%s",getenv("WORKDIR"),Tabname);
else
sprintf(tmp,"%s",Tabname);
fp = fopen(tmp,"r");
if(fp == (FILE *)NULL)
{
fprintf(stdout,"Fopen [%s] Error , Error No is %d\n",Tabname,errno);
return(-1);
}
while(!feof(fp))
{
fgets(tmp,81,fp);
deleteln(tmp);
if(tmp[0] == '[' && strcmp(tmp+1,grp)==0)
break;
}
if(!feof(fp))
while(!feof(fp))
{
fgets(tmp,81,fp);
if(tmp[0] == '#' || tmp[0] == '$' || tmp[0] == '*'
|| tmp[0] == '\n' || tmp[0] == '\r')
continue;
deleteln(tmp);
if(tmp[0] == '[')
{
break;
}
DelSpace(tmp);
if (tmp[0] == 0) continue;
memcpy(table_arry[i].table_name,tmp,strlen(tmp));
i++;
}
fclose(fp);
if (table_arry[0].table_name[0] == 0)
return(-1);
return (0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -