示例#1
0
  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");
  }
示例#2
0
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;
}