config.c

来自「this ebook is for GSM if any one has int」· C语言 代码 · 共 468 行 · 第 1/2 页

C
468
字号
	{ "output-udp", 0, 0, LCV_NONE, 0, conf_output_udp, cf_output_udp_start },	{ "output-rtp", 0, 0, LCV_NONE, 0, conf_output_rtp, cf_output_rtp_start },	{ "output-http", 0, 0, LCV_NONE, 0, conf_output_http, cf_output_http_start },	{ "output-pipe", 0, 0, LCV_NONE, 0, conf_output_pipe, cf_output_pipe_start },	{ NULL, 0, 0, 0, 0, NULL },};static int cf_dvbs_trans_freq(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbs.t_freq=val->num; return 1; }static int cf_dvbs_trans_pol(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbs.t_pol=val->string; return 1; }static int cf_dvbs_trans_srate(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbs.t_srate=val->num; return 1; }static int cf_dvbs_trans_diseqc(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbs.t_diseqc=val->num; return 1; }static int cf_dvbs_lnbsharing(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbs.lnbsharing=val->num; return 1; }static struct lc_ventry conf_dvbs_transponder[] = {	{ "frequency", 1, 1, LCV_NUM, 0, NULL, cf_dvbs_trans_freq },	{ "polarisation", 1, 1, LCV_STRING, 0, NULL, cf_dvbs_trans_pol },	{ "symbol-rate", 1, 1, LCV_NUM, 0, NULL, cf_dvbs_trans_srate },	{ "diseqc", 0, 1, LCV_NUM, 0, NULL, cf_dvbs_trans_diseqc },	{ NULL, 0, 0, 0, 0, NULL },};static int cf_dvbs_lnb_lof1(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbs.lnb_lof1=val->num; return 1; }static int cf_dvbs_lnb_lof2(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbs.lnb_lof2=val->num; return 1; }static int cf_dvbs_lnb_slof(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbs.lnb_slof=val->num; return 1; }static struct lc_ventry conf_dvbs_lnb[] = {	{ "lof1", 1, 1, LCV_NUM, 0, NULL, cf_dvbs_lnb_lof1 },	{ "lof2", 1, 1, LCV_NUM, 0, NULL, cf_dvbs_lnb_lof2 },	{ "slof", 1, 1, LCV_NUM, 0, NULL, cf_dvbs_lnb_slof },	{ NULL, 0, 0, 0, 0, NULL },};static struct lc_ventry conf_dvbs[] = {	{ "lnb-sharing", 0, 1, LCV_BOOL, 0, NULL, cf_dvbs_lnbsharing },	{ "lnb", 1, 1, LCV_NONE, 0, conf_dvbs_lnb, NULL },	{ "transponder", 1, 1, LCV_NONE, 0, conf_dvbs_transponder, NULL },	{ NULL, 0, 0, 0, 0, NULL },};static int cf_dvbt_bandwidth(struct lc_centry *ce, struct lc_value *val) {	if (strcasecmp("auto", val->string) == 0) {		adapter->fe.dvbt.bandwidth=0;	} else {		int	bw=strtol(val->string, NULL, 10);		if (bw != 6 && bw != 7 && bw != 8) {			fprintf(stderr, "config: Illegal DVB-T bandwidth \"%s\" in line %d\n",					val->string, ce->vline);			return 0;		}		adapter->fe.dvbt.bandwidth=bw;	}	return 1;}static int cf_dvbt_freq(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbt.freq=val->num; return 1; }static int cf_dvbt_tmode(struct lc_centry *ce, struct lc_value *val) {	if (strcasecmp("auto", val->string) == 0) {		adapter->fe.dvbt.tmode=0;	} else {		int	t=strtol(val->string, NULL, 10);		if (t != 2 && t != 8) {			fprintf(stderr, "config: Illegal DVB-T transmission-mode \"%s\" in line %d\n",					val->string, ce->vline);			return 0;		}		adapter->fe.dvbt.tmode=t;	}	return 1;}static int cf_dvbt_modulation(struct lc_centry *ce, struct lc_value *val) {	if (strcasecmp("auto", val->string) == 0) {		adapter->fe.dvbt.modulation=0;	} else {		int	m=strtol(val->string, NULL, 10);		if (m != 16 && m != 32 && m != 64 && m != 128 && m != 256) {			fprintf(stderr, "config: Illegal DVB-T modulation \"%s\" in line %d\n",					val->string, ce->vline);			return 0;		}		adapter->fe.dvbt.modulation=m;	}	return 1;}static int cf_dvbt_guard(struct lc_centry *ce, struct lc_value *val) {	if (strcasecmp("auto", val->string) == 0) {		adapter->fe.dvbt.guard=0;	} else {		int	gi=strtol(val->string, NULL, 10);		if (gi != 4 && gi != 8 && gi != 16 && gi != 32) {			fprintf(stderr, "config: Illegal DVB-T guard-interval \"%s\" in line %d\n",					val->string, ce->vline);			return 0;		}		adapter->fe.dvbt.guard=gi;	}	return 1;}static int cf_dvbt_hierarchy(struct lc_centry *ce, struct lc_value *val) {	if (strcasecmp("none", val->string) == 0)		adapter->fe.dvbt.hierarchy=-1;	else if (strcasecmp("auto", val->string) == 0)		adapter->fe.dvbt.hierarchy=0;	else {		int	h=strtol(val->string, NULL, 0);		if (h != 1 && h != 2 && h != 4) {			fprintf(stderr, "config: Illegal DVB-T hierarchy %s in line %d\n",					val->string, ce->vline);			return 0;		}		adapter->fe.dvbt.hierarchy=h;	}	return 1;}static struct lc_ventry conf_dvbt[] = {	{ "bandwidth", 0, 1, LCV_STRING, 0, NULL, cf_dvbt_bandwidth },	{ "frequency", 1, 1, LCV_NUM, 0, NULL, cf_dvbt_freq },	{ "transmission-mode", 0, 1, LCV_STRING, 0, NULL, cf_dvbt_tmode },	{ "modulation", 0, 1, LCV_STRING, 0, NULL, cf_dvbt_modulation },	{ "guard-interval", 0, 1, LCV_STRING, 0, NULL, cf_dvbt_guard },	{ "hierarchy", 0, 1, LCV_STRING, 0, NULL, cf_dvbt_hierarchy },	{ NULL, 0, 0, 0, 0, NULL },};static int cf_dvbs(struct lc_centry *ce, struct lc_value *val)	{ adapter->type=AT_DVBS; return 1; }static int cf_dvbs2(struct lc_centry *ce, struct lc_value *val)	{ adapter->type=AT_DVBS2; return 1; }static int cf_dvbt(struct lc_centry *ce, struct lc_value *val)	{ adapter->type=AT_DVBT; return 1; }static int cf_dvbc(struct lc_centry *ce, struct lc_value *val)	{ adapter->type=AT_DVBC; return 1; }static int cf_dvbc_freq(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbc.freq=val->num; return 1; }static int cf_dvbc_modulation(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbc.modulation=val->num; return 1; }static int cf_dvbc_trans_srate(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbc.srate=val->num; return 1; }static int cf_dvbc_fec(struct lc_centry *ce, struct lc_value *val)	{ adapter->fe.dvbc.fec=val->num; return 1; }static struct lc_ventry conf_dvbc[] = {	{ "frequency", 1, 1, LCV_NUM, 0, NULL, cf_dvbc_freq },	{ "modulation", 0, 1, LCV_NUM, 0, NULL, cf_dvbc_modulation },	{ "symbol-rate", 1, 1, LCV_NUM, 0, NULL, cf_dvbc_trans_srate },	{ "fec", 0, 1, LCV_NUM, 0, NULL, cf_dvbc_fec },	{ NULL, 0, 0, 0, 0, NULL },};static int cf_adapter_budget(struct lc_centry *ce, struct lc_value *val)	{ adapter->budgetmode=val->num; return 1; }static int cf_adapter_packetbuffer(struct lc_centry *ce, struct lc_value *val)	{ adapter->dvr.buffer.size=val->num; return 1; }static int cf_adapter_statinterval(struct lc_centry *ce, struct lc_value *val)	{ adapter->dvr.stat.interval=val->num; return 1; }static int cf_adapter_stuckinterval(struct lc_centry *ce, struct lc_value *val)	{ adapter->dvr.stuckinterval=val->num; return 1; }static struct lc_ventry conf_adapter[] = {	{ "budget-mode", 0, 1, LCV_BOOL, 0, NULL, cf_adapter_budget },	{ "packet-buffer", 0, 1, LCV_NUM, 0, NULL, cf_adapter_packetbuffer },	{ "stat-interval", 0, 1, LCV_NUM, 0, NULL, cf_adapter_statinterval },	{ "stuck-interval", 0, 1, LCV_NUM, 0, NULL, cf_adapter_stuckinterval },	{ "stream", 0, 0, LCV_NONE, 0, conf_stream, cf_stream_start },	{ "dvb-s", 0, 1, LCV_NONE, 0, conf_dvbs, cf_dvbs },	{ "dvb-s2", 0, 1, LCV_NONE, 0, conf_dvbs, cf_dvbs2 },	{ "dvb-t", 0, 1, LCV_NONE, 0, conf_dvbt, cf_dvbt },	{ "dvb-c", 0, 1, LCV_NONE, 0, conf_dvbc, cf_dvbc },	{ NULL, 0, 0, 0, 0, NULL },};static struct lc_ventry conf_http[] = {	{ "port", 1, 1, LCV_NUM, 0, NULL, cf_http_port },	{ NULL, 0, 0, 0, 0, NULL },};static struct lc_ventry conf_main[] = {	{ "adapter", 1, 0, LCV_NUM, LCO_UNIQ, conf_adapter, cf_adapter_start },	{ "http", 1, 1, LCV_NONE, 0, conf_http, NULL },	{ NULL, 0, 0, 0, 0, NULL },};struct config_s *readconfig(char *filename) {	int			cfd;	struct stat		sb;	char			*ctext;	struct lc_centry	*c;	/* Base for config storage */	config=calloc(1, sizeof(struct config_s));	cfd=open(filename, O_RDONLY);	if (cfd<0)		return NULL;	if (fstat(cfd, &sb)) {		close(cfd);		return NULL;	}	ctext=mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, cfd, 0);	c=libconf_parse(ctext, sb.st_size);	munmap(ctext, sb.st_size);	close(cfd);	if (!c)		return NULL;	if (!libconf_validate(c, conf_main)) {		libconf_free(c);		return NULL;	}	return config;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?