Johannes Stezenbach wrote:
Guido Draheim wrote:
here is a patch that will make `dvbscan` to list the series of initial-data-files being installed in the system. It works on all of /etc/dvb/dvb-?/* /usr/share/dvb/dvb-?/* and of course that /usr/share/doc/packages/dvb/dvb-?/* ... it may help user to get a clue (it's shown when no cmdline arguments are given).
Btw, I was thinking over to give this function its own getopt but hey "-l" is taken :-/ ... and what makes me wonder, why is there "q:" while the usagedoc says it does not require an argument (i.e. --quiet)?
Hm, that's a bug.
+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...
:-) Rejoice, because it can be done!
We introduce a DEFS make-var into all Makefiles. A packager (or user for local installation) can now override _globally_ that DEFS make-var and see all .c.o pick them up during compilation. That allows to write just a `make "DEFS=-DDATADIR=%_datadir -DSYSCONFDIR=%_sysconfdir"` and see all the binaries pick them up.
In fact, it is even simpler since the patch pushes some default DEFS in each Makefile such that one only needs to override the make-vars for `make -Ddatadir=%_datadir -Dsysconfdir=%_sysconfdir`. And out of sheer luck, I am doing that anyway now in the rpm spec and most probably all other packagers will pick up the same approach.
Now we can modify the source-files to take advantage of these compile flag DEFS, by using the following construction in the source: #ifndef DATADIR #define DATADIR "/usr/local/share" #endif
Example:
In the case of 'scan' initial-config files, we see this:
(a) rpm .spec contains
make datadir=%_datadir
(b) scan/Makefile contains
DEFS = -DDATADIR=$(datadir)
datadir = /usr/local/share
(c) scan/scan.c contains
#ifndef DATADIR
#define DATADIR "/usr/local/share"
#endif
[...]
const char* initialconfigdir = DATADIR "/dvb";patch attached, (w/o scan.c changes, goes separate) -- 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: test/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/test/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- test/Makefile 14 Feb 2004 22:04:51 -0000 1.3 +++ test/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,7 +1,7 @@ # Makefile for Linux DVB API Version 3 test programs CC = gcc -CFLAGS = -g -O2 -W -Wall +CFLAGS = -g -O2 -W -Wall $(DEFS) CPPFLAGS = -I../include TARGETS = \ Index: util/av7110_loadkeys/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/util/av7110_loadkeys/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- util/av7110_loadkeys/Makefile 15 Feb 2004 00:31:08 -0000 1.3 +++ util/av7110_loadkeys/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,5 +1,6 @@ CC = gcc -CFLAGS = -g -Wall -O2 +CFLAGS = -g -Wall -O2 $(DEFS) +DEFS = -DDATADIR=$(datadir) bindir = /usr/local/bin datadir = /usr/local/share Index: util/dvbdate/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/util/dvbdate/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- util/dvbdate/Makefile 14 Feb 2004 22:04:52 -0000 1.3 +++ util/dvbdate/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,6 +1,6 @@ CC = gcc -CFLAGS = -g -O2 -Wall +CFLAGS = -g -O2 -Wall $(DEFS) CPPFLAGS= -MD -I../../include LFLAGS = Index: util/dvbnet/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/util/dvbnet/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- util/dvbnet/Makefile 14 Feb 2004 22:04:52 -0000 1.3 +++ util/dvbnet/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,8 +1,9 @@ CC = gcc -CFLAGS = -g -O2 -Wall +CFLAGS = -g -O2 -Wall $(DEFS) CPPFLAGS= -MD -I. -I../../include LFLAGS = +DEFS = -DSYSCONFDIR=$(sysconfdir) bindir = /usr/local/bin sysconfdir = /usr/local/etc Index: util/dvbtraffic/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/util/dvbtraffic/Makefile,v retrieving revision 1.4 diff -u -r1.4 Makefile --- util/dvbtraffic/Makefile 14 Feb 2004 22:04:52 -0000 1.4 +++ util/dvbtraffic/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,4 +1,4 @@ -CFLAGS = -g -O2 -Wall +CFLAGS = -g -O2 -Wall $(DEFS) CPPFLAGS = -MD -I../../include bindir = /usr/local/bin Index: util/lib/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/util/lib/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- util/lib/Makefile 14 Feb 2004 22:04:52 -0000 1.3 +++ util/lib/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,6 +1,6 @@ CC = gcc -CFLAGS = -g -Wall -O2 +CFLAGS = -g -Wall -O2 $(DEFS) CPPFLAGS = -MD -I../../include -I. bindir = /usr/local/bin Index: util/scan/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/util/scan/Makefile,v retrieving revision 1.5 diff -u -r1.5 Makefile --- util/scan/Makefile 15 Feb 2004 00:31:08 -0000 1.5 +++ util/scan/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,8 +1,9 @@ CC = gcc -CFLAGS = -g -Wall -O2 +CFLAGS = -g -Wall -O2 $(DEFS) CPPFLAGS = -MD -I../../include -I../lib LFLAGS = -g -Wall +DEFS = -DDATADIR=$(datadir) bindir = /usr/local/bin datadir = /usr/local/share Index: util/szap/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/util/szap/Makefile,v retrieving revision 1.4 diff -u -r1.4 Makefile --- util/szap/Makefile 15 Feb 2004 00:31:08 -0000 1.4 +++ util/szap/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,8 +1,9 @@ CC = gcc -CFLAGS = -Wall -g -O2 +CFLAGS = -Wall -g -O2 $(DEFS) CPPFLAGS = -MD -I../../include -I../lib LFLAGS = -Wall -g -O2 RM = rm -f +DEFS = -DDATADIR=$(datadir) bindir = /usr/local/bin datadir = /usr/local/share Index: util/ttusb_dec_reset/Makefile =================================================================== RCS file: /cvs/linuxtv/dvb-apps/util/ttusb_dec_reset/Makefile,v retrieving revision 1.2 diff -u -r1.2 Makefile --- util/ttusb_dec_reset/Makefile 14 Feb 2004 22:04:52 -0000 1.2 +++ util/ttusb_dec_reset/Makefile 15 Feb 2004 07:23:30 -0000 @@ -1,6 +1,6 @@ CC = gcc RM = rm -f -CFLAGS = -g -Wall -O2 +CFLAGS = -g -Wall -O2 $(DEFS) LFLAGS = -g -Wall LDFLAGS = -lusb bindir = /usr/local/bin
