@@ -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,28 @@ 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
- exepath , wcslen (msystem_bin ) - 4 , msystem_bin );
430
+ top_level_path ,
431
+ wcslen (msystem_bin ) - 4 , msystem_bin );
429
432
else {
430
- wcscpy (exe , exepath );
433
+ wcscpy (exe , top_level_path );
431
434
PathAppend (exe , L"mingw\\bin\\wish.exe" );
432
435
swprintf (buffer , BUFSIZE ,
433
- L"\"%s\\mingw\\libexec\\git-core\"" , exepath );
436
+ L"\"%s\\mingw\\libexec\\git-core\"" ,
437
+ top_level_path );
434
438
}
435
439
PathAppend (buffer , L"git-gui" );
436
440
prefix_args = buffer ;
@@ -450,39 +454,41 @@ int main(void)
450
454
PathAppend (exe , L"git.exe" );
451
455
}
452
456
else if (!wcsicmp (basename , L"git.exe" )) {
453
- if (!PathRemoveFileSpec (exepath )) {
457
+ if (!PathRemoveFileSpec (top_level_path )) {
454
458
fwprintf (stderr ,
455
- L"Invalid executable path: %s\n" , exepath );
459
+ L"Invalid executable path: %s\n" ,
460
+ top_level_path );
456
461
ExitProcess (1 );
457
462
}
458
463
459
464
/* set the default exe module */
460
- wcscpy (exe , exepath );
465
+ wcscpy (exe , top_level_path );
461
466
PathAppend (exe , msystem_bin );
462
467
PathAppend (exe , L"git.exe" );
463
468
if (_waccess (exe , 0 ) == -1 ) {
464
- wcscpy (exe , exepath );
469
+ wcscpy (exe , top_level_path );
465
470
PathAppend (exe , L"bin\\git.exe" );
466
471
}
467
472
}
468
473
else if (!wcsicmp (basename , L"gitk.exe" )) {
469
474
static WCHAR buffer [BUFSIZE ];
470
475
allocate_console = 1 ;
471
- if (!PathRemoveFileSpec (exepath )) {
476
+ if (!PathRemoveFileSpec (top_level_path )) {
472
477
fwprintf (stderr ,
473
- L"Invalid executable path: %s\n" , exepath );
478
+ L"Invalid executable path: %s\n" ,
479
+ top_level_path );
474
480
ExitProcess (1 );
475
481
}
476
482
477
483
/* set the default exe module */
478
- wcscpy (exe , exepath );
479
- swprintf (buffer , BUFSIZE , L"\"%s\"" , exepath );
484
+ wcscpy (exe , top_level_path );
485
+ swprintf (buffer , BUFSIZE , L"\"%s\"" , top_level_path );
480
486
PathAppend (exe , msystem_bin );
481
487
PathAppend (exe , L"wish.exe" );
482
488
if (_waccess (exe , 0 ) != -1 )
483
489
PathAppend (buffer , msystem_bin );
484
490
else {
485
- wcscpy (exe , exepath );
491
+ wcscpy (exe , top_level_path );
486
492
PathAppend (exe , L"mingw\\bin\\wish.exe" );
487
493
PathAppend (buffer , L"mingw\\bin" );
488
494
}
@@ -492,7 +498,7 @@ int main(void)
492
498
}
493
499
494
500
if (needs_env_setup )
495
- setup_environment (exepath , full_path );
501
+ setup_environment (top_level_path , full_path );
496
502
cmd = fixup_commandline (exepath , & exep , & wait ,
497
503
prefix_args , prefix_args_len , is_git_command , skip_arguments );
498
504
0 commit comments