void operator() (const SIevent &e) { SIservices::iterator k=s->find(SIservice(e.service_id, e.original_network_id, e.transport_stream_id)); if(k!=s->end()) { char servicename[50]; strncpy(servicename, k->serviceName.c_str(), sizeof(servicename)-1); servicename[sizeof(servicename)-1]=0; removeControlCodes(servicename); printf("Service-Name: %s\n", servicename); // printf("Provider-Name: %s\n", k->providerName.c_str()); } e.dump(); // e.dumpSmall(); printf("\n"); }
int main(int argc, char **argv) { SIsectionsSDT sdtset; if(argc!=2) { fprintf(stderr, "Aufruf: %s Sendername\n", argv[0]); return 1; } tzset(); // TZ auswerten sdtset.readSections(); // Die for-Schleifen sind laestig, // Evtl. sollte man aus den sets maps machen, damit man den key einfacher aendern // kann und somit find() funktioniert for(SIsectionsSDT::iterator k=sdtset.begin(); k!=sdtset.end(); k++) for(SIservices::iterator ks=k->services().begin(); ks!=k->services().end(); ks++) { // Erst mal die Controlcodes entfernen // printf("Servicename: '%s'\n", ks->serviceName.c_str()); char servicename[50]; strncpy(servicename, ks->serviceName.c_str(), sizeof(servicename)-1); servicename[sizeof(servicename)-1]=0; removeControlCodes(servicename); // Jetz pruefen ob der Servicename der gewuenschte ist // printf("Servicename: '%s'\n", servicename); if(!strcmp(servicename, argv[1])) { // Event (serviceid) suchen SIevent evt=SIevent::readActualEvent(ks->service_id); if(evt.service_id != 0) evt.saveXML(stdout); // gefunden // evt.dump(); // gefunden else printf("Kein aktuelles EPG fuer %s gefunden!\n", argv[1]); return 0; } } return 1; }