utils/dvb: use standard "channels.conf" file
authorMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 4 Jan 2012 00:03:59 +0000 (22:03 -0200)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 7 Jan 2012 13:12:15 +0000 (11:12 -0200)
Instead of using ~/.tzap/channels.conf file, uses a standard
channels file, without the PID's. Also, pass it as a parameter,
just like dvb-apps "scan" tool.

After this patch, the tool is working fine for ISDB-T. It
will likely work fine also for DVB-T.

Additional changes are required for DVB-C, in order to proccess
the NIT/SDT tables there, and for DVB-S, due to satellite
specifics.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
utils/dvb/dvbv5-scan.c

index 61f854cc4a32786cf010b0aee5911eb126368044..ef6e07d30bc2d457675b54396c8c73c3782492a9 100644 (file)
@@ -46,7 +46,7 @@
 
 static char DEMUX_DEV[80];
 static char DVR_DEV[80];
-static int silent = 0;
+static int verbose = 0;
 #define CHANNEL_FILE "channels.conf"
 
 #define ERROR(x...)                                                     \
@@ -129,7 +129,10 @@ static int run_scan(const char *fname, struct dvb_v5_fe_parms *parms)
                return -1;
        }
 
-       dvb_file = parse_format_oneline(fname, ":", sys, zap_formats);
+       dvb_file = parse_format_oneline(fname, " \n", SYS_UNDEFINED,
+                                       channel_formats);
+
+//     dvb_file = parse_format_oneline(fname, ":", sys, zap_formats);
        if (!dvb_file)
                return -2;
 
@@ -191,7 +194,7 @@ static int run_scan(const char *fname, struct dvb_v5_fe_parms *parms)
                if (rc < 0)
                        continue;
 
-               dvb_desc = get_dvb_ts_tables(DEMUX_DEV, 0);
+               dvb_desc = get_dvb_ts_tables(DEMUX_DEV, verbose);
 
                for (i = 0; i < dvb_desc->sdt_table.service_table_len; i++) {
                        struct service_table *service_table = &dvb_desc->sdt_table.service_table[i];
@@ -213,20 +216,17 @@ static int run_scan(const char *fname, struct dvb_v5_fe_parms *parms)
 
 static char *usage =
     "usage:\n"
-    "       dvbzap [options] <channel_name>\n"
+    "       dvbzap [options] <channels.conf>\n"
     "         zap to channel channel_name (case insensitive)\n"
     "     -a number : use given adapter (default 0)\n"
     "     -f number : use given frontend (default 0)\n"
     "     -d number : use given demux (default 0)\n"
-    "     -c file   : read channels list from 'file'\n"
-    "     -s        : only print summary\n"
-    "     -S        : run silently (no output)\n"
+    "     -v        : be (very) verbose\n"
     "     -o file   : output filename (use -o - for stdout)\n"
     "     -h -?     : display this help and exit\n";
 
 int main(int argc, char **argv)
 {
-       char *homedir = getenv("HOME");
        char *confname = NULL;
        int adapter = 0, frontend = 0, demux = 0;
        int opt;
@@ -243,14 +243,8 @@ int main(int argc, char **argv)
                case 'd':
                        demux = strtoul(optarg, NULL, 0);
                        break;
-               case 'c':
-                       confname = optarg;
-                       break;
-               case 's':
-                       silent = 1;
-                       break;
-               case 'S':
-                       silent = 2;
+               case 'v':
+                       verbose++;
                        break;
                case '?':
                case 'h':
@@ -266,23 +260,18 @@ int main(int argc, char **argv)
        snprintf(DVR_DEV, sizeof(DVR_DEV),
                 "/dev/dvb/adapter%i/dvr%i", adapter, demux);
 
-       if (silent < 2)
+       if (verbose)
                fprintf(stderr, "using demux '%s'\n", DEMUX_DEV);
 
+       if (optind < argc)
+               confname = argv[optind];
+
        if (!confname) {
-               int len = strlen(homedir) + strlen(CHANNEL_FILE) + 18;
-               if (!homedir)
-                       ERROR("$HOME not set");
-               confname = malloc(len);
-               snprintf(confname, len, "%s/.tzap/%i/%s",
-                        homedir, adapter, CHANNEL_FILE);
-               if (access(confname, R_OK))
-                       snprintf(confname, len, "%s/.tzap/%s",
-                                homedir, CHANNEL_FILE);
+               fprintf(stderr, usage, argv[0]);
+               return -1;
        }
-       printf("reading channels from file '%s'\n", confname);
 
-       parms = dvb_fe_open(adapter, frontend, !silent, 0);
+       parms = dvb_fe_open(adapter, frontend, verbose, 0);
 
        if (run_scan(confname, parms))
                return -1;