files/directory.c use long names, not 8.3 names in environment --- juergen.schmied@debitel.net
Index: wine/files/directory.c =================================================================== RCS file: /home/wine/wine/files/directory.c,v retrieving revision 1.45 diff -d -u -r1.45 directory.c --- wine/files/directory.c 9 Mar 2002 23:50:37 -0000 1.45 +++ wine/files/directory.c 7 May 2002 18:58:36 -0000 @@ -59,7 +59,7 @@ * Get a path name from the wine.ini file and make sure it is valid. */ static int DIR_GetPath( const char *keyname, const char *defval, - DOS_FULL_NAME *full_name, BOOL warn ) + DOS_FULL_NAME *full_name, char * longname, BOOL warn ) { char path[MAX_PATHNAME_LEN]; BY_HANDLE_FILE_INFORMATION info; @@ -68,7 +68,8 @@ PROFILE_GetWineIniString( "wine", keyname, defval, path, sizeof(path) ); if (!DOSFS_GetFullName( path, TRUE, full_name ) || (!FILE_Stat( full_name->long_name, &info ) && (mess=strerror(errno)))|| - (!(info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (mess="not a directory"))) + (!(info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (mess="not a directory")) || + (!(GetLongPathNameA(full_name->short_name, longname, MAX_PATHNAME_LEN))) ) { if (warn) MESSAGE("Invalid path '%s' for %s directory: %s\n", path, keyname, mess); @@ -84,6 +85,7 @@ int DIR_Init(void) { char path[MAX_PATHNAME_LEN]; + char longpath[MAX_PATHNAME_LEN]; DOS_FULL_NAME tmp_dir, profile_dir; int drive; const char *cwd; @@ -106,9 +108,9 @@ DRIVE_Chdir( drive, cwd ); } - if (!(DIR_GetPath( "windows", "c:\\windows", &DIR_Windows, TRUE )) || - !(DIR_GetPath( "system", "c:\\windows\\system", &DIR_System, TRUE )) || - !(DIR_GetPath( "temp", "c:\\windows", &tmp_dir, TRUE ))) + if (!(DIR_GetPath( "windows", "c:\\windows", &DIR_Windows, longpath, TRUE )) || + !(DIR_GetPath( "system", "c:\\windows\\system", &DIR_System, longpath, TRUE )) || + !(DIR_GetPath( "temp", "c:\\windows", &tmp_dir, longpath, TRUE ))) { PROFILE_UsageWineIni(); return 0; @@ -163,10 +165,10 @@ TRACE("Cwd = %c:\\%s\n", 'A' + drive, DRIVE_GetDosCwd( drive ) ); - if (DIR_GetPath( "profile", "", &profile_dir, FALSE )) + if (DIR_GetPath( "profile", "", &profile_dir, longpath, FALSE )) { - TRACE("USERPROFILE= %s\n", profile_dir.short_name ); - SetEnvironmentVariableA( "USERPROFILE", profile_dir.short_name ); + TRACE("USERPROFILE= %s\n", longpath ); + SetEnvironmentVariableA( "USERPROFILE", longpath ); } TRACE("SYSTEMROOT = %s\n", DIR_Windows.short_name ); @@ -944,3 +946,6 @@ TRACE("Returning %d\n", strlen(res) + 3 ); return strlen(res) + 3; } + + +