delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/2001/03/25/17:49:17

Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-developers-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin-developers/>
List-Post: <mailto:cygwin-developers AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-developers-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-developers-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com
Message-ID: <3ABE75C1.D983224A@gmx.de>
Date: Mon, 26 Mar 2001 00:48:33 +0200
From: Reinhard Nissl <rnissl AT gmx DOT de>
X-Mailer: Mozilla 4.76 [en] (Windows NT 5.0; U)
X-Accept-Language: de,en,fr
MIME-Version: 1.0
To: cygwin-developers AT cygwin DOT com
Subject: get_full_path_of_dll: lookup application directory for a DLL first
References: <3ABE54D9 DOT DF4E4EA0 AT gmx DOT de> <20010325155740 DOT A11828 AT redhat DOT com>

This is a multi-part message in MIME format.
--------------D3ADAD6D2DD67A4C838937DB
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi,

attached is a patch for get_full_path_of_dll(), to lookup the application
directory for a DLL first. The documentation of get_full_path_of_dll() says,
it should behave like LoadLibrary(), but it did never lookup the application
directory. I'm not shure, if this patch brakes with any cygwin philosophy.

BTW: The patch is against the current cvs sources.

Motivation:
I recognized this lack of functionality, while playing with cdrtools-1.10a17
on Win2K and WinNT. cdrecord wants to load wnaspi32.dll and reported an error,
when the library was not in one of the directories, that were searched by
get_full_path_of_dll().

As I share cdrtools with other people on our local network, I'd like to put
wnaspi32.dll into the directory, where cdrecord.exe resides. After my patch,
cdrecord can be used easily without the need to configure anyones system in a
certain way (setup environment variables, copy libraries, change current
directory, etc.).

Bye.
--
Dipl.-Inform. (FH) Reinhard Nissl
mailto:rnissl AT gmx DOT de
--------------D3ADAD6D2DD67A4C838937DB
Content-Type: text/plain; charset=us-ascii;
 name="dlfcn.cc-patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="dlfcn.cc-patch"

--- dlfcn.cc-orig	Sun Mar 18 03:34:05 2001
+++ dlfcn.cc	Mon Mar 26 00:32:52 2001
@@ -102,6 +102,26 @@ get_full_path_of_dll (const char* str)
   if (isabspath (str))
     ret = name;
 
+  /* Lookup application directory first (LoadLibrary() behaviour). */
+  if (!ret)
+    {
+      /* Get the absolute file name path of the executeable. */
+      if (GetModuleFileName (NULL, buf, MAX_PATH) == 0)
+	small_printf ("WARNING: get_full_path_of_dll can't get module file name win32 %E\n");
+      else
+	{
+	  /* To get the application directory, strip off the file name. */
+	  char *p = strrchr (buf, '\\');
+	  if (!p)
+	    small_printf ("WARNING: get_full_path_of_dll can't extract application directory from module file name\n");
+	  else
+	    {
+	      *p = '\0';
+	      ret = check_access (buf, name);
+	    }
+	}
+    }
+
   /* current directory */
   if (!ret)
     {

--------------D3ADAD6D2DD67A4C838937DB
Content-Type: text/plain; charset=us-ascii;
 name="ChangeLog"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="ChangeLog"

2001-03-26 Reinhard Nissl <rnissl AT gmx DOT de>

	* dlfcn.cc (get_full_path_of_dll): Lookup application directory for DLL
	first (LoadLibrary() behaviour).


--------------D3ADAD6D2DD67A4C838937DB--


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019