Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: linuxtv-dvb-apps-showconfigs.patch




Johannes Stezenbach wrote:

+static void show_existing_tuning_data_files(void)
+{
+#ifndef PREFIX
+#define PREFIX "/usr/local"
+#endif
+ static const char* prefixlist[] = { PREFIX"/share/dvb", + "/usr/share/dvb", "/etc/dvb", + "/usr/share/doc/packages/dvb", 0 };

Hm, I don't like that.

The correct way to do it would be to have a configure script,
and have the executable look in the configured location.

But I don't like that either :-(

Sigh...

And here is an updated `showconfigs` patch, picking up DATADIR defs as
described earlier. Still it checks in multiple paths.

cheers,
-- guido                                  http://google.de/search?q=guidod
GCS/E/S/P C++/++++$ ULHS L++w- N++@ s+:a d(+-) r+@>+++ y++ 5++X- (geekcode)
Index: util/scan/scan.c
===================================================================
RCS file: /cvs/linuxtv/dvb-apps/util/scan/scan.c,v
retrieving revision 1.7
diff -u -r1.7 scan.c
--- util/scan/scan.c	15 Feb 2004 00:46:10 -0000	1.7
+++ util/scan/scan.c	15 Feb 2004 07:39:40 -0000
@@ -22,6 +22,7 @@
 #include <errno.h>
 #include <signal.h>
 #include <assert.h>
+#include <glob.h>
 
 #include <linux/dvb/frontend.h>
 #include <linux/dvb/dmx.h>
@@ -1714,6 +1715,29 @@
 	info("Done.\n");
 }
 
+static void show_existing_tuning_data_files(void)
+{
+#ifndef DATADIR
+#define DATADIR "/usr/local/share"
+#endif
+	static const char* prefixlist[] = { DATADIR "/dvb", "/etc/dvb", 
+					    DATADIR "/doc/packages/dvb", 0 };
+	int i;
+	const char **prefix;
+	fprintf(stderr, "initial tuning data files:\n");
+	for (prefix = prefixlist; *prefix; prefix++) {
+		glob_t globbuf = {0};
+		char* globspec = malloc (strlen(*prefix)+9);
+		strcpy (globspec, *prefix); strcat (globspec, "/dvb-?/*");
+		if (! glob (globspec, 0, 0, &globbuf)) {
+			for (i=0; i < globbuf.gl_pathc; i++) 
+				fprintf(stderr, " file: %s\n", globbuf.gl_pathv[i]);
+		}
+		free (globspec);
+		globfree (&globbuf);
+	}
+}
+
 static void handle_sigint(int sig)
 {
 	error("interrupted by SIGINT, dumping partial result...\n");
@@ -1750,17 +1774,21 @@
 	"	-u      UK DVB-T Freeview channel numbering for VDR\n";
 
 void
-bad_usage(char *pname, int prlnb)
+bad_usage(char *pname, int problem)
 {
-int i;
-struct lnb_types_st *lnbp;
-char **cp;
+	int i;
+	struct lnb_types_st *lnbp;
+	char **cp;
 
-	if (!prlnb) {
+	switch (problem) {
+	default:
+	case 0:
 		fprintf (stderr, usage, pname);
-	} else {
+		break;
+	case 1:
 		i = 0;
-		fprintf(stderr, "-l <lnb-type> or -l low[,high[,switch]] in Mhz\nwhere <lnb-type> is:\n");
+		fprintf(stderr, "-l <lnb-type> or -l low[,high[,switch]] in Mhz\n"
+			"where <lnb-type> is:\n");
 		while(NULL != (lnbp = lnb_enum(i))) {
 			fprintf (stderr, "%s\n", lnbp->name);
 			for (cp = lnbp->desc; *cp ; cp++) {
@@ -1768,6 +1796,10 @@
 			}
 			i++;
 		}
+		break;
+	case 2:
+		show_existing_tuning_data_files();
+		fprintf (stderr, usage, pname);
 	}
 }
 
@@ -1780,6 +1812,11 @@
 	int fe_open_mode;
 	const char *initial = NULL;
 
+	if (argc <= 1) {
+	    bad_usage(argv[0], 2);
+	    return -1;
+	}
+
 	/* start with default lnb type */
 	lnb_type = *lnb_enum(0);
 	while ((opt = getopt(argc, argv, "5cnpa:f:d:s:o:x:e:t:i:l:vqu")) != -1) {

Home | Main Index | Thread Index