[programs/winetest] Extend PATH if we have dll's that only come with .NET (Try2)
Paul Vriens
paul.vriens.wine at gmail.com
Wed Feb 25 04:54:39 CST 2009
Nicolas Le Cam wrote:
> Hi Paul, minor comments :
>
>> +static void append_path( const char *path)
>> +{
>> + char *newpath;
>> +
>> + newpath = xmalloc(strlen(curpath) + 1 + strlen(path) + 1);
>> + strcpy(newpath, curpath);
>> + strcat(newpath, ";");
>> + strcat(newpath, path);
>> + SetEnvironmentVariableA("PATH", newpath);
>> +
>> + free(newpath);
>> +}
> Perhaps use newpath = strmake( NULL, "%s;%s", curpath, path); I don't
> know. (I used it in a similar patch that I was making yesterday)
>
Just a matter of preference I guess.
>> if (!dll && pLoadLibraryShim)
>> {
>> MultiByteToWideChar(CP_ACP, 0, dllname, -1, dllnameW, MAX_PATH);
>> - if (FAILED( pLoadLibraryShim(dllnameW, NULL, NULL, &dll) )) dll =
>> 0;
>> + if (FAILED( pLoadLibraryShim(dllnameW, NULL, NULL, &dll) ))
>> + dll = 0;
>> + else
>> + {
>> + char dllpath[MAX_PATH];
> dllpath should be declared at start of the function IMHO.
>
It's only needed in the else branch.
>> +
>> + /* We have a dll that cannot be found through LoadLibraryExA.
>> This
>> + * is the case for .NET provided dll's. We will add the
>> directory
>> + * where the dll resides to the PATH variable when dealing with
>> + * the tests for this dll.
>> + */
>> + GetModuleFileNameA(dll, dllpath, MAX_PATH);
>> + *strrchr(dllpath, '\\') = '\0';
>> + wine_tests[nr_of_files].maindllpath = xmalloc(strlen(dllpath) +
>> 1);
>> + strcpy(wine_tests[nr_of_files].maindllpath, dllpath);
>> + }
> This won't work if test needs more than one dll found through LoadLibraryShim
>
Not sure what you mean as LoadLibraryShim will only return 1 dll.
>> }
>> if (!dll) {
>> xprintf (" %s=dll is missing\n", dllname);
>> @@ -578,6 +619,12 @@ run_tests (char *logname)
>> DWORD strsize;
>> SECURITY_ATTRIBUTES sa;
>> char tmppath[MAX_PATH], tempdir[MAX_PATH+4];
>> + DWORD needed;
>> +
>> + /* Get the current PATH only once */
>> + needed = GetEnvironmentVariableA("PATH", NULL, 0);
>> + curpath = xmalloc(needed);
>> + GetEnvironmentVariable("PATH", curpath, needed);
> This should be GetEnvironmentVariableA.
>
Well it would work anyway but for consistency sake I will change that.
--
Cheers,
Paul.
More information about the wine-devel
mailing list