#include "defs.hpp" #include "rconf.h" int main() { struct ConfigFile::confval *cp,*cp2,*cp3,*tcp; ConfigFile *cfile; CHANNEL *fchan,*chanp,*jp; APID *fapid,*apidp; char *p; uint32_t freq,tsid; uint8_t bw; cfile = new ConfigFile((char *)"/usr/local/etc/yahdr.channels"); if (!(cp = cfile->findkey((char *)"transponder",cfile->first))) { cout << "no transponder in channels file ?!" << endl; exit(0); } fchan = chanp = new CHANNEL; //chanp->apid = fapid = apidp = new APID; memset(fchan,0,sizeof(CHANNEL)); memset(fapid,0,sizeof(APID)); do { cp2 = cfile->findkey((char*)"freq",cp->leaf); freq = atoi(cp2->value); cp2 = cfile->findkey((char *)"bw",cp2); bw = atoi(cp2->value); cp2 = cfile->findkey((char *)"tsid",cp2); tsid = atoi(cp2->value); cp2 = cfile->findkey((char *)"program",cp2); while (cp2) { chanp->freq = freq; chanp->tsid = tsid; chanp->bw = bw; cp3 = cfile->findkey((char *)"service_id",cp2->leaf); chanp->pnum = atoi(cp3->value); cp3 = cfile->findkey((char *)"internal_channel",cp2->leaf); chanp->channum = atoi(cp3->value); cp3 = cfile->findkey((char *)"service-type",cp2->leaf); chanp->stype = new string; chanp->stype->assign(cp3->value); cp3 = cfile->findkey((char *)"EIT-sched",cp2->leaf); chanp->epg_sched = atoi(cp3->value); cp3 = cfile->findkey((char *)"EIT-pf",cp2->leaf); chanp->epg_pf = atoi(cp3->value); cp3 = cfile->findkey((char *)"providername",cp2->leaf); chanp->provider = new string; chanp->provider->assign(cp3->value); cp3 = cfile->findkey((char *)"servicename",cp2->leaf); chanp->name = new string; chanp->name->assign(cp3->value); cp3 = cfile->findkey((char *)"pid",cp2->leaf); do { if (p = strtok(cp3->value,",")) { char *num,*type,*lang; num = p; type = strtok(NULL,","); lang = strtok(NULL,","); if (num == NULL || lang == NULL || type == NULL) break; if (!strncmp(type,"VIDEO",5)) chanp->vpid = atoi(num); else if (!strncmp(type,"AUDIO",5)) { if (!chanp->apid) { chanp->apid = new APID [0]; apidp = chanp->apid; } else { apidp = chanp->apid; while (apidp->next) apidp = apidp->next; apidp->next = new APID[0]; apidp = apidp->next; } apidp->apid = atoi(num); if(strcmp(lang,"NONE")) strncpy(apidp->lang,lang,3); } } cp3 = cp3->next; }while (cp3 = cfile->findkey((char *)"pid",cp3)); cp2 = cp2->next; cp2 = cfile->findkey((char *)"program",cp2); chanp->next = new CHANNEL[0]; chanp->next->apid = NULL; chanp->next->next = NULL; chanp = chanp->next; } }while((cp = cp->next)); ///cp = cfile->findkey((char *)"transponder",cp))); jp = fchan; while(jp->next != chanp) jp = jp->next; jp->next = NULL; chanp = fchan; while(1) { printf("Channel: %s Audio:",chanp->name->data()); apidp = chanp->apid; while(apidp) { printf("-->%s<--",apidp->lang); apidp = apidp->next; } printf("\n"); if(chanp->next == NULL) break; printf("next %x\n",chanp->next); chanp = chanp->next; } }