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

📄 readtab.c

📁 API
💻 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 + -