int desc_len = ptr[1];
size_t size;
-#if 0 /* For an additional level of debug */
- dvb_log("descriptor type 0x%x, size %d",
- desc_type, desc_len);
- hexdump(parms, "dump: ", ptr + 2, desc_len);
-#endif
+ switch (parms->verbose) {
+ case 0:
+ case 1:
+ break;
+ case 2:
+ if (dvb_descriptors[desc_type].init)
+ break;
+ /* fall through */
+ case 3:
+ dvb_log("%sdescriptor %s type 0x%x, size %d",
+ dvb_descriptors[desc_type].init ? "" : "Not handled ",
+ dvb_descriptors[desc_type].name, desc_type, desc_len);
+ hexdump(parms, "content: ", ptr + 2, desc_len);
+ }
+
if (desc_len > section_length - 2) {
dvb_logerr("descriptor is too big");
return;
ext->extension_code = desc_type;
p++;
-#if 0 /* For an additional level of debug */
- dvb_log("extension descriptor type 0%x, size %d",
- desc_type, desc_len);
- hexdump(parms, "dump: ", p, desc_len);
-#endif
+ switch (parms->verbose) {
+ case 0:
+ case 1:
+ break;
+ case 2:
+ if (dvb_ext_descriptors[desc_type].init)
+ break;
+ /* fall through */
+ case 3:
+ dvb_log("%sextension descriptor %s type 0x%x, size %d",
+ dvb_ext_descriptors[desc_type].init ? "" : "Not handled ",
+ dvb_ext_descriptors[desc_type].name, desc_type, desc_len);
+ hexdump(parms, "content: ", p, desc_len);
+ }
init = dvb_ext_descriptors[desc_type].init;
if (init)
d->major_channel_number,
d->minor_channel_number);
- dvb_log("Found channel %s, name = %s",
- vchannel, channel);
+ if (parms->verbose)
+ dvb_log("Virtual channel %s, name = %s",
+ vchannel, channel);
rc = get_program_and_store(parms, *dvb_file, dvb_scan_handler,
d->program_number,
channel = calloc(strlen(desc->name) + 1, 1);
strcpy(channel, desc->name);
}
- dvb_log("Found service %s, provider %s, type %d",
+ dvb_log("Service %s, provider %s, type %d",
desc->name, desc->provider, desc->service_type);
break;
}
if (!channel)
asprintf(&channel, "#%d", service->service_id);
- dvb_log("Storing as channel %s", channel);
+ if (parms->verbose)
+ dvb_log("Storing as channel %s", channel);
vchannel = dvb_vchannel(dvb_scan_handler->nit, service->service_id);
rc = get_program_and_store(parms, *dvb_file, dvb_scan_handler,
return -1;
}
- dvb_log("Parsing table ID %d, program ID %d", tid, pid);
+ if (parms->verbose)
+ dvb_log("Parsing table ID %d, program ID %d", tid, pid);
buf = malloc(DVB_MAX_PAYLOAD_PACKET_SIZE);
if (!buf)
tbl = malloc(dvb_table_initializers[tid].size);
else
tbl = malloc(MAX_TABLE_SIZE);
- if (!tbl)
- dvb_perror("Out of memory");
+ if (!tbl) {
+ dvb_logerr("Out of memory");
+ free(buf);
+ dvb_dmx_stop(dmx_fd);
+ return -4;
+ }
}
if (dvb_table_initializers[tid].init) {
dvb_table_initializers[tid].init(parms, buf, buf_length, tbl, &table_length);
- if (!tbl)
+ if (!tbl) {
dvb_perror("Out of memory");
+ free(buf);
+ dvb_dmx_stop(dmx_fd);
+ return -4;
+ }
if (!dvb_table_initializers[tid].size)
tbl = realloc(tbl, table_length);
} else
(uint8_t **) &dvb_scan_handler->pat,
pat_pmt_time * timeout_multiply);
if (rc < 0) {
- fprintf(stderr, "error while waiting for PAT table\n");
+ dvb_logerr("error while waiting for PAT table");
dvb_scan_free_handler_table(dvb_scan_handler);
return NULL;
}
(uint8_t **)&dvb_scan_handler->vct,
vct_time * timeout_multiply);
if (rc < 0)
- fprintf(stderr, "error while waiting for VCT table\n");
+ dvb_logerr("error while waiting for VCT table");
else if (verbose)
dvb_table_vct_print(parms, dvb_scan_handler->vct);
}
dvb_scan_handler->program[num_pmt].pat_pgm = program;
if (!program->service_id) {
- dvb_log("Network PID: 0x%02x", program->pid);
+ if (verbose)
+ dvb_log("Network PID: 0x%02x", program->pid);
num_pmt++;
continue;
}
-
- dvb_log("Program ID %d", program->pid);
+ if (verbose)
+ dvb_log("Program ID %d", program->pid);
rc = dvb_read_section(parms, dmx_fd,
DVB_TABLE_PMT, program->pid,
(uint8_t **)&dvb_scan_handler->program[num_pmt].pmt,
pat_pmt_time * timeout_multiply);
if (rc < 0) {
- fprintf(stderr,
- "error while reading the PMT table for service 0x%04x\n",
- program->service_id);
+ dvb_logerr("error while reading the PMT table for service 0x%04x",
+ program->service_id);
dvb_scan_handler->program[num_pmt].pmt = NULL;
} else {
if (verbose)
(uint8_t **)&dvb_scan_handler->nit,
nit_time * timeout_multiply);
if (rc < 0)
- fprintf(stderr, "error while reading the NIT table\n");
+ dvb_logerr("error while reading the NIT table");
else if (verbose)
dvb_table_nit_print(parms, dvb_scan_handler->nit);
(uint8_t **)&dvb_scan_handler->sdt,
sdt_time * timeout_multiply);
if (rc < 0)
- fprintf(stderr, "error while reading the SDT table\n");
+ dvb_logerr("error while reading the SDT table");
else if (verbose)
dvb_table_sdt_print(parms, dvb_scan_handler->sdt);
}
/* NIT/SDT other tables */
if (other_nit) {
if (verbose)
- printf("Parsing other NIT/SDT\n");
+ dvb_log("Parsing other NIT/SDT");
rc = dvb_read_section(parms, dmx_fd,
DVB_TABLE_NIT2, DVB_TABLE_NIT_PID,
(uint8_t **)&dvb_scan_handler->nit,
nit_time * timeout_multiply);
if (rc < 0)
- fprintf(stderr, "error while reading the NIT table\n");
+ dvb_logerr("error while reading the NIT table");
else if (verbose)
dvb_table_nit_print(parms, dvb_scan_handler->nit);
(uint8_t **)&dvb_scan_handler->sdt,
sdt_time * timeout_multiply);
if (rc < 0)
- fprintf(stderr, "error while reading the SDT table\n");
+ dvb_logerr("error while reading the SDT table");
else if (verbose)
dvb_table_sdt_print(parms, dvb_scan_handler->sdt);
}