@@ -37,7 +37,7 @@ static void print_error(LPCWSTR prefix, DWORD error_number)
37
37
LocalFree ((HLOCAL )buffer );
38
38
}
39
39
40
- static void setup_environment (LPWSTR exepath , int full_path )
40
+ static void setup_environment (LPWSTR top_level_path , int full_path )
41
41
{
42
42
WCHAR msystem [64 ];
43
43
LPWSTR path2 = NULL ;
@@ -90,22 +90,22 @@ static void setup_environment(LPWSTR exepath, int full_path)
90
90
len = GetEnvironmentVariable (L"PATH" , NULL , 0 );
91
91
len = sizeof (WCHAR ) * (len + 2 * MAX_PATH );
92
92
path2 = (LPWSTR )malloc (len );
93
- wcscpy (path2 , exepath );
93
+ wcscpy (path2 , top_level_path );
94
94
if (!full_path )
95
95
PathAppend (path2 , L"cmd;" );
96
96
else {
97
97
PathAppend (path2 , msystem_bin );
98
98
if (_waccess (path2 , 0 ) != -1 ) {
99
99
/* We are in an MSys2-based setup */
100
100
wcscat (path2 , L";" );
101
- wcscat (path2 , exepath );
101
+ wcscat (path2 , top_level_path );
102
102
PathAppend (path2 , L"usr\\bin;" );
103
103
}
104
104
else {
105
105
/* Fall back to MSys1 paths */
106
- wcscpy (path2 , exepath );
106
+ wcscpy (path2 , top_level_path );
107
107
PathAppend (path2 , L"bin;" );
108
- wcscat (path2 , exepath );
108
+ wcscat (path2 , top_level_path );
109
109
PathAppend (path2 , L"mingw\\bin;" );
110
110
}
111
111
}
@@ -386,7 +386,7 @@ int main(void)
386
386
int r = 1 , wait = 1 , prefix_args_len = -1 , needs_env_setup = 1 ,
387
387
is_git_command = 1 , full_path = 1 , skip_arguments = 0 ,
388
388
allocate_console = 0 , show_console = 0 ;
389
- WCHAR exepath [MAX_PATH ], exe [MAX_PATH ];
389
+ WCHAR exepath [MAX_PATH ], exe [MAX_PATH ], top_level_path [ MAX_PATH ] ;
390
390
LPWSTR cmd = NULL , exep = exe , prefix_args = NULL , basename ;
391
391
LPWSTR working_directory = NULL ;
392
392
@@ -400,6 +400,7 @@ int main(void)
400
400
fwprintf (stderr , L"Invalid executable path: %s\n" , exepath );
401
401
ExitProcess (1 );
402
402
}
403
+ wcscpy (top_level_path , exepath );
403
404
basename = exepath + wcslen (exepath ) + 1 ;
404
405
if (configure_via_resource (basename , exepath , exep ,
405
406
& prefix_args , & prefix_args_len ,
@@ -412,25 +413,27 @@ int main(void)
412
413
static WCHAR buffer [BUFSIZE ];
413
414
wait = 0 ;
414
415
allocate_console = 1 ;
415
- if (!PathRemoveFileSpec (exepath )) {
416
+ if (!PathRemoveFileSpec (top_level_path )) {
416
417
fwprintf (stderr ,
417
- L"Invalid executable path: %s\n" , exepath );
418
+ L"Invalid executable path: %s\n" ,
419
+ top_level_path );
418
420
ExitProcess (1 );
419
421
}
420
422
421
423
/* set the default exe module */
422
- wcscpy (exe , exepath );
424
+ wcscpy (exe , top_level_path );
423
425
PathAppend (exe , msystem_bin );
424
426
PathAppend (exe , L"wish.exe" );
425
427
if (_waccess (exe , 0 ) != -1 )
426
428
swprintf (buffer , BUFSIZE ,
427
429
L"\"%s\\%.*s\\libexec\\git-core\"" ,
428
430
exepath , wcslen (msystem_bin ) - 4 , msystem_bin );
429
431
else {
430
- wcscpy (exe , exepath );
432
+ wcscpy (exe , top_level_path );
431
433
PathAppend (exe , L"mingw\\bin\\wish.exe" );
432
434
swprintf (buffer , BUFSIZE ,
433
- L"\"%s\\mingw\\libexec\\git-core\"" , exepath );
435
+ L"\"%s\\mingw\\libexec\\git-core\"" ,
436
+ top_level_path );
434
437
}
435
438
PathAppend (buffer , L"git-gui" );
436
439
prefix_args = buffer ;
@@ -446,43 +449,45 @@ int main(void)
446
449
prefix_args_len -= 4 ;
447
450
448
451
/* set the default exe module */
449
- wcscpy (exe , exepath );
452
+ wcscpy (exe , top_level_path );
450
453
PathAppend (exe , L"git.exe" );
451
454
}
452
455
else if (!wcsicmp (basename , L"git.exe" )) {
453
- if (!PathRemoveFileSpec (exepath )) {
456
+ if (!PathRemoveFileSpec (top_level_path )) {
454
457
fwprintf (stderr ,
455
- L"Invalid executable path: %s\n" , exepath );
458
+ L"Invalid executable path: %s\n" ,
459
+ top_level_path );
456
460
ExitProcess (1 );
457
461
}
458
462
459
463
/* set the default exe module */
460
- wcscpy (exe , exepath );
464
+ wcscpy (exe , top_level_path );
461
465
PathAppend (exe , msystem_bin );
462
466
PathAppend (exe , L"git.exe" );
463
467
if (_waccess (exe , 0 ) == -1 ) {
464
- wcscpy (exe , exepath );
468
+ wcscpy (exe , top_level_path );
465
469
PathAppend (exe , L"bin\\git.exe" );
466
470
}
467
471
}
468
472
else if (!wcsicmp (basename , L"gitk.exe" )) {
469
473
static WCHAR buffer [BUFSIZE ];
470
474
allocate_console = 1 ;
471
- if (!PathRemoveFileSpec (exepath )) {
475
+ if (!PathRemoveFileSpec (top_level_path )) {
472
476
fwprintf (stderr ,
473
- L"Invalid executable path: %s\n" , exepath );
477
+ L"Invalid executable path: %s\n" ,
478
+ top_level_path );
474
479
ExitProcess (1 );
475
480
}
476
481
477
482
/* set the default exe module */
478
- wcscpy (exe , exepath );
479
- swprintf (buffer , BUFSIZE , L"\"%s\"" , exepath );
483
+ wcscpy (exe , top_level_path );
484
+ swprintf (buffer , BUFSIZE , L"\"%s\"" , top_level_path );
480
485
PathAppend (exe , msystem_bin );
481
486
PathAppend (exe , L"wish.exe" );
482
487
if (_waccess (exe , 0 ) != -1 )
483
488
PathAppend (buffer , msystem_bin );
484
489
else {
485
- wcscpy (exe , exepath );
490
+ wcscpy (exe , top_level_path );
486
491
PathAppend (exe , L"mingw\\bin\\wish.exe" );
487
492
PathAppend (buffer , L"mingw\\bin" );
488
493
}
@@ -492,7 +497,7 @@ int main(void)
492
497
}
493
498
494
499
if (needs_env_setup )
495
- setup_environment (exepath , full_path );
500
+ setup_environment (top_level_path , full_path );
496
501
cmd = fixup_commandline (exepath , & exep , & wait ,
497
502
prefix_args , prefix_args_len , is_git_command , skip_arguments );
498
503
0 commit comments