From c444d104cdc0250cd23b5013fee3e56000e23ae5 Mon Sep 17 00:00:00 2001
From: Jonathan McDowell <noodles@earth.li>
Date: Mon, 13 Aug 2007 14:51:12 +0000
Subject: [PATCH] Fix config structure references for dynamic backends This
 patch fixes the config structure when dynamic backends are used - the basic
 issue is that when the backend was loaded, it wouldn't (neccessarily) share
 the config structure with the program that called it (and had therefore read
 the config). Thanks to Brett Parker.

---
 Makefile.in | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index c3382a4..4d551bc 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -25,6 +25,7 @@ SRCS = armor.c parsekey.c merge.c keyid.c md5.c sha1.c main.c getcgi.c mem.c \
 	gpgwww.c onak-conf.c charfuncs.c sendsync.c log.c photoid.c \
 	wordlist.c cleankey.c cleanup.c keyarray.c \
 	$(foreach be,@BACKENDS@,keydb_$(be).c)
+PROGS_LDFLAGS_EXTRA =
 
 ifeq (x@KEYD@, xyes)
 PROGS += keyd
@@ -38,6 +39,7 @@ ifeq (x@DBTYPE@, xdynamic)
 LIBS += -ldl
 BACKENDS = $(foreach be,@BACKENDS@,libkeydb_$(be).so)
 PROGS += keyd
+PROGS_LDFLAGS_EXTRA = -rdynamic
 SRCS += keyd.c
 endif
 
@@ -47,7 +49,8 @@ all: .depend $(PROGS) testparse maxpath sixdegrees splitkeys onak.conf \
 	$(BACKENDS)
 
 keyd: keyd.o $(CORE_OBJS) keydb_$(DBTYPE).o
-	$(CC) $(LDFLAGS) -o keyd keyd.o $(CORE_OBJS) keydb_$(DBTYPE).o $(LIBS)
+	$(CC) $(LDFLAGS) $(PROGS_LDFLAGS_EXTRA) \
+		-o keyd keyd.o $(CORE_OBJS) keydb_$(DBTYPE).o $(LIBS)
 
 libkeydb_db4.so: keydb_db4.o
 	$(CC) -shared $(DB4LIBS) -o libkeydb_db4.so keydb_db4.o $(CORE_OBJS)
@@ -63,34 +66,39 @@ keydb_%.o: keydb_%.c
 
 splitkeys: splitkeys.o $(CORE_OBJS) $(KEYDB_OBJ)
 	$(CC) $(LDFLAGS) -o splitkeys splitkeys.o $(CORE_OBJS) $(KEYDB_OBJ) \
-		$(LIBS)
+		$(LIBS) $(PROGS_LDFLAGS_EXTRA)
 
 testparse: main.o $(OBJS)
-	$(CC) $(LDFLAGS) -o testparse main.o $(OBJS) $(LIBS)
+	$(CC) $(LDFLAGS) -o testparse main.o $(OBJS) $(LIBS) \
+		$(PROGS_LDFLAGS_EXTRA)
 
 maxpath: maxpath.o $(OBJS)
-	$(CC) $(LDFLAGS) -o maxpath maxpath.o $(OBJS) $(LIBS)
+	$(CC) $(LDFLAGS) -o maxpath maxpath.o $(OBJS) $(LIBS) \
+		$(PROGS_LDFLAGS_EXTRA)
 
 sixdegrees: sixdegrees.o $(OBJS)
-	$(CC) $(LDFLAGS) -o sixdegrees sixdegrees.o $(OBJS) $(LIBS)
+	$(CC) $(LDFLAGS) -o sixdegrees sixdegrees.o $(OBJS) $(LIBS) \
+		$(PROGS_LDFLAGS_EXTRA)
 
 stripkey: stripkey.o $(OBJS)
-	$(CC) $(LDFLAGS) -o stripkey stripkey.o $(OBJS) $(LIBS)
+	$(CC) $(LDFLAGS) -o stripkey stripkey.o $(OBJS) $(LIBS) \
+		$(PROGS_LDFLAGS_EXTRA)
 
 gpgwww: gpgwww.o $(OBJS)
-	$(CC) $(LDFLAGS) -o gpgwww gpgwww.o $(OBJS) $(LIBS)
+	$(CC) $(LDFLAGS) -o gpgwww gpgwww.o $(OBJS) $(LIBS) \
+		$(PROGS_LDFLAGS_EXTRA)
 
 lookup: lookup.o cleankey.o $(CORE_OBJS) $(KEYDB_OBJ)
 	$(CC) $(LDFLAGS) -o lookup lookup.o cleankey.o $(CORE_OBJS) \
-		$(KEYDB_OBJ) $(LIBS)
+		$(KEYDB_OBJ) $(LIBS) $(PROGS_LDFLAGS_EXTRA)
 
 add: add.o cleankey.o $(CORE_OBJS) $(KEYDB_OBJ)
 	$(CC) $(LDFLAGS) -o add add.o cleankey.o \
-		$(CORE_OBJS) $(KEYDB_OBJ) $(LIBS)
+		$(CORE_OBJS) $(KEYDB_OBJ) $(LIBS) $(PROGS_LDFLAGS_EXTRA)
 
 onak: onak.o cleankey.o $(CORE_OBJS) $(KEYDB_OBJ)
 	$(CC) $(LDFLAGS) -o onak onak.o cleankey.o \
-		$(CORE_OBJS) $(KEYDB_OBJ) $(LIBS)
+		$(CORE_OBJS) $(KEYDB_OBJ) $(LIBS) $(PROGS_LDFLAGS_EXTRA)
 
 onak-conf.o: onak-conf.c onak-conf.h
 	$(CC) $(CFLAGS) -DCONFIGFILE=\"@sysconfdir@/onak.conf\" -c onak-conf.c
-- 
2.39.5