Dan Kegel : winemenubuilder: Expand short paths, else menu items aren' t created for CSLU Toolkit.

Alexandre Julliard julliard at winehq.org
Mon Jan 7 16:24:56 CST 2008


Module: wine
Branch: master
Commit: 59b69a7236957a65a7a6af08b11a2237497a7d36
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=59b69a7236957a65a7a6af08b11a2237497a7d36

Author: Dan Kegel <dank at kegel.com>
Date:   Sun Jan  6 10:09:24 2008 -0800

winemenubuilder: Expand short paths, else menu items aren't created for CSLU Toolkit.

---

 programs/winemenubuilder/winemenubuilder.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index c253a85..4feafbe 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -695,7 +695,7 @@ static char *relative_path( LPCWSTR link, LPCWSTR locn )
  */
 static BOOL GetLinkLocation( LPCWSTR linkfile, DWORD *loc, char **relative )
 {
-    WCHAR filename[MAX_PATH], buffer[MAX_PATH];
+    WCHAR filename[MAX_PATH], shortfilename[MAX_PATH], buffer[MAX_PATH];
     DWORD len, i, r, filelen;
     const DWORD locations[] = {
         CSIDL_STARTUP, CSIDL_DESKTOPDIRECTORY, CSIDL_STARTMENU,
@@ -703,7 +703,16 @@ static BOOL GetLinkLocation( LPCWSTR linkfile, DWORD *loc, char **relative )
         CSIDL_COMMON_STARTMENU };
 
     WINE_TRACE("%s\n", wine_dbgstr_w(linkfile));
-    filelen=GetFullPathNameW( linkfile, MAX_PATH, filename, NULL );
+    filelen=GetFullPathNameW( linkfile, MAX_PATH, shortfilename, NULL );
+    if (filelen==0 || filelen>MAX_PATH)
+        return FALSE;
+
+    WINE_TRACE("%s\n", wine_dbgstr_w(shortfilename));
+
+    /* the CSLU Toolkit uses a short path name when creating .lnk files;
+     * expand or our hardcoded list won't match.
+     */
+    filelen=GetLongPathNameW(shortfilename, filename, MAX_PATH);
     if (filelen==0 || filelen>MAX_PATH)
         return FALSE;
 




More information about the wine-cvs mailing list