$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 */
