@@ -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
}
@@ -427,7 +427,7 @@ int main(void)
427
427
int r = 1 , wait = 1 , prefix_args_len = -1 , needs_env_setup = 1 ,
428
428
is_git_command = 1 , full_path = 1 , skip_arguments = 0 ,
429
429
allocate_console = 0 , show_console = 0 ;
430
- WCHAR exepath [MAX_PATH ], exe [MAX_PATH ];
430
+ WCHAR exepath [MAX_PATH ], exe [MAX_PATH ], top_level_path [ MAX_PATH ] ;
431
431
LPWSTR cmd = NULL , exep = exe , prefix_args = NULL , basename ;
432
432
LPWSTR working_directory = NULL ;
433
433
@@ -441,6 +441,7 @@ int main(void)
441
441
fwprintf (stderr , L"Invalid executable path: %s\n" , exepath );
442
442
ExitProcess (1 );
443
443
}
444
+ wcscpy (top_level_path , exepath );
444
445
basename = exepath + wcslen (exepath ) + 1 ;
445
446
if (configure_via_resource (basename , exepath , exep ,
446
447
& prefix_args , & prefix_args_len ,
@@ -453,25 +454,28 @@ int main(void)
453
454
static WCHAR buffer [BUFSIZE ];
454
455
wait = 0 ;
455
456
allocate_console = 1 ;
456
- if (!PathRemoveFileSpec (exepath )) {
457
+ if (!PathRemoveFileSpec (top_level_path )) {
457
458
fwprintf (stderr ,
458
- L"Invalid executable path: %s\n" , exepath );
459
+ L"Invalid executable path: %s\n" ,
460
+ top_level_path );
459
461
ExitProcess (1 );
460
462
}
461
463
462
464
/* set the default exe module */
463
- wcscpy (exe , exepath );
465
+ wcscpy (exe , top_level_path );
464
466
PathAppend (exe , msystem_bin );
465
467
PathAppend (exe , L"wish.exe" );
466
468
if (_waccess (exe , 0 ) != -1 )
467
469
swprintf (buffer , BUFSIZE ,
468
470
L"\"%s\\%.*s\\libexec\\git-core\"" ,
469
- exepath , wcslen (msystem_bin ) - 4 , msystem_bin );
471
+ top_level_path ,
472
+ wcslen (msystem_bin ) - 4 , msystem_bin );
470
473
else {
471
- wcscpy (exe , exepath );
474
+ wcscpy (exe , top_level_path );
472
475
PathAppend (exe , L"mingw\\bin\\wish.exe" );
473
476
swprintf (buffer , BUFSIZE ,
474
- L"\"%s\\mingw\\libexec\\git-core\"" , exepath );
477
+ L"\"%s\\mingw\\libexec\\git-core\"" ,
478
+ top_level_path );
475
479
}
476
480
PathAppend (buffer , L"git-gui" );
477
481
prefix_args = buffer ;
@@ -491,39 +495,41 @@ int main(void)
491
495
PathAppend (exe , L"git.exe" );
492
496
}
493
497
else if (!wcsicmp (basename , L"git.exe" )) {
494
- if (!PathRemoveFileSpec (exepath )) {
498
+ if (!PathRemoveFileSpec (top_level_path )) {
495
499
fwprintf (stderr ,
496
- L"Invalid executable path: %s\n" , exepath );
500
+ L"Invalid executable path: %s\n" ,
501
+ top_level_path );
497
502
ExitProcess (1 );
498
503
}
499
504
500
505
/* set the default exe module */
501
- wcscpy (exe , exepath );
506
+ wcscpy (exe , top_level_path );
502
507
PathAppend (exe , msystem_bin );
503
508
PathAppend (exe , L"git.exe" );
504
509
if (_waccess (exe , 0 ) == -1 ) {
505
- wcscpy (exe , exepath );
510
+ wcscpy (exe , top_level_path );
506
511
PathAppend (exe , L"bin\\git.exe" );
507
512
}
508
513
}
509
514
else if (!wcsicmp (basename , L"gitk.exe" )) {
510
515
static WCHAR buffer [BUFSIZE ];
511
516
allocate_console = 1 ;
512
- if (!PathRemoveFileSpec (exepath )) {
517
+ if (!PathRemoveFileSpec (top_level_path )) {
513
518
fwprintf (stderr ,
514
- L"Invalid executable path: %s\n" , exepath );
519
+ L"Invalid executable path: %s\n" ,
520
+ top_level_path );
515
521
ExitProcess (1 );
516
522
}
517
523
518
524
/* set the default exe module */
519
- wcscpy (exe , exepath );
520
- swprintf (buffer , BUFSIZE , L"\"%s\"" , exepath );
525
+ wcscpy (exe , top_level_path );
526
+ swprintf (buffer , BUFSIZE , L"\"%s\"" , top_level_path );
521
527
PathAppend (exe , msystem_bin );
522
528
PathAppend (exe , L"wish.exe" );
523
529
if (_waccess (exe , 0 ) != -1 )
524
530
PathAppend (buffer , msystem_bin );
525
531
else {
526
- wcscpy (exe , exepath );
532
+ wcscpy (exe , top_level_path );
527
533
PathAppend (exe , L"mingw\\bin\\wish.exe" );
528
534
PathAppend (buffer , L"mingw\\bin" );
529
535
}
@@ -533,7 +539,7 @@ int main(void)
533
539
}
534
540
535
541
if (needs_env_setup )
536
- setup_environment (exepath , full_path );
542
+ setup_environment (top_level_path , full_path );
537
543
cmd = fixup_commandline (exepath , & exep , & wait ,
538
544
prefix_args , prefix_args_len , is_git_command , skip_arguments );
539
545
0 commit comments