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