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 + -
显示快捷键?