From: Juanma Barranquero Date: Tue, 10 Apr 2012 14:16:05 +0000 (+0200) Subject: Record and display absolute path of DLLs loaded (bug#10424). X-Git-Tag: emacs-24.2.90~471^2~365^2~11 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2a8ce227d040e564ea6e7b4aecf1dcad5ca6e9c7;p=emacs.git Record and display absolute path of DLLs loaded (bug#10424). * lisp/misc.el (list-dynamic-libraries--loaded): New function. (list-dynamic-libraries--refresh): Use it. * src/w32.c (w32_delayed_load): Record the full path of the library being loaded. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fee5e34942c..9d019be9796 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-04-10 Juanma Barranquero + + * misc.el: Display absolute path of loaded DLLs (bug#10424). + (list-dynamic-libraries--loaded): New function. + (list-dynamic-libraries--refresh): Use it. + 2012-04-10 Nathan Weizenbaum * progmodes/python.el (python-fill-paragraph): Make diff --git a/lisp/misc.el b/lisp/misc.el index 4706c918db3..cb52ecbd36e 100644 --- a/lisp/misc.el +++ b/lisp/misc.el @@ -138,6 +138,19 @@ variation of `C-x M-c M-butterfly' from url `http://xkcd.com/378/'." (defvar list-dynamic-libraries--loaded-only-p) (make-variable-buffer-local 'list-dynamic-libraries--loaded-only-p) +(defun list-dynamic-libraries--loaded (from) + "Compute the \"Loaded from\" column. +Internal use only." + (if from + (let ((name (car from)) + (path (or (cdr from) ""))) + ;; This is a roundabout way to change the tooltip without + ;; having to replace the default printer function + (propertize name + 'display (propertize name + 'help-echo (concat "Loaded from: " path)))) + "")) + (defun list-dynamic-libraries--refresh () "Recompute the list of dynamic libraries. Internal use only." @@ -159,7 +172,7 @@ Internal use only." (when (or from (not list-dynamic-libraries--loaded-only-p)) (push (list id (vector (symbol-name id) - (or from "") + (list-dynamic-libraries--loaded from) (mapconcat 'identity (cdr lib) ", "))) tabulated-list-entries))))) diff --git a/src/ChangeLog b/src/ChangeLog index 18a3d4545e3..76a8353b853 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-04-10 Juanma Barranquero + + * w32.c (w32_delayed_load): Record the full path of the library + being loaded (bug#10424). + 2012-04-09 Glenn Morris * doc.c (Fsnarf_documentation): Check variables, functions are bound, diff --git a/src/w32.c b/src/w32.c index 3d3d33453c6..248a91463e8 100644 --- a/src/w32.c +++ b/src/w32.c @@ -5816,7 +5816,15 @@ w32_delayed_load (Lisp_Object libraries, Lisp_Object library_id) CHECK_STRING_CAR (dlls); if ((library_dll = LoadLibrary (SDATA (XCAR (dlls))))) { - found = XCAR (dlls); + char name[MAX_PATH]; + DWORD len; + + len = GetModuleFileNameA (library_dll, name, sizeof (name)); + found = Fcons (XCAR (dlls), + (len > 0) + /* Possibly truncated */ + ? make_specified_string (name, -1, len, 1) + : Qnil); break; } }