summaryrefslogtreecommitdiff
path: root/misc/dync/patches/patch-ab
blob: d5112f93e9ceec28c779ccfaa92afdd6786b89a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$NetBSD: patch-ab,v 1.2 2004/10/08 23:33:35 kristerw Exp $

--- dync.c.orig	Thu Aug 13 17:21:13 1998
+++ dync.c	Sat Oct  9 01:21:37 2004
@@ -147,7 +147,7 @@
 {
 	char	cmd[MaxCmdLen];
 
-	return (asystem(cmd, sizeof(cmd), "%s %s | %s ELF", FILE_CMD, prog, GREP_CMD) == 0);
+	return (asystem(cmd, sizeof(cmd), "%s %s | %s ELF > /dev/null 2>&1", FILE_CMD, prog, GREP_CMD) == 0);
 }
 
 /* print usage message and die */
@@ -166,8 +166,9 @@
 main(int argc, char **argv)
 {
 	char	mainname[MaxFileNameLen];
-	char	basename[MaxFileNameLen];
+	char	basename[MaxFileNameLen] = {0, };
 	char	libname[MaxFileNameLen];
+	char	fulllibname[MaxFileNameLen];
 	char	file[MaxFileNameLen];
 	char	cflags[MaxCmdLen];
 	char	cmd[MaxCmdLen];
@@ -261,9 +262,15 @@
 		}
 	}
 
+	/* create absolute path to the shared lib */
+	if (getcwd(fulllibname, sizeof(fulllibname)) == NULL)
+		die("can't get working directory pathname");
+	strncat(fulllibname, "/", sizeof(fulllibname) - 1);
+	strncat(fulllibname, libname, sizeof(fulllibname) - 1);
+
 	/* get a handle on the shared lib */
-	if ((handle = dlopen(libname, DL_LAZY)) == (void *) NULL) {
-		die("can't dlopen `%s'", libname);
+	if ((handle = dlopen(fulllibname, DL_LAZY)) == (void *) NULL) {
+		die("can't dlopen `%s'", fulllibname);
 	}
 
 	/* remove the object file and shared object lib */