[PATCH] Support for building using WSL (Windows Subsystem for Linux) on Windows

Andrew Luo andrewluotechnologies at outlook.com
Fri Dec 14 20:33:48 UTC 2018


Try this updated patch with some fixes...

Thanks,

-Andrew

-----Original Message-----
From: build-dev <build-dev-bounces at openjdk.java.net> On Behalf Of Andrew Luo
Sent: Friday, December 14, 2018 12:01 PM
To: Magnus Ihse Bursie <magnus.ihse.bursie at oracle.com>; Erik Joelsson <erik.joelsson at oracle.com>
Cc: build-dev at openjdk.java.net
Subject: RE: [PATCH] Support for building using WSL (Windows Subsystem for Linux) on Windows

I think I have a fix for it.  Give me a minute (or a few hours depending on if it works).

Thanks,

-Andrew

-----Original Message-----
From: Magnus Ihse Bursie <magnus.ihse.bursie at oracle.com> 
Sent: Friday, December 14, 2018 11:42 AM
To: Erik Joelsson <erik.joelsson at oracle.com>
Cc: Andrew Luo <andrewluotechnologies at outlook.com>; build-dev at openjdk.java.net
Subject: Re: [PATCH] Support for building using WSL (Windows Subsystem for Linux) on Windows


> 14 dec. 2018 kl. 20:31 skrev Erik Joelsson <erik.joelsson at oracle.com>:
> 
> 
>> On 2018-12-14 11:05, Magnus Ihse Bursie wrote:
>> 
>> 
>>> On 2018-12-14 19:41, Erik Joelsson wrote:
>>> 
>>>> On 2018-12-14 10:28, Magnus Ihse Bursie wrote:
>>>> 
>>>> 
>>>>> On 2018-12-14 19:23, Erik Joelsson wrote:
>>>>> Hello,
>>>>> 
>>>>> I took your patch for a spin, and configure passes, but I get the same build error I got with my patch:
>>>>> 
>>>>> fatal error C1083: Cannot open compiler intermediate file: 
>>>>> 'd:\erik\jdk-wsl\build\windows-x86_64-server-release\hotspot\varia
>>>>> nt-server\libjvm\objs\build_libjvm.pch': No such file or directory
>>>>> 
>>>>> This is repeated for every C++ file in Hotspot. I see two issues here. First of all, I need to figure out why the compiler will not find the file, which is clearly there. Second, why isn't this failure picked up by make? Somewhere the return value of cl.exe is disappearing.
>>>> 
>>>> Can you build without errors if you disable PCH?
>> Could you? That is, is it only the PCH that is problematic?
> Trying that now.
>>>> 
>>>> Also, a wild guess: can it be related to file permissions? Can you read the file properly from both WSL and Windows?
>>> It is readable, but it could be something with case. The file is actually called BUILD_LIBJVM.pch, but that is also how it's given to the compiler command line. Here is the output from DEBUG_FIXPATH:
>> Weird. What if you, after a failed build, rename it to build_libjvm.pch?
> 
> Doing that causes a new error:
> 
> d:\erik\jdk-wsl\open\src\hotspot\share\gc\shared\accessBarrierSupport.
> cpp : fatal error C1382: the PCH file 
> 'd:\erik\jdk-wsl\build\windows-x86_64-server-release\hotspot\variant-s
> erver\libjvm\objs\build_libjvm.pch' has been rebuilt since 
> 'd:\erik\jdk-wsl\build\windows-x86_64-server-release\hotspot\variant-s
> erver\libjvm\objs\accessBarrierSupport.obj' was generated. Please 
> rebuild this object
> 
> But I think even more important is that make is not getting the error. The build just continues until interrupted.

Agree, that's bad. 

Does fixpath_debug print exit code? If so, what does it say? If not, we should add that instrumentation.

/Magnus

> 
>>> 
>>> Compiling ad_x86_expand.cpp (for jvm.dll) fixpath input line 
>>> >-wsl\build\windows-x86_64-server-release\configure-support\bin\fixp
>>> ath.exe -w
>> This starts out quite odd..? -wsl\build\...?
> I agree, didn't look into that part.
>>> /mnt/c/PROGRA~2/MICROS~1/2017/PROFES~1/VC/Tools/MSVC/1416~1.270/bin/
>>> Hostx86/x64/cl.exe
>> 
>> 
>> Also, FWIW, this seems not to have been properly case treated. Which version of the patch are you using?
> The last one posted by Andrew: "diff15.txt".
> 
> /Erik
> 
>> /Magnus
>>> -showIncludes 
>>> -Fp/mnt/d/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/v
>>> ariant-server/libjvm/objs/BUILD_LIBJVM.pch -Yuprecompiled.hpp 
>>> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS 
>>> -D__STDC_CONSTANT_MACROS -DNOMINMAX -DWIN32_LEAN_AND_MEAN -nologo 
>>> -MD -MP -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_ -W3 
>>> -DVM_LITTLE_ENDIAN -D_LP64=1 -DPRODUCT -DTARGET_ARCH_x86 
>>> -DINCLUDE_SUFFIX_OS=_windows -DINCLUDE_SUFFIX_CPU=_x86 
>>> -DINCLUDE_SUFFIX_COMPILER=_visCPP -DTARGET_COMPILER_visCPP -DAMD64 
>>> "-DHOTSPOT_LIB_ARCH=\"amd64\"" -DCOMPILER1 -DCOMPILER2 
>>> -DINCLUDE_ZGC=0 
>>> -I/mnt/d/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/va
>>> riant-server/gensrc/adfiles 
>>> -I/mnt/d/erik/jdk-wsl/closed/src/hotspot/share 
>>> -I/mnt/d/erik/jdk-wsl/open/src/hotspot/share 
>>> -I/mnt/d/erik/jdk-wsl/open/src/hotspot/os/windows 
>>> -I/mnt/d/erik/jdk-wsl/open/src/hotspot/cpu/x86 
>>> -I/mnt/d/erik/jdk-wsl/open/src/hotspot/os_cpu/windows_x86 
>>> -I/mnt/d/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/va
>>> riant-server/gensrc 
>>> -I/mnt/d/erik/jdk-wsl/open/src/hotspot/share/precompiled 
>>> -I/mnt/d/erik/jdk-wsl/open/src/hotspot/share/include 
>>> -I/mnt/d/erik/jdk-wsl/open/src/hotspot/os/windows/include 
>>> -I/mnt/d/erik/jdk-wsl/build/windows-x86_64-server-release/support/mo
>>> dules_include/java.base 
>>> -I/mnt/d/erik/jdk-wsl/build/windows-x86_64-server-release/support/mo
>>> dules_include/java.base/win32 
>>> -I/mnt/d/erik/jdk-wsl/open/src/java.base/share/native/libjimage -Z7 
>>> -d2Zi+ -wd4800 -WX 
>>> -I/mnt/c/PROGRA~2/MICROS~1/2017/PROFES~1/VC/Tools/MSVC/1416~1.270/at
>>> lmfc/include 
>>> -I/mnt/c/PROGRA~2/MICROS~1/2017/PROFES~1/VC/Tools/MSVC/1416~1.270/in
>>> clude -I/mnt/c/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/ucrt 
>>> -I/mnt/c/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/shared 
>>> -I/mnt/c/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/um 
>>> -I/mnt/c/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/winrt 
>>> -I/mnt/c/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/cppwinrt -O2 -Oy- 
>>> "-DTHIS_FILE=\"\"" -c 
>>> -Fo/mnt/d/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/v
>>> ariant-server/libjvm/objs/ad_x86_expand.obj 
>>> /mnt/d/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/vari
>>> ant-server/gensrc/adfiles/ad_x86_expand.cpp<
>>> fixpath using wsl mode, with path list:
>>> fixpath converted line 
>>> >c:/PROGRA~2/MICROS~1/2017/PROFES~1/VC/Tools/MSVC/1416~1.270/bin/Hos
>>> tx86/x64/cl.exe -showIncludes 
>>> -Fpd:/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/varia
>>> nt-server/libjvm/objs/BUILD_LIBJVM.pch -Yuprecompiled.hpp 
>>> -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS 
>>> -D__STDC_CONSTANT_MACROS -DNOMINMAX -DWIN32_LEAN_AND_MEAN -nologo 
>>> -MD -MP -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_ -W3 
>>> -DVM_LITTLE_ENDIAN -D_LP64=1 -DPRODUCT -DTARGET_ARCH_x86 
>>> -DINCLUDE_SUFFIX_OS=_windows -DINCLUDE_SUFFIX_CPU=_x86 
>>> -DINCLUDE_SUFFIX_COMPILER=_visCPP -DTARGET_COMPILER_visCPP -DAMD64 
>>> "-DHOTSPOT_LIB_ARCH=\"amd64\"" -DCOMPILER1 -DCOMPILER2 
>>> -DINCLUDE_ZGC=0 
>>> -Id:/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/varian
>>> t-server/gensrc/adfiles -Id:/erik/jdk-wsl/closed/src/hotspot/share 
>>> -Id:/erik/jdk-wsl/open/src/hotspot/share 
>>> -Id:/erik/jdk-wsl/open/src/hotspot/os/windows 
>>> -Id:/erik/jdk-wsl/open/src/hotspot/cpu/x86 
>>> -Id:/erik/jdk-wsl/open/src/hotspot/os_cpu/windows_x86 
>>> -Id:/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/varian
>>> t-server/gensrc -Id:/erik/jdk-wsl/open/src/hotspot/share/precompiled 
>>> -Id:/erik/jdk-wsl/open/src/hotspot/share/include 
>>> -Id:/erik/jdk-wsl/open/src/hotspot/os/windows/include 
>>> -Id:/erik/jdk-wsl/build/windows-x86_64-server-release/support/module
>>> s_include/java.base 
>>> -Id:/erik/jdk-wsl/build/windows-x86_64-server-release/support/module
>>> s_include/java.base/win32 
>>> -Id:/erik/jdk-wsl/open/src/java.base/share/native/libjimage -Z7 
>>> -d2Zi+ -wd4800 -WX 
>>> -Ic:/PROGRA~2/MICROS~1/2017/PROFES~1/VC/Tools/MSVC/1416~1.270/atlmfc
>>> /include 
>>> -Ic:/PROGRA~2/MICROS~1/2017/PROFES~1/VC/Tools/MSVC/1416~1.270/includ
>>> e -Ic:/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/ucrt 
>>> -Ic:/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/shared 
>>> -Ic:/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/um 
>>> -Ic:/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/winrt 
>>> -Ic:/PROGRA~2/WI3CF2~1/10/Include/100177~1.0/cppwinrt -O2 -Oy- 
>>> "-DTHIS_FILE=\"\"" -c 
>>> -Fod:/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/varia
>>> nt-server/libjvm/objs/ad_x86_expand.obj 
>>> d:/erik/jdk-wsl/build/windows-x86_64-server-release/hotspot/variant-
>>> server/gensrc/adfiles/ad_x86_expand.cpp<
>>> 
>>> An interesting note is that make is rebuilding the pch file on every invocation so it too has trouble finding the file.
>>> 
>>> /Erik
>> 

-------------- next part --------------
ÿþd i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / I m a g e s . g m k 
 
 - - -   a / m a k e / I m a g e s . g m k 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / I m a g e s . g m k 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 9 9 , 7   + 9 9 , 7   @ @ 
 
   	 ) 
 
                   i f e q   ( $ ( B U I L D _ C D S _ A R C H I V E ) ,   t r u e ) 
 
   	     $ ( c a l l   L o g W a r n ,   C r e a t i n g   C D S   a r c h i v e   f o r   j d k   i m a g e ) 
 
 - 	     $ ( J D K _ I M A G E _ D I R ) / b i n / j a v a   - X s h a r e : d u m p   - X m x 1 2 8 M   - X m s 1 2 8 M   $ ( L O G _ I N F O ) 
 
 + 	     $ ( J D K _ I M A G E _ D I R ) / b i n / j a v a $ ( E X E _ S U F F I X )   - X s h a r e : d u m p   - X m x 1 2 8 M   - X m s 1 2 8 M   $ ( L O G _ I N F O ) 
 
                   e n d i f 
 
   	 $ ( T O U C H )   $ @ 
 
   
 
 @ @   - 1 1 4 , 7   + 1 1 4 , 7   @ @ 
 
   	 ) 
 
                   i f e q   ( $ ( B U I L D _ C D S _ A R C H I V E ) ,   t r u e ) 
 
   	     $ ( c a l l   L o g W a r n ,   C r e a t i n g   C D S   a r c h i v e   f o r   j r e   i m a g e ) 
 
 - 	     $ ( J R E _ I M A G E _ D I R ) / b i n / j a v a   - X s h a r e : d u m p   - X m x 1 2 8 M   - X m s 1 2 8 M   $ ( L O G _ I N F O ) 
 
 + 	     $ ( J R E _ I M A G E _ D I R ) / b i n / j a v a $ ( E X E _ S U F F I X )   - X s h a r e : d u m p   - X m x 1 2 8 M   - X m s 1 2 8 M   $ ( L O G _ I N F O ) 
 
                   e n d i f 
 
   	 $ ( T O U C H )   $ @ 
 
   
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / b a s i c s . m 4 
 
 - - -   a / m a k e / a u t o c o n f / b a s i c s . m 4 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / b a s i c s . m 4 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 2 2 3 , 6   + 2 2 3 , 8   @ @ 
 
               B A S I C _ F I X U P _ P A T H _ C Y G W I N ( $ 1 ) 
 
           e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . m s y s " ;   t h e n 
 
               B A S I C _ F I X U P _ P A T H _ M S Y S ( $ 1 ) 
 
 +         e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +             B A S I C _ F I X U P _ P A T H _ W S L ( $ 1 ) 
 
           e l s e 
 
               #   W e ' r e   o n   a   u n i x   p l a t f o r m .   H o o r a y !   : ) 
 
               p a t h = " [ $ ] $ 1 " 
 
 @ @   - 2 7 0 , 6   + 2 7 2 , 8   @ @ 
 
               B A S I C _ F I X U P _ E X E C U T A B L E _ C Y G W I N ( $ 1 ) 
 
           e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . m s y s " ;   t h e n 
 
               B A S I C _ F I X U P _ E X E C U T A B L E _ M S Y S ( $ 1 ) 
 
 +         e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +             B A S I C _ F I X U P _ E X E C U T A B L E _ W S L ( $ 1 ) 
 
           e l s e 
 
               #   W e ' r e   o n   a   u n i x   p l a t f o r m .   H o o r a y !   : ) 
 
               #   F i r s t   s e p a r a t e   t h e   p a t h   f r o m   t h e   a r g u m e n t s .   T h i s   w i l l   s p l i t   a t   t h e   f i r s t 
 
 @ @   - 6 0 7 , 1 0   + 6 1 1 , 1 3   @ @ 
 
   
 
       #   T h e s e   a r e   n o t   r e q u i r e d   o n   a l l   p l a t f o r m s 
 
       B A S I C _ P A T H _ P R O G S ( C Y G P A T H ,   c y g p a t h ) 
 
 +     B A S I C _ P A T H _ P R O G S ( W S L P A T H ,   w s l p a t h ) 
 
       B A S I C _ P A T H _ P R O G S ( D F ,   d f ) 
 
       B A S I C _ P A T H _ P R O G S ( C P I O ,   [ c p i o   b s d c p i o ] ) 
 
       B A S I C _ P A T H _ P R O G S ( N I C E ,   n i c e ) 
 
       B A S I C _ P A T H _ P R O G S ( P A N D O C ,   p a n d o c ) 
 
 + 
 
 +     B A S I C _ P A T H _ P R O G S ( C M D ,   [ c m d . e x e   / m n t / c / W i n d o w s / S y s t e m 3 2 / c m d . e x e ] ) 
 
   ] ) 
 
   
 
   # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
 
 @ @   - 6 3 4 , 8   + 6 4 1 , 1 0   @ @ 
 
           B A S I C _ C H E C K _ P A T H S _ W I N D O W S 
 
       e l s e 
 
           P A T H _ S E P = " : " 
 
 +         E X E C U T A B L E _ S U F F I X = " " 
 
       f i 
 
       A C _ S U B S T ( P A T H _ S E P ) 
 
 +     A C _ S U B S T ( E X E C U T A B L E _ S U F F I X ) 
 
   
 
       #   W e   g e t   t h e   t o p - l e v e l   d i r e c t o r y   f r o m   t h e   s u p p o r t i n g   w r a p p e r s . 
 
       A C _ M S G _ C H E C K I N G ( [ f o r   t o p - l e v e l   d i r e c t o r y ] ) 
 
 @ @   - 9 8 0 , 6   + 9 8 9 , 8   @ @ 
 
                           M A K E _ E X P E C T E D _ E N V = ' c y g w i n ' 
 
                       e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . m s y s " ;   t h e n 
 
                           M A K E _ E X P E C T E D _ E N V = ' m s y s ' 
 
 +                     e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +                         M A K E _ E X P E C T E D _ E N V = ' x 8 6 _ 6 4 - p c - l i n u x - g n u ' 
 
                       e l s e 
 
                           A C _ M S G _ E R R O R ( [ U n k n o w n   W i n d o w s   e n v i r o n m e n t ] ) 
 
                       f i 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / b a s i c s _ w i n d o w s . m 4 
 
 - - -   a / m a k e / a u t o c o n f / b a s i c s _ w i n d o w s . m 4 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / b a s i c s _ w i n d o w s . m 4 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 3 2 , 6   + 3 2 , 1 3   @ @ 
 
       e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . m s y s " ;   t h e n 
 
           u n i x _ p a t h = ` $ E C H O   " $ w i n d o w s _ p a t h "   |   $ S E D   - e   ' s , ^ \ \ ( . \ \ ) : , / \ \ 1 , g '   - e   ' s , \ \ \ \ , / , g ' ` 
 
           $ 1 = " $ u n i x _ p a t h " 
 
 +     e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +         #   w s l p a t h   d o e s   n o t   c h e c k   t h e   i n p u t ,   o n l y   c a l l   i f   a n   a c t u a l   w i n d o w s   p a t h   w a s 
 
 +         #   g i v e n . 
 
 +         i f   $ E C H O   " $ w i n d o w s _ p a t h "   |   $ G R E P   - q   [ " ^ [ a - z A - Z ] : [ \ \ \ \ / ] " ] ;   t h e n 
 
 +             u n i x _ p a t h = ` $ W S L P A T H   - u   " $ w i n d o w s _ p a t h " ` 
 
 +             $ 1 = " $ u n i x _ p a t h " 
 
 +         f i 
 
       f i 
 
   ] ) 
 
   
 
 @ @   - 4 4 , 6   + 5 1 , 9   @ @ 
 
       e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . m s y s " ;   t h e n 
 
           w i n d o w s _ p a t h = ` c m d   / / c   e c h o   $ u n i x _ p a t h ` 
 
           $ 1 = " $ w i n d o w s _ p a t h " 
 
 +     e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +         w i n d o w s _ p a t h = ` $ W S L P A T H   - m   " $ u n i x _ p a t h " ` 
 
 +         $ 1 = " $ w i n d o w s _ p a t h " 
 
       f i 
 
   ] ) 
 
   
 
 @ @   - 1 0 0 , 6   + 1 1 0 , 3 1   @ @ 
 
       f i 
 
   ] ) 
 
   
 
 + #   H e l p e r   f u n c t i o n   w h i c h   p o s s i b l y   c o n v e r t s   a   p a t h   u s i n g   D O S - s t y l e   s h o r t   m o d e . 
 
 + #   I f   s o ,   t h e   u p d a t e d   p a t h   i s   s t o r e d   i n   $ n e w _ p a t h . 
 
 + #   $ 1 :   T h e   p a t h   t o   c h e c k 
 
 + A C _ D E F U N ( [ B A S I C _ M A K E _ W I N D O W S _ S P A C E _ S A F E _ W S L ] , 
 
 + [ 
 
 +     i n p u t _ p a t h = " $ 1 " 
 
 +     #   C h e c k   i f   w e   n e e d   t o   c o n v e r t   t h i s   u s i n g   D O S - s t y l e   s h o r t   m o d e .   I f   t h e   p a t h 
 
 +     #   c o n t a i n s   j u s t   s i m p l e   c h a r a c t e r s ,   u s e   i t .   O t h e r w i s e   ( s p a c e s ,   w e i r d   c h a r a c t e r s ) , 
 
 +     #   t a k e   n o   c h a n c e s   a n d   r e w r i t e   i t . 
 
 +     #   N o t e :   m 4   e a t s   o u r   [ ] ,   s o   w e   n e e d   t o   u s e   @ < : @   a n d   @ : > @   i n s t e a d . 
 
 +     h a s _ f o r b i d d e n _ c h a r s = ` $ E C H O   " $ i n p u t _ p a t h "   |   $ G R E P   [ [ ^ - _ / : a - z A - Z 0 - 9 \ \ . ] ] ` 
 
 +     i f   t e s t   " x $ h a s _ f o r b i d d e n _ c h a r s "   ! =   x ;   t h e n 
 
 +         #   N o w   c o n v e r t   i t   t o   m i x e d   D O S - s t y l e ,   s h o r t   m o d e   ( n o   s p a c e s ,   a n d   /   i n s t e a d   o f   \ ) 
 
 +         T O P D I R _ w i n d o w s = " $ T O P D I R " 
 
 +         B A S I C _ W I N D O W S _ R E W R I T E _ A S _ W I N D O W S _ M I X E D _ P A T H ( [ T O P D I R _ w i n d o w s ] ) 
 
 +         #   F i r s t   c o n v e r t   t o   W i n d o w s   p a t h   t o   m a k e   i n p u t   v a l i d   f o r   c m d 
 
 +         B A S I C _ W I N D O W S _ R E W R I T E _ A S _ W I N D O W S _ M I X E D _ P A T H ( [ i n p u t _ p a t h ] ) 
 
 +         n e w _ p a t h = ` $ C M D   / c   $ T O P D I R _ w i n d o w s / m a k e / s c r i p t s / w i n d o w s S h o r t N a m e . b a t   " $ i n p u t _ p a t h "   \ 
 
 +                 |   $ S E D   - e   ' s | \ r | | g '   \ 
 
 +                 |   $ T R   \ \ \ \ \ \ \ \   /   |   $ T R   ' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z '   ' a b c d e f g h i j k l m n o p q r s t u v w x y z ' ` 
 
 +         #   R e w r i t e   b a c k   t o   u n i x   s t y l e 
 
 +         B A S I C _ W I N D O W S _ R E W R I T E _ A S _ U N I X _ P A T H ( [ n e w _ p a t h ] ) 
 
 +     f i 
 
 + ] ) 
 
 + 
 
   #   F I X M E :   T h e   B A S I C _ F I X U P _ * _ C Y G W I N / M S Y S   i s   m o s t   l i k e l y   t o o   c o n v o l u t e d 
 
   #   a n d   c o u l d   p r o b a b l y   b e   h e a v i l y   s i m p l i f i e d .   H o w e v e r ,   a l l   c h a n g e s   i n   t h i s 
 
   #   a r e a   t e n d   t o   n e e d   l o t   o f   t e s t i n g   i n   d i f f e r e n t   s c e n a r i o s ,   a n d   i n   l a c k   o f 
 
 @ @   - 1 5 7 , 6   + 1 9 2 , 2 3   @ @ 
 
       a l l _ f i x p a t h _ p r e f i x e s = ( " $ { a l l _ f i x p a t h _ p r e f i x e s @ < : @ @ @ : > @ } "   " $ { n e w _ p a t h : 0 : 1 0 } " ) 
 
   ] ) 
 
   
 
 + A C _ D E F U N ( [ B A S I C _ F I X U P _ P A T H _ W S L ] , 
 
 + [ 
 
 +     #   I n p u t   m i g h t   b e   g i v e n   a s   W i n d o w s   f o r m a t ,   s t a r t   b y   c o n v e r t i n g   t o 
 
 +     #   u n i x   f o r m a t . 
 
 +     n e w _ p a t h = " [ $ ] $ 1 " 
 
 +     B A S I C _ W I N D O W S _ R E W R I T E _ A S _ U N I X _ P A T H ( [ n e w _ p a t h ] ) 
 
 + 
 
 +     #   C a l l   h e l p e r   f u n c t i o n   w h i c h   p o s s i b l y   c o n v e r t s   t h i s   u s i n g   D O S - s t y l e   s h o r t   m o d e . 
 
 +     #   I f   s o ,   t h e   u p d a t e d   p a t h   i s   s t o r e d   i n   $ n e w _ p a t h . 
 
 +     B A S I C _ M A K E _ W I N D O W S _ S P A C E _ S A F E _ W S L ( [ $ n e w _ p a t h ] ) 
 
 + 
 
 +     i f   t e s t   " x $ p a t h "   ! =   " x $ n e w _ p a t h " ;   t h e n 
 
 +         $ 1 = " $ n e w _ p a t h " 
 
 +         A C _ M S G _ N O T I C E ( [ R e w r i t i n g   $ 1   t o   " $ n e w _ p a t h " ] ) 
 
 +     f i 
 
 + ] ) 
 
 + 
 
   A C _ D E F U N ( [ B A S I C _ F I X U P _ E X E C U T A B L E _ C Y G W I N ] , 
 
   [ 
 
       #   F i r s t   s e p a r a t e   t h e   p a t h   f r o m   t h e   a r g u m e n t s .   T h i s   w i l l   s p l i t   a t   t h e   f i r s t 
 
 @ @   - 3 0 5 , 6   + 3 5 7 , 7 9   @ @ 
 
       f i 
 
   ] ) 
 
   
 
 + A C _ D E F U N ( [ B A S I C _ F I X U P _ E X E C U T A B L E _ W S L ] , 
 
 + [ 
 
 +     #   F i r s t   s e p a r a t e   t h e   p a t h   f r o m   t h e   a r g u m e n t s .   T h i s   w i l l   s p l i t   a t   t h e   f i r s t 
 
 +     #   s p a c e . 
 
 +     c o m p l e t e = " [ $ ] $ 1 " 
 
 +     p a t h = " $ { c o m p l e t e % %   * } " 
 
 +     t m p = " $ c o m p l e t e   E O L " 
 
 +     a r g u m e n t s = " $ { t m p # *   } " 
 
 + 
 
 +     #   I n p u t   m i g h t   b e   g i v e n   a s   W i n d o w s   f o r m a t ,   s t a r t   b y   c o n v e r t i n g   t o 
 
 +     #   u n i x   f o r m a t . 
 
 +     n e w _ p a t h = " $ p a t h " 
 
 +     B A S I C _ W I N D O W S _ R E W R I T E _ A S _ U N I X _ P A T H ( [ n e w _ p a t h ] ) 
 
 + 
 
 +     #   N o w   t r y   t o   l o c a t e   e x e c u t a b l e   u s i n g   w h i c h 
 
 +     n e w _ p a t h _ b a k = " $ n e w _ p a t h " 
 
 +     n e w _ p a t h = ` $ W H I C H   " $ n e w _ p a t h "   2 >   / d e v / n u l l ` 
 
 +     #   b a t   a n d   c m d   f i l e s   a r e   n o t   c o n s i d e r e d   e x e c u t a b l e   i n   W S L 
 
 +     i f   t e s t   " x $ n e w _ p a t h "   =   x   \ 
 
 +             & &   t e s t   " x ` $ E C H O   \ " $ p a t h \ "   |   $ G R E P   - i   - e   \ " \ \ . b a t $ \ "   - e   \ " \ \ . c m d $ \ " ` "   ! =   x   \ 
 
 +             & &   t e s t   " x ` $ L S   \ " $ p a t h \ "   2 > / d e v / n u l l ` "   ! =   x ;   t h e n 
 
 +         n e w _ p a t h = " $ n e w _ p a t h _ b a c k " 
 
 +     f i 
 
 +     i f   t e s t   " x $ n e w _ p a t h "   =   x ;   t h e n 
 
 +         #   O o p s .   W h i c h   d i d n ' t   f i n d   t h e   e x e c u t a b l e . 
 
 +         #   T h e   s p l i t t i n g   o f   a r g u m e n t s   f r o m   t h e   e x e c u t a b l e   a t   a   s p a c e   m i g h t   h a v e   b e e n   i n c o r r e c t , 
 
 +         #   s i n c e   p a t h s   w i t h   s p a c e   a r e   m o r e   l i k e l y   i n   W i n d o w s .   G i v e   i t   a n o t h e r   t r y   w i t h   t h e   w h o l e 
 
 +         #   a r g u m e n t . 
 
 +         p a t h = " $ c o m p l e t e " 
 
 +         a r g u m e n t s = " E O L " 
 
 +         n e w _ p a t h = " $ p a t h " 
 
 +         B A S I C _ W I N D O W S _ R E W R I T E _ A S _ U N I X _ P A T H ( [ n e w _ p a t h ] ) 
 
 +         n e w _ p a t h _ b a k = " $ n e w _ p a t h " 
 
 +         n e w _ p a t h = ` $ W H I C H   " $ n e w _ p a t h "   2 >   / d e v / n u l l ` 
 
 +         #   b a t   a n d   c m d   f i l e s   a r e   n o t   c o n s i d e r e d   e x e c u t a b l e   i n   W S L 
 
 +         i f   t e s t   " x $ n e w _ p a t h "   =   x   \ 
 
 +                 & &   t e s t   " x ` $ E C H O   \ " $ p a t h \ "   |   $ G R E P   - i   - e   \ " \ \ . b a t $ \ "   - e   \ " \ \ . c m d $ \ " ` "   ! =   x   \ 
 
 +                 & &   t e s t   " x ` $ L S   \ " $ p a t h \ "   2 > / d e v / n u l l ` "   ! =   x ;   t h e n 
 
 +             n e w _ p a t h = " $ n e w _ p a t h _ b a k " 
 
 +         f i 
 
 +         i f   t e s t   " x $ n e w _ p a t h "   =   x ;   t h e n 
 
 +             #   I t ' s   s t i l l   n o t   f o u n d .   N o w   t h i s   i s   a n   u n r e c o v e r a b l e   e r r o r . 
 
 +             A C _ M S G _ N O T I C E ( [ T h e   p a t h   o f   $ 1 ,   w h i c h   r e s o l v e s   a s   " $ c o m p l e t e " ,   i s   n o t   f o u n d . ] ) 
 
 +             h a s _ s p a c e = ` $ E C H O   " $ c o m p l e t e "   |   $ G R E P   "   " ` 
 
 +             i f   t e s t   " x $ h a s _ s p a c e "   ! =   x ;   t h e n 
 
 +                 A C _ M S G _ N O T I C E ( [ Y o u   m i g h t   b e   m i x i n g   s p a c e s   i n   t h e   p a t h   a n d   e x t r a   a r g u m e n t s ,   w h i c h   i s   n o t   a l l o w e d . ] ) 
 
 +             f i 
 
 +             A C _ M S G _ E R R O R ( [ C a n n o t   l o c a t e   t h e   t h e   p a t h   o f   $ 1 ] ) 
 
 +         f i 
 
 +     f i 
 
 + 
 
 +     #   I n   W S L ,   s u f f i x e s   m u s t   b e   p r e s e n t   f o r   W i n d o w s   e x e c u t a b l e s 
 
 +     i f   t e s t   !   - f   " $ n e w _ p a t h " ;   t h e n 
 
 +         #   T r y   a d d i n g   . e x e   o r   . c m d 
 
 +         i f   t e s t   - f   " $ { n e w _ p a t h } . e x e " ;   t h e n 
 
 +             i n p u t _ t o _ s h o r t p a t h = " $ { n e w _ p a t h } . e x e " 
 
 +         e l i f   t e s t   - f   " $ { n e w _ p a t h } . c m d " ;   t h e n 
 
 +             i n p u t _ t o _ s h o r t p a t h = " $ { n e w _ p a t h } . c m d " 
 
 +         e l s e 
 
 +             A C _ M S G _ N O T I C E ( [ T h e   p a t h   o f   $ 1 ,   w h i c h   r e s o l v e s   a s   " $ n e w _ p a t h " ,   i s   i n v a l i d . ] ) 
 
 +             A C _ M S G _ N O T I C E ( [ N e i t h e r   " $ n e w _ p a t h "   n o r   " $ n e w _ p a t h . e x e / c m d "   c a n   b e   f o u n d ] ) 
 
 +             A C _ M S G _ E R R O R ( [ C a n n o t   l o c a t e   t h e   t h e   p a t h   o f   $ 1 ] ) 
 
 +         f i 
 
 +     e l s e 
 
 +         i n p u t _ t o _ s h o r t p a t h = " $ n e w _ p a t h " 
 
 +     f i 
 
 + 
 
 +     #   C a l l   h e l p e r   f u n c t i o n   w h i c h   p o s s i b l y   c o n v e r t s   t h i s   u s i n g   D O S - s t y l e   s h o r t   m o d e . 
 
 +     #   I f   s o ,   t h e   u p d a t e d   p a t h   i s   s t o r e d   i n   $ n e w _ p a t h . 
 
 +     n e w _ p a t h = " $ i n p u t _ t o _ s h o r t p a t h " 
 
 +     B A S I C _ M A K E _ W I N D O W S _ S P A C E _ S A F E _ W S L ( [ $ i n p u t _ t o _ s h o r t p a t h ] ) 
 
 + ] ) 
 
 + 
 
   #   S e t u p   b a s i c   c o n f i g u r a t i o n   p a t h s ,   a n d   p l a t f o r m - s p e c i f i c   s t u f f   r e l a t e d   t o   P A T H s . 
 
   A C _ D E F U N ( [ B A S I C _ C H E C K _ P A T H S _ W I N D O W S ] , 
 
   [ 
 
 @ @   - 3 3 9 , 6   + 4 6 4 , 7   @ @ 
 
           i f   t e s t   " x $ t e s t _ c y g d r i v e _ p r e f i x "   =   x ;   t h e n 
 
               A C _ M S G _ E R R O R ( [ Y o u r   c y g d r i v e   p r e f i x   i s   n o t   / c y g d r i v e .   T h i s   i s   c u r r e n t l y   n o t   s u p p o r t e d .   C h a n g e   w i t h   m o u n t   - c . ] ) 
 
           f i 
 
 +         E X E C U T A B L E _ S U F F I X = " " 
 
       e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . m s y s " ;   t h e n 
 
           A C _ M S G _ C H E C K I N G ( [ m s y s   r e l e a s e ] ) 
 
           M S Y S _ V E R S I O N = ` $ U N A M E   - r ` 
 
 @ @   - 3 5 3 , 8   + 4 7 9 , 1 1   @ @ 
 
           B A S I C _ W I N D O W S _ R E W R I T E _ A S _ U N I X _ P A T H ( M S Y S _ R O O T _ P A T H ) 
 
           A C _ M S G _ R E S U L T ( [ $ M S Y S _ R O O T _ P A T H ] ) 
 
           W I N D O W S _ E N V _ R O O T _ P A T H = " $ M S Y S _ R O O T _ P A T H " 
 
 +         E X E C U T A B L E _ S U F F I X = " " 
 
 +     e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +         E X E C U T A B L E _ S U F F I X = " . e x e " 
 
       e l s e 
 
 -         A C _ M S G _ E R R O R ( [ U n k n o w n   W i n d o w s   e n v i r o n m e n t .   N e i t h e r   c y g w i n   n o r   m s y s   w a s   d e t e c t e d . ] ) 
 
 +         A C _ M S G _ E R R O R ( [ U n k n o w n   W i n d o w s   e n v i r o n m e n t .   N e i t h e r   c y g w i n ,   m s y s ,   n o r   w s l   w a s   d e t e c t e d . ] ) 
 
       f i 
 
   
 
       #   T e s t   i f   w i n d o w s   o r   u n i x   ( c y g w i n / m s y s )   f i n d   i s   f i r s t   i n   p a t h . 
 
 @ @   - 3 9 5 , 6   + 5 2 4 , 8   @ @ 
 
                       |   t r   '   '   ' \ n '   |   $ G R E P   ' ^ / . / '   |   $ S O R T   |   $ U N I Q ` 
 
               f i x p a t h _ a r g u m e n t _ l i s t = ` e c h o   $ a l l _ u n i q u e _ p r e f i x e s     |   t r   '   '   ' @ ' ` 
 
               F I X P A T H = " $ F I X P A T H _ B I N   - m $ f i x p a t h _ a r g u m e n t _ l i s t " 
 
 +         e l i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   x w i n d o w s . w s l ;   t h e n 
 
 +             F I X P A T H = " $ F I X P A T H _ B I N   - w " 
 
           f i 
 
           F I X P A T H _ S R C _ W = " $ F I X P A T H _ S R C " 
 
           F I X P A T H _ B I N _ W = " $ F I X P A T H _ B I N " 
 
 @ @   - 4 1 2 , 6   + 5 4 3 , 1 7   @ @ 
 
               A C _ M S G _ E R R O R ( [ C o u l d   n o t   c r e a t e   $ F I X P A T H _ B I N ] ) 
 
           f i 
 
           A C _ M S G _ R E S U L T ( [ y e s ] ) 
 
 + 
 
 +         i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +             O L D _ W S L E N V = " $ W S L E N V " 
 
 +             W S L E N V = ` $ E C H O   $ W S L E N V   |   $ S E D   ' s / P A T H \ / l : / / ' ` 
 
 +             B A S I C _ A P P E N D _ T O _ P A T H ( W S L E N V ,   " F I X P A T H _ P A T H " ) 
 
 +             e x p o r t   W S L E N V 
 
 +             e x p o r t   F I X P A T H _ P A T H = $ V S _ P A T H _ W I N D O W S 
 
 + 	     A C _ M S G _ N O T I C E ( [ F I X P A T H _ P A T H   i s   $ F I X P A T H _ P A T H ] ) 
 
 + 	     A C _ M S G _ N O T I C E ( [ R e w r i t i n g   W S L E N V   f r o m   $ O L D _ W S L E N V   t o   $ W S L E N V ] ) 
 
 +         f i 
 
 + 
 
           A C _ M S G _ C H E C K I N G ( [ i f   f i x p a t h . e x e   w o r k s ] ) 
 
           c d   $ F I X P A T H _ D I R 
 
           $ F I X P A T H   $ C C   $ F I X P A T H _ S R C   - F e $ F I X P A T H _ D I R / f i x p a t h 2 . e x e   \ 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / b o o t - j d k . m 4 
 
 - - -   a / m a k e / a u t o c o n f / b o o t - j d k . m 4 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / b o o t - j d k . m 4 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 6 3 , 1 8   + 6 3 , 1 8   @ @ 
 
           #   I f   p r e v i o u s   s t e p   c l a i m e d   t o   h a v e   f o u n d   a   J D K ,   c h e c k   i t   t o   s e e   i f   i t   s e e m s   t o   b e   v a l i d . 
 
           i f   t e s t   " x $ B O O T _ J D K _ F O U N D "   =   x m a y b e ;   t h e n 
 
               #   D o   w e   h a v e   a   b i n / j a v a ? 
 
 -             i f   t e s t   !   - x   " $ B O O T _ J D K / b i n / j a v a " ;   t h e n 
 
 +             i f   t e s t   !   - x   " $ B O O T _ J D K / b i n / j a v a $ E X E C U T A B L E _ S U F F I X " ;   t h e n 
 
                   A C _ M S G _ N O T I C E ( [ P o t e n t i a l   B o o t   J D K   f o u n d   a t   $ B O O T _ J D K   d i d   n o t   c o n t a i n   b i n / j a v a ;   i g n o r i n g ] ) 
 
                   B O O T _ J D K _ F O U N D = n o 
 
               e l s e 
 
                   #   D o   w e   h a v e   a   b i n / j a v a c ? 
 
 -                 i f   t e s t   !   - x   " $ B O O T _ J D K / b i n / j a v a c " ;   t h e n 
 
 +                 i f   t e s t   !   - x   " $ B O O T _ J D K / b i n / j a v a c $ E X E C U T A B L E _ S U F F I X " ;   t h e n 
 
                       A C _ M S G _ N O T I C E ( [ P o t e n t i a l   B o o t   J D K   f o u n d   a t   $ B O O T _ J D K   d i d   n o t   c o n t a i n   b i n / j a v a c ;   i g n o r i n g ] ) 
 
                       A C _ M S G _ N O T I C E ( [ ( T h i s   m i g h t   b e   a n   J R E   i n s t e a d   o f   a n   J D K ) ] ) 
 
                       B O O T _ J D K _ F O U N D = n o 
 
                   e l s e 
 
                       #   O h ,   t h i s   i s   l o o k i n g   g o o d !   W e   p r o b a b l y   h a v e   f o u n d   a   p r o p e r   J D K .   I s   i t   t h e   c o r r e c t   v e r s i o n ? 
 
 -                     B O O T _ J D K _ V E R S I O N = ` " $ B O O T _ J D K / b i n / j a v a "   $ U S E R _ B O O T _ J D K _ O P T I O N S   - v e r s i o n   2 > & 1   |   $ H E A D   - n   1 ` 
 
 +                     B O O T _ J D K _ V E R S I O N = ` " $ B O O T _ J D K / b i n / j a v a $ E X E C U T A B L E _ S U F F I X "   $ U S E R _ B O O T _ J D K _ O P T I O N S   - v e r s i o n   2 > & 1   |   $ H E A D   - n   1 ` 
 
                       i f   [   [ [   " $ B O O T _ J D K _ V E R S I O N "   = ~   " P i c k e d   u p "   ] ]   ] ;   t h e n 
 
                           A C _ M S G _ N O T I C E ( [ Y o u   h a v e   _ J A V A _ O P T I O N S   o r   J A V A _ T O O L _ O P T I O N S   s e t .   T h i s   c a n   m e s s   u p   t h e   b u i l d .   P l e a s e   u s e   - - w i t h - b o o t - j d k - j v m a r g s   i n s t e a d . ] ) 
 
                           A C _ M S G _ N O T I C E ( [ J a v a   r e p o r t s :   " $ B O O T _ J D K _ V E R S I O N " . ] ) 
 
 @ @   - 1 0 1 , 7   + 1 0 1 , 7   @ @ 
 
                           A C _ M S G _ C H E C K I N G ( [ f o r   B o o t   J D K ] ) 
 
                           A C _ M S G _ R E S U L T ( [ $ B O O T _ J D K ] ) 
 
                           A C _ M S G _ C H E C K I N G ( [ B o o t   J D K   v e r s i o n ] ) 
 
 -                         B O O T _ J D K _ V E R S I O N = ` " $ B O O T _ J D K / b i n / j a v a "   $ U S E R _ B O O T _ J D K _ O P T I O N S   - v e r s i o n   2 > & 1   |   $ T R   ' \ n \ r '   '     ' ` 
 
 +                         B O O T _ J D K _ V E R S I O N = ` " $ B O O T _ J D K / b i n / j a v a $ E X E C U T A B L E _ S U F F I X "   $ U S E R _ B O O T _ J D K _ O P T I O N S   - v e r s i o n   2 > & 1   |   $ T R   ' \ n \ r '   '     ' ` 
 
                           A C _ M S G _ R E S U L T ( [ $ B O O T _ J D K _ V E R S I O N ] ) 
 
                       f i   #   e n d   c h e c k   j d k   v e r s i o n 
 
                   f i   #   e n d   c h e c k   j a v a c 
 
 @ @   - 3 3 5 , 1 1   + 3 3 5 , 1 1   @ @ 
 
       A C _ S U B S T ( B O O T _ J D K ) 
 
   
 
       #   S e t u p   t o o l s   f r o m   t h e   B o o t   J D K . 
 
 -     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A V A ,   j a v a ) 
 
 -     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A V A C ,   j a v a c ) 
 
 -     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A V A D O C ,   j a v a d o c ) 
 
 -     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A R ,   j a r ) 
 
 -     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A R S I G N E R ,   j a r s i g n e r ) 
 
 +     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A V A ,   j a v a $ E X E C U T A B L E _ S U F F I X ) 
 
 +     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A V A C ,   j a v a c $ E X E C U T A B L E _ S U F F I X ) 
 
 +     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A V A D O C ,   j a v a d o c $ E X E C U T A B L E _ S U F F I X ) 
 
 +     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A R ,   j a r $ E X E C U T A B L E _ S U F F I X ) 
 
 +     B O O T J D K _ C H E C K _ T O O L _ I N _ B O O T J D K ( J A R S I G N E R ,   j a r s i g n e r $ E X E C U T A B L E _ S U F F I X ) 
 
   
 
       #   F i n a l l y ,   s e t   s o m e   o t h e r   o p t i o n s . . . 
 
   
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / b u i l d - a u x / c o n f i g . g u e s s 
 
 - - -   a / m a k e / a u t o c o n f / b u i l d - a u x / c o n f i g . g u e s s 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / b u i l d - a u x / c o n f i g . g u e s s 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 6 0 , 6   + 6 0 , 1 5   @ @ 
 
       e s a c 
 
   f i 
 
   
 
 + #   T e s t   a n d   f i x   w s l 
 
 + e c h o   $ O U T   |   g r e p   x 8 6 _ 6 4 - u n k n o w n - l i n u x - g n u   >   / d e v / n u l l   2 >   / d e v / n u l l 
 
 + i f   t e s t   $ ?   =   0 ;   t h e n 
 
 +     u n a m e   - r   |   g r e p   M i c r o s o f t   >   / d e v / n u l l   2 >   / d e v / n u l l 
 
 +     i f   t e s t   $ ?   =   0 ;   t h e n 
 
 +         O U T = " x 8 6 _ 6 4 - p c - w s l " 
 
 +     f i 
 
 + f i 
 
 + 
 
   #   T e s t   a n d   f i x   a r c h i t e c t u r e   s t r i n g   o n   A I X 
 
   #   O n   A I X   ' c o n f i g . g u e s s '   r e t u r n s   ' p o w e r p c '   a s   a r c h i t e c t u r e   b u t   ' p o w e r p c '   i s 
 
   #   i m p l i c i t e l y   h a n d l e d   a s   3 2 - b i t   a r c h i t e c t u r e   i n   ' p l a t f o r m . m 4 '   s o   w e   c h e c k 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / b u i l d - a u x / c o n f i g . s u b 
 
 - - -   a / m a k e / a u t o c o n f / b u i l d - a u x / c o n f i g . s u b 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / b u i l d - a u x / c o n f i g . s u b 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 2 9 , 7   + 2 9 , 1 3   @ @ 
 
   
 
   D I R = ` d i r n a m e   $ 0 ` 
 
   
 
 - #   F i r s t ,   f i l t e r   o u t   e v e r y t h i n g   t h a t   d o e s n ' t   b e g i n   w i t h   " a a r c h 6 4 - " 
 
 + #   A l l o w   w s l 
 
 + i f   e c h o   $ *   |   g r e p   x 8 6 _ 6 4 - p c - w s l   > / d e v / n u l l   ;   t h e n 
 
 +         e c h o   $ * 
 
 +         e x i t 
 
 + f i 
 
 + 
 
 + #   F i l t e r   o u t   e v e r y t h i n g   t h a t   d o e s n ' t   b e g i n   w i t h   " a a r c h 6 4 - " 
 
   i f   !   e c h o   $ *   |   g r e p   ' ^ a a r c h 6 4 - '   > / d e v / n u l l   ;   t h e n 
 
           .   $ D I R / a u t o c o n f - c o n f i g . s u b   " $ @ " 
 
           #   a u t o c o n f - c o n f i g . s u b   e x i t s ,   s o   w e   n e v e r   r e a c h   h e r e ,   b u t   j u s t   i n 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / p l a t f o r m . m 4 
 
 - - -   a / m a k e / a u t o c o n f / p l a t f o r m . m 4 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / p l a t f o r m . m 4 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 1 8 8 , 6   + 1 8 8 , 1 0   @ @ 
 
               V A R _ O S = w i n d o w s 
 
               V A R _ O S _ E N V = w i n d o w s . c y g w i n 
 
               ; ; 
 
 +         * w s l * ) 
 
 +             V A R _ O S = w i n d o w s 
 
 +             V A R _ O S _ E N V = w i n d o w s . w s l 
 
 +             ; ; 
 
           * m i n g w * ) 
 
               V A R _ O S = w i n d o w s 
 
               V A R _ O S _ E N V = w i n d o w s . m s y s 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / s p e c . g m k . i n 
 
 - - -   a / m a k e / a u t o c o n f / s p e c . g m k . i n 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / s p e c . g m k . i n 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 1 2 2 , 7   + 1 2 2 , 1 2   @ @ 
 
   i f e q   ( $ ( O P E N J D K _ T A R G E T _ O S ) ,   w i n d o w s ) 
 
       #   O n   W i n d o w s ,   t h e   V i s u a l   S t u d i o   t o o l c h a i n   n e e d s   t h e   P A T H   t o   b e   a d j u s t e d 
 
       #   t o   i n c l u d e   V i s u a l   S t u d i o   t o o l s   ( t h i s   n e e d s   t o   b e   i n   c y g w i n / m s y s   s t y l e ) . 
 
 -     e x p o r t   P A T H : = @ V S _ P A T H @ 
 
 +     i f e q   ( $ ( O P E N J D K _ T A R G E T _ O S _ E N V ) ,   w i n d o w s . w s l ) 
 
 +         e x p o r t   F I X P A T H _ P A T H : = " @ V S _ P A T H _ W I N D O W S @ " 
 
 +         e x p o r t   W S L E N V : = $ ( W S L E N V ) : F I X P A T H _ P A T H : D E B U G _ F I X P A T H 
 
 +     e l s e 
 
 +         e x p o r t   P A T H : = @ V S _ P A T H @ 
 
 +     e n d i f 
 
   e n d i f 
 
   
 
   S Y S R O O T _ C F L A G S   : =   @ S Y S R O O T _ C F L A G S @ 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / t o o l c h a i n . m 4 
 
 - - -   a / m a k e / a u t o c o n f / t o o l c h a i n . m 4 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / t o o l c h a i n . m 4 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 2 8 1 , 1 3   + 2 8 1 , 1 3   @ @ 
 
   
 
       T O O L C H A I N _ C C _ B I N A R Y _ c l a n g = " c l a n g " 
 
       T O O L C H A I N _ C C _ B I N A R Y _ g c c = " g c c " 
 
 -     T O O L C H A I N _ C C _ B I N A R Y _ m i c r o s o f t = " c l " 
 
 +     T O O L C H A I N _ C C _ B I N A R Y _ m i c r o s o f t = " c l $ E X E C U T A B L E _ S U F F I X " 
 
       T O O L C H A I N _ C C _ B I N A R Y _ s o l s t u d i o = " c c " 
 
       T O O L C H A I N _ C C _ B I N A R Y _ x l c = " x l c _ r " 
 
   
 
       T O O L C H A I N _ C X X _ B I N A R Y _ c l a n g = " c l a n g + + " 
 
       T O O L C H A I N _ C X X _ B I N A R Y _ g c c = " g + + " 
 
 -     T O O L C H A I N _ C X X _ B I N A R Y _ m i c r o s o f t = " c l " 
 
 +     T O O L C H A I N _ C X X _ B I N A R Y _ m i c r o s o f t = " c l $ E X E C U T A B L E _ S U F F I X " 
 
       T O O L C H A I N _ C X X _ B I N A R Y _ s o l s t u d i o = " C C " 
 
       T O O L C H A I N _ C X X _ B I N A R Y _ x l c = " x l C _ r " 
 
   
 
 @ @   - 3 3 3 , 9   + 3 3 3 , 1 7   @ @ 
 
       i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S "   =   " x w i n d o w s "   \ 
 
               & &   t e s t   " x $ T O O L C H A I N _ T Y P E "   =   " x m i c r o s o f t " ;   t h e n 
 
           T O O L C H A I N _ S E T U P _ V I S U A L _ S T U D I O _ E N V 
 
 -         #   R e s e t   p a t h   t o   V S _ P A T H .   I t   w i l l   i n c l u d e   e v e r y t h i n g   t h a t   w a s   o n   P A T H   a t   t h e   t i m e   w e 
 
 -         #   r a n   T O O L C H A I N _ S E T U P _ V I S U A L _ S T U D I O _ E N V . 
 
 -         P A T H = " $ V S _ P A T H " 
 
 +         i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +             #   A p p e n d   V S _ P A T H 
 
 +             B A S I C _ A P P E N D _ T O _ P A T H ( P A T H ,   $ V S _ P A T H ) 
 
 +             B A S I C _ A P P E N D _ T O _ P A T H ( W S L E N V ,   " P A T H / l : L I B : I N C L U D E " ) 
 
 +             e x p o r t   W S L E N V 
 
 +         e l s e 
 
 +             #   R e s e t   p a t h   t o   V S _ P A T H .   I t   w i l l   i n c l u d e   e v e r y t h i n g   t h a t   w a s   o n   P A T H   a t   t h e   t i m e   w e 
 
 +             #   r a n   T O O L C H A I N _ S E T U P _ V I S U A L _ S T U D I O _ E N V . 
 
 +             B A S I C _ A P P E N D _ T O _ P A T H ( P A T H ,   $ V S _ P A T H ) 
 
 +             A C _ M S G _ N O T I C E ( P A T H   $ P A T H ) 
 
 +         f i 
 
           #   T h e   m i c r o s o f t   t o o l c h a i n   a l s o   r e q u i r e s   I N C L U D E   a n d   L I B   t o   b e   s e t . 
 
           e x p o r t   I N C L U D E = " $ V S _ I N C L U D E " 
 
           e x p o r t   L I B = " $ V S _ L I B " 
 
 @ @   - 4 3 0 , 7   + 4 3 8 , 7   @ @ 
 
           #   T h e r e   i s   n o   s p e c i f i c   v e r s i o n   f l a g ,   b u t   a l l   o u t p u t   s t a r t s   w i t h   a   v e r s i o n   s t r i n g . 
 
           #   F i r s t   l i n e   t y p i c a l l y   l o o k s   s o m e t h i n g   l i k e : 
 
           #   M i c r o s o f t   ( R )   3 2 - b i t   C / C + +   O p t i m i z i n g   C o m p i l e r   V e r s i o n   1 6 . 0 0 . 4 0 2 1 9 . 0 1   f o r   8 0 x 8 6 
 
 -         C O M P I L E R _ V E R S I O N _ O U T P U T = ` $ C O M P I L E R   2 > & 1   |   $ H E A D   - n   1   |   $ T R   - d   ' \ r ' ` 
 
 +         C O M P I L E R _ V E R S I O N _ O U T P U T = ` " $ C O M P I L E R "   2 > & 1   |   $ G R E P   - v   ' E R R O R . * U t i l T r a n s l a t e P a t h L i s t '   |   $ H E A D   - n   1   |   $ T R   - d   ' \ r ' ` 
 
           #   C h e c k   t h a t   t h i s   i s   l i k e l y   t o   b e   M i c r o s o f t   C L . E X E . 
 
           $ E C H O   " $ C O M P I L E R _ V E R S I O N _ O U T P U T "   |   $ G R E P   " M i c r o s o f t . * C o m p i l e r "   >   / d e v / n u l l 
 
           i f   t e s t   $ ?   - n e   0 ;   t h e n 
 
 @ @   - 6 9 8 , 7   + 7 0 6 , 7   @ @ 
 
           #   I n   t h e   M i c r o s o f t   t o o l c h a i n   w e   h a v e   a   s e p a r a t e   L D   c o m m a n d   " l i n k " . 
 
           #   M a k e   s u r e   w e   r e j e c t   / u s r / b i n / l i n k   ( a s   d e t e r m i n e d   i n   C Y G W I N _ L I N K ) ,   w h i c h   i s 
 
           #   a   c y g w i n   p r o g r a m   f o r   s o m e t h i n g   c o m p l e t e l y   d i f f e r e n t . 
 
 -         A C _ C H E C K _ P R O G ( [ L D ] ,   [ l i n k ] , [ l i n k ] , , ,   [ $ C Y G W I N _ L I N K ] ) 
 
 +         A C _ C H E C K _ P R O G ( [ L D ] ,   [ l i n k . e x e ] , [ l i n k . e x e ] , , ,   [ $ C Y G W I N _ L I N K ] ) 
 
           B A S I C _ F I X U P _ E X E C U T A B L E ( L D ) 
 
           #   V e r i f y   t h a t   w e   i n d e e d   s u c c e e d e d   w i t h   t h i s   t r i c k . 
 
           A C _ M S G _ C H E C K I N G ( [ i f   t h e   f o u n d   l i n k . e x e   i s   a c t u a l l y   t h e   V i s u a l   S t u d i o   l i n k e r ] ) 
 
 @ @   - 7 5 0 , 7   + 7 5 8 , 7   @ @ 
 
       # 
 
       i f   t e s t   " x $ T O O L C H A I N _ T Y P E "   =   x m i c r o s o f t ;   t h e n 
 
           #   T h e   c o r r e s p o n d i n g   a r   t o o l   i s   l i b . e x e   ( u s e d   t o   c r e a t e   s t a t i c   l i b r a r i e s ) 
 
 -         A C _ C H E C K _ P R O G ( [ A R ] ,   [ l i b ] , [ l i b ] , , , ) 
 
 +         A C _ C H E C K _ P R O G ( [ A R ] ,   [ l i b . e x e ] , [ l i b . e x e ] , , , ) 
 
       e l i f   t e s t   " x $ T O O L C H A I N _ T Y P E "   =   x g c c ;   t h e n 
 
           B A S I C _ C H E C K _ T O O L S ( A R ,   a r   g c c - a r ) 
 
       e l s e 
 
 @ @   - 7 7 4 , 1 2   + 7 8 2 , 1 2   @ @ 
 
       f i 
 
   
 
       i f   t e s t   " x $ T O O L C H A I N _ T Y P E "   =   x m i c r o s o f t ;   t h e n 
 
 -         A C _ C H E C K _ P R O G ( [ M T ] ,   [ m t ] ,   [ m t ] , , ,   [ / u s r / b i n / m t ] ) 
 
 +         A C _ C H E C K _ P R O G ( [ M T ] ,   [ m t . e x e ] ,   [ m t . e x e ] , , ,   [ / u s r / b i n / m t ] ) 
 
           B A S I C _ F I X U P _ E X E C U T A B L E ( M T ) 
 
           #   S e t u p   t h e   r e s o u r c e   c o m p i l e r   ( R C ) 
 
 -         A C _ C H E C K _ P R O G ( [ R C ] ,   [ r c ] ,   [ r c ] , , ,   [ / u s r / b i n / r c ] ) 
 
 +         A C _ C H E C K _ P R O G ( [ R C ] ,   [ r c . e x e ] ,   [ r c . e x e ] , , ,   [ / u s r / b i n / r c ] ) 
 
           B A S I C _ F I X U P _ E X E C U T A B L E ( R C ) 
 
 -         A C _ C H E C K _ P R O G ( [ D U M P B I N ] ,   [ d u m p b i n ] ,   [ d u m p b i n ] , , , ) 
 
 +         A C _ C H E C K _ P R O G ( [ D U M P B I N ] ,   [ d u m p b i n . e x e ] ,   [ d u m p b i n . e x e ] , , , ) 
 
           B A S I C _ F I X U P _ E X E C U T A B L E ( D U M P B I N ) 
 
           #   W e   n e e d   t o   c h e c k   f o r   ' m s b u i l d . e x e '   b e c a u s e   a t   t h e   p l a c e   w h e r e   w e   e x p e c t   t o 
 
           #   f i n d   ' m s b u i l d . e x e '   t h e r e ' s   a l s o   a   d i r e c t o r y   c a l l e d   ' m s b u i l d '   a n d   c o n f i g u r e 
 
 @ @   - 9 9 9 , 7   + 1 0 0 7 , 7   @ @ 
 
       #   C h e c k   f o r   e x t r a   p o t e n t i a l   b r o k e n n e s s . 
 
       i f   t e s t     " x $ T O O L C H A I N _ T Y P E "   =   x m i c r o s o f t ;   t h e n 
 
           #   O n   W i n d o w s ,   d o u b l e - c h e c k   t h a t   w e   g o t   t h e   r i g h t   c o m p i l e r . 
 
 -         C C _ V E R S I O N _ O U T P U T = ` $ C C   2 > & 1   |   $ H E A D   - n   1   |   $ T R   - d   ' \ r ' ` 
 
 +         C C _ V E R S I O N _ O U T P U T = ` $ C C   2 > & 1   |   $ G R E P   - v   ' E R R O R . * U t i l T r a n s l a t e P a t h L i s t '   |   $ H E A D   - n   1   |   $ T R   - d   ' \ r ' ` 
 
           C O M P I L E R _ C P U _ T E S T = ` $ E C H O   $ C C _ V E R S I O N _ O U T P U T   |   $ S E D   - n   " s / ^ . *   \ ( . * \ ) $ / \ 1 / p " ` 
 
           i f   t e s t   " x $ O P E N J D K _ T A R G E T _ C P U "   =   " x x 8 6 " ;   t h e n 
 
               i f   t e s t   " x $ C O M P I L E R _ C P U _ T E S T "   ! =   " x 8 0 x 8 6 "   - a   " x $ C O M P I L E R _ C P U _ T E S T "   ! =   " x x 8 6 " ;   t h e n 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / a u t o c o n f / t o o l c h a i n _ w i n d o w s . m 4 
 
 - - -   a / m a k e / a u t o c o n f / t o o l c h a i n _ w i n d o w s . m 4 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / a u t o c o n f / t o o l c h a i n _ w i n d o w s . m 4 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 1 1 5 , 7   + 1 1 5 , 7   @ @ 
 
                   V C V A R S F I L E S = " v c / b i n / v c v a r s 3 2 . b a t   v c / a u x i l i a r y / b u i l d / v c v a r s 3 2 . b a t " 
 
               e l s e 
 
                   V C V A R S F I L E S = " v c / b i n / a m d 6 4 / v c v a r s 6 4 . b a t   v c / b i n / x 8 6 _ a m d 6 4 / v c v a r s x 8 6 _ a m d 6 4 . b a t   \ 
 
 -                         v c / a u x i l i a r y / b u i l d / v c v a r s x 8 6 _ a m d 6 4 . b a t   v c / a u x i l i a r y / b u i l d / v c v a r s 6 4 . b a t " 
 
 +                         V C / A u x i l i a r y / B u i l d / v c v a r s x 8 6 _ a m d 6 4 . b a t   V C / A u x i l i a r y / B u i l d / v c v a r s 6 4 . b a t " 
 
               f i 
 
   
 
               f o r   V C V A R S F I L E   i n   $ V C V A R S F I L E S ;   d o 
 
 @ @   - 2 2 2 , 7   + 2 2 2 , 6   @ @ 
 
               [ C : / P r o g r a m   F i l e s / $ V S _ I N S T A L L _ D I R ] ,   [ w e l l - k n o w n   n a m e ] ) 
 
       T O O L C H A I N _ C H E C K _ P O S S I B L E _ V I S U A L _ S T U D I O _ R O O T ( [ $ { V S _ V E R S I O N } ] , 
 
               [ C : / P r o g r a m   F i l e s   ( x 8 6 ) / $ V S _ I N S T A L L _ D I R ] ,   [ w e l l - k n o w n   n a m e ] ) 
 
 - 
 
       i f   t e s t   " x $ S D K _ I N S T A L L _ D I R "   ! =   x ;   t h e n 
 
           i f   t e s t   " x $ P r o g r a m W 6 4 3 2 "   ! =   x ;   t h e n 
 
               T O O L C H A I N _ C H E C K _ P O S S I B L E _ W I N _ S D K _ R O O T ( [ $ { V S _ V E R S I O N } ] , 
 
 @ @   - 3 3 9 , 7   + 3 3 8 , 7   @ @ 
 
   [ 
 
       #   S t o r e   p a t h   t o   c y g w i n   l i n k . e x e   t o   h e l p   e x c l u d i n g   i t   w h e n   s e a r c h i n g   f o r 
 
       #   V S   l i n k e r .   T h i s   m u s t   b e   d o n e   b e f o r e   c h a n g i n g   t h e   P A T H   w h e n   l o o k i n g   f o r   V S . 
 
 -     A C _ P A T H _ P R O G ( C Y G W I N _ L I N K ,   l i n k ) 
 
 +     A C _ P A T H _ P R O G ( C Y G W I N _ L I N K ,   l i n k . e x e ) 
 
       i f   t e s t   " x $ C Y G W I N _ L I N K "   ! =   x ;   t h e n 
 
           A C _ M S G _ C H E C K I N G ( [ i f   t h e   f i r s t   f o u n d   l i n k . e x e   i s   a c t u a l l y   t h e   C y g w i n   l i n k   t o o l ] ) 
 
           " $ C Y G W I N _ L I N K "   - - v e r s i o n   >   / d e v / n u l l 
 
 @ @   - 3 7 2 , 8   + 3 7 1 , 1 3   @ @ 
 
               #   I n s t e a d   c r e a t e   a   s h e l l   s c r i p t   w h i c h   w i l l   s e t   t h e   r e l e v a n t   v a r i a b l e s   w h e n   r u n . 
 
               W I N P A T H _ V S _ E N V _ C M D = " $ V S _ E N V _ C M D " 
 
               B A S I C _ W I N D O W S _ R E W R I T E _ A S _ W I N D O W S _ M I X E D _ P A T H ( [ W I N P A T H _ V S _ E N V _ C M D ] ) 
 
 -             W I N P A T H _ B A S H = " $ B A S H " 
 
 -             B A S I C _ W I N D O W S _ R E W R I T E _ A S _ W I N D O W S _ M I X E D _ P A T H ( [ W I N P A T H _ B A S H ] ) 
 
 + 
 
 +             i f   t e s t   " x $ O P E N J D K _ B U I L D _ O S _ E N V "   =   " x w i n d o w s . w s l " ;   t h e n 
 
 +                 W I N P A T H _ B A S H = " b a s h " 
 
 +             e l s e 
 
 +                 W I N P A T H _ B A S H = " $ B A S H " 
 
 +                 B A S I C _ W I N D O W S _ R E W R I T E _ A S _ W I N D O W S _ M I X E D _ P A T H ( [ W I N P A T H _ B A S H ] ) 
 
 +             f i 
 
   
 
               #   G e n e r a t e   a   D O S   b a t c h   f i l e   w h i c h   r u n s   $ V S _ E N V _ C M D ,   a n d   t h e n   c r e a t e s   a   s h e l l 
 
               #   s c r i p t   ( e x e c u t a b l e   b y   b a s h )   t h a t   w i l l   s e t u p   t h e   i m p o r t a n t   v a r i a b l e s . 
 
 @ @   - 3 8 1 , 7   + 3 8 5 , 7   @ @ 
 
               $ E C H O   " @ e c h o   o f f "   >     $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
               #   T h i s   w i l l   e n d   u p   s o m e t h i n g   l i k e : 
 
               #   c a l l   C : / p r o g r a ~ 2 / m i c r o s ~ 2 . 0 / v c / b i n / a m d 6 4 / v c v a r s 6 4 . b a t 
 
 -             $ E C H O   " c a l l   $ W I N P A T H _ V S _ E N V _ C M D   $ V S _ E N V _ A R G S "   > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
 +             $ E C H O   " c a l l   \ " $ W I N P A T H _ V S _ E N V _ C M D \ "   $ V S _ E N V _ A R G S "   > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
               #   I n   s o m e   c a s e s ,   t h e   V S _ E N V _ C M D   w i l l   c h a n g e   d i r e c t o r y ,   c h a n g e   b a c k   s o 
 
               #   t h e   s e t - v s - e n v . s h   e n d s   u p   i n   t h e   r i g h t   p l a c e . 
 
               $ E C H O   ' c d   % ~ d p 0 '   > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
 @ @   - 3 8 9 , 3 3   + 3 9 3 , 3 8   @ @ 
 
               #   C : / C y g W i n / b i n / b a s h   - c   ' e c h o   V S _ P A T H = \ " $ P A T H \ "   >   l o c a l d e v e n v . s h 
 
               #   T h e   t r a i l i n g   s p a c e   f o r   e v e r y o n e   e x c e p t   P A T H   i s   n o   t y p o ,   b u t   i s   n e e d e d   d u e 
 
               #   t o   t r a i l i n g   \   i n   t h e   W i n d o w s   p a t h s .   T h e s e   w i l l   b e   s t r i p p e d   l a t e r . 
 
 -             $ E C H O   " $ W I N P A T H _ B A S H   - c   ' e c h o   V S _ P A T H = " ' \ " $ P A T H \ "   >   s e t - v s - e n v . s h '   \ 
 
 +             #   T r y i n g   p u r e   C M D   e x t r a c t .   T h i s   r e s u l t s   i n   w i n d o w s   p a t h s   t h a t   n e e d   t o 
 
 +             #   b e   c o n v e r t e d   p o s t   e x t r a c t i o n ,   b u t   a   s i m p l e r   s c r i p t . 
 
 +             $ E C H O   ' e c h o   V S _ P A T H = " % P A T H % "   >   s e t - v s - e n v . s h '   \ 
 
                       > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
 -             $ E C H O   " $ W I N P A T H _ B A S H   - c   ' e c h o   V S _ I N C L U D E = " ' \ " $ I N C L U D E \ ; $ i n c l u d e   \ "   > >   s e t - v s - e n v . s h '   \ 
 
 -                     > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
 -             $ E C H O   " $ W I N P A T H _ B A S H   - c   ' e c h o   V S _ L I B = " ' \ " $ L I B \ ; $ l i b   \ "   > >   s e t - v s - e n v . s h '   \ 
 
 +             $ E C H O   ' e c h o   V S _ I N C L U D E = " % I N C L U D E %   "   > >   s e t - v s - e n v . s h '   \ 
 
                       > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
 -             $ E C H O   " $ W I N P A T H _ B A S H   - c   ' e c h o   V C I N S T A L L D I R = " ' \ " $ V C I N S T A L L D I R   \ "   > >   s e t - v s - e n v . s h '   \ 
 
 +             $ E C H O   ' e c h o   V S _ L I B = " % L I B %   "   > >   s e t - v s - e n v . s h '   \ 
 
 +                     > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
 +             $ E C H O   ' e c h o   V C I N S T A L L D I R = " % V C I N S T A L L D I R %   "   > >   s e t - v s - e n v . s h '   \ 
 
                       > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
 -             $ E C H O   " $ W I N P A T H _ B A S H   - c   ' e c h o   W i n d o w s S d k D i r = " ' \ " $ W i n d o w s S d k D i r   \ "   > >   s e t - v s - e n v . s h '   \ 
 
 +             $ E C H O   ' e c h o   W i n d o w s S d k D i r = " % W i n d o w s S d k D i r %   "   > >   s e t - v s - e n v . s h '   \ 
 
                       > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
 -             $ E C H O   " $ W I N P A T H _ B A S H   - c   ' e c h o   W I N D O W S S D K D I R = " ' \ " $ W I N D O W S S D K D I R   \ "   > >   s e t - v s - e n v . s h '   \ 
 
 +             $ E C H O   ' e c h o   W I N D O W S S D K D I R = " % W I N D O W S S D K D I R %   "   > >   s e t - v s - e n v . s h '   \ 
 
                       > >   $ E X T R A C T _ V C _ E N V _ B A T _ F I L E 
 
   
 
               #   N o w   e x e c u t e   t h e   n e w l y   c r e a t e d   b a t   f i l e . 
 
               #   T h e   |   c a t   i s   t o   s t o p   S e t E n v . C m d   t o   m e s s   w i t h   s y s t e m   c o l o r s   o n   m s y s . 
 
               #   C h a n g e   d i r e c t o r y   s o   w e   d o n ' t   n e e d   t o   m e s s   w i t h   W i n d o w s   p a t h s   i n   r e d i r e c t s . 
 
               c d   $ V S _ E N V _ T M P _ D I R 
 
 -             c m d   / c   e x t r a c t - v s - e n v . b a t   |   $ C A T 
 
 +             $ C M D   / c   e x t r a c t - v s - e n v . b a t   |   $ C A T 
 
               c d   $ C U R D I R 
 
   
 
               i f   t e s t   !   - s   $ V S _ E N V _ T M P _ D I R / s e t - v s - e n v . s h ;   t h e n 
 
 -                 A C _ M S G _ N O T I C E ( [ C o u l d   n o t   s u c c e s f u l l y   e x t r a c t   t h e   e n v i o n m e n t   v a r i a b l e s   n e e d e d   f o r   t h e   V S   s e t u p . ] ) 
 
 +                 A C _ M S G _ N O T I C E ( [ C o u l d   n o t   s u c c e s f u l l y   e x t r a c t   t h e   e n v i r o n m e n t   v a r i a b l e s   n e e d e d   f o r   t h e   V S   s e t u p . ] ) 
 
                   A C _ M S G _ N O T I C E ( [ T r y   s e t t i n g   - - w i t h - t o o l s - d i r   t o   t h e   V C / b i n   d i r e c t o r y   w i t h i n   t h e   V S   i n s t a l l a t i o n ] ) 
 
                   A C _ M S G _ N O T I C E ( [ o r   r u n   " b a s h . e x e   - l "   f r o m   a   V S   c o m m a n d   p r o m p t   a n d   t h e n   r u n   c o n f i g u r e   f r o m   t h e r e . ] ) 
 
                   A C _ M S G _ E R R O R ( [ C a n n o t   c o n t i n u e ] ) 
 
               f i 
 
   
 
 +             #   R e m o v e   w i n d o w s   l i n e   e n d i n g s 
 
 +             $ S E D   - i   - e   ' s | \ r | | g '   $ V S _ E N V _ T M P _ D I R / s e t - v s - e n v . s h 
 
 + 
 
               #   N o w   s e t   a l l   p a t h s   a n d   o t h e r   e n v   v a r i a b l e s .   T h i s   w i l l   a l l o w   t h e   r e s t   o f 
 
               #   t h e   c o n f i g u r e   s c r i p t   t o   f i n d   a n d   r u n   t h e   c o m p i l e r   i n   t h e   p r o p e r   w a y . 
 
               A C _ M S G _ N O T I C E ( [ S e t t i n g   e x t r a c t e d   e n v i r o n m e n t   v a r i a b l e s ] ) 
 
 @ @   - 4 5 5 , 9   + 4 6 4 , 2 7   @ @ 
 
               A C _ S U B S T ( V S _ I N C L U D E ) 
 
               A C _ S U B S T ( V S _ L I B ) 
 
   
 
 -             #   C o n v e r t   V S _ I N C L U D E   i n t o   S Y S R O O T _ C F L A G S 
 
 +             #   C o n v e r t   V S _ P A T H   t o   u n i x   s t y l e 
 
               O L D I F S = " $ I F S " 
 
               I F S = " ; " 
 
 +             V S _ P A T H _ W I N D O W S = " $ V S _ P A T H " 
 
 +             V S _ P A T H = " " 
 
 +             f o r   i   i n   $ V S _ P A T H _ W I N D O W S ;   d o 
 
 +                 p a t h = $ i 
 
 +                 #   O n l y   p r o c e s s   n o n - e m p t y   e l e m e n t s 
 
 +                 i f   t e s t   " x $ p a t h "   ! =   x ;   t h e n 
 
 +                     I F S = " $ O L D I F S " 
 
 +                     #   C h e c k   t h a t   d i r e c t o r y   e x i s t s   b e f o r e   c a l l i n g   f i x u p _ p a t h 
 
 +                     t e s t p a t h = $ p a t h 
 
 +                     B A S I C _ W I N D O W S _ R E W R I T E _ A S _ U N I X _ P A T H ( [ t e s t p a t h ] ) 
 
 +                     i f   t e s t   - d   " $ t e s t p a t h " ;   t h e n 
 
 +                         B A S I C _ F I X U P _ P A T H ( [ p a t h ] ) 
 
 +                         B A S I C _ A P P E N D _ T O _ P A T H ( V S _ P A T H ,   $ p a t h ) 
 
 +                     f i 
 
 +                     I F S = " ; " 
 
 +                 f i 
 
 +             d o n e 
 
 +             #   C o n v e r t   V S _ I N C L U D E   i n t o   S Y S R O O T _ C F L A G S 
 
               f o r   i   i n   $ V S _ I N C L U D E ;   d o 
 
                   i p a t h = $ i 
 
                   #   O n l y   p r o c e s s   n o n - e m p t y   e l e m e n t s 
 
 @ @   - 4 9 0 , 6   + 5 1 7 , 8   @ @ 
 
                   f i 
 
               d o n e 
 
               I F S = " $ O L D I F S " 
 
 + 
 
 +             A C _ S U B S T ( V S _ P A T H _ W I N D O W S ) 
 
           f i 
 
       e l s e 
 
           A C _ M S G _ R E S U L T ( [ n o t   f o u n d ] ) 
 
 @ @   - 6 0 0 , 1 0   + 6 2 9 , 1 0   @ @ 
 
               B A S I C _ W I N D O W S _ R E W R I T E _ A S _ U N I X _ P A T H ( C Y G W I N _ V S _ T O O L S _ D I R ) 
 
               i f   t e s t   " x $ O P E N J D K _ T A R G E T _ C P U _ B I T S "   =   x 6 4 ;   t h e n 
 
                   P O S S I B L E _ M S V C _ D L L = ` $ F I N D   " $ C Y G W I N _ V S _ T O O L S _ D I R "   - n a m e   $ D L L _ N A M E   \ 
 
 - 	         |   $ G R E P   - i   / x 6 4 /   |   $ H E A D   - - l i n e s   1 ` 
 
 +                 |   $ G R E P   - i   / x 6 4 /   |   $ H E A D   - - l i n e s   1 ` 
 
               e l s e 
 
                   P O S S I B L E _ M S V C _ D L L = ` $ F I N D   " $ C Y G W I N _ V S _ T O O L S _ D I R "   - n a m e   $ D L L _ N A M E   \ 
 
 - 	         |   $ G R E P   - i   / x 8 6 /   |   $ H E A D   - - l i n e s   1 ` 
 
 +                 |   $ G R E P   - i   / x 8 6 /   |   $ H E A D   - - l i n e s   1 ` 
 
               f i 
 
               T O O L C H A I N _ C H E C K _ P O S S I B L E _ M S V C _ D L L ( [ $ D L L _ N A M E ] ,   [ $ P O S S I B L E _ M S V C _ D L L ] , 
 
                       [ s e a r c h   o f   V S 1 0 0 C O M N T O O L S ] ) 
 
 @ @   - 6 1 6 , 1 4   + 6 4 5 , 1 4   @ @ 
 
           i f   t e s t   " x $ C Y G W I N _ V C _ I N S T A L L _ D I R "   ! =   x ;   t h e n 
 
               i f   t e s t   " x $ O P E N J D K _ T A R G E T _ C P U _ B I T S "   =   x 6 4 ;   t h e n 
 
                   P O S S I B L E _ M S V C _ D L L = ` $ F I N D   " $ C Y G W I N _ V C _ I N S T A L L _ D I R "   - n a m e   $ D L L _ N A M E   \ 
 
 - 	         |   $ G R E P   x 6 4   |   $ H E A D   - - l i n e s   1 ` 
 
 +                 |   $ G R E P   x 6 4   |   $ H E A D   - - l i n e s   1 ` 
 
               e l s e 
 
                   P O S S I B L E _ M S V C _ D L L = ` $ F I N D   " $ C Y G W I N _ V C _ I N S T A L L _ D I R "   - n a m e   $ D L L _ N A M E   \ 
 
 - 	         |   $ G R E P   x 8 6   |   $ G R E P   - v   i a 6 4   |   $ G R E P   - v   x 6 4   |   $ H E A D   - - l i n e s   1 ` 
 
 +                 |   $ G R E P   x 8 6   |   $ G R E P   - v   i a 6 4   |   $ G R E P   - v   x 6 4   |   $ H E A D   - - l i n e s   1 ` 
 
                   i f   t e s t   " x $ P O S S I B L E _ M S V C _ D L L "   =   x ;   t h e n 
 
                       #   W e ' r e   g r a s p i n g   a t   s t r a w s   n o w . . . 
 
                       P O S S I B L E _ M S V C _ D L L = ` $ F I N D   " $ C Y G W I N _ V C _ I N S T A L L _ D I R "   - n a m e   $ D L L _ N A M E   \ 
 
 - 	             |   $ H E A D   - - l i n e s   1 ` 
 
 +                     |   $ H E A D   - - l i n e s   1 ` 
 
                   f i 
 
               f i 
 
   
 
 @ @   - 6 9 3 , 7   + 7 2 2 , 7   @ @ 
 
       i f   t e s t   " x $ U S E _ U C R T "   =   " x t r u e " ;   t h e n 
 
           A C _ M S G _ C H E C K I N G ( [ f o r   U C R T   D L L   d i r ] ) 
 
           i f   t e s t   " x $ w i t h _ u c r t _ d l l _ d i r "   ! =   x ;   t h e n 
 
 -             i f   t e s t   - z   " $ ( l s   - d   " $ w i t h _ u c r t _ d l l _ d i r / * . d l l "   2 >   / d e v / n u l l ) " ;   t h e n 
 
 +             i f   t e s t   - z   " $ ( l s   - d   $ w i t h _ u c r t _ d l l _ d i r / * . d l l   2 >   / d e v / n u l l ) " ;   t h e n 
 
                   A C _ M S G _ R E S U L T ( [ n o ] ) 
 
                   A C _ M S G _ E R R O R ( [ C o u l d   n o t   f i n d   a n y   d l l s   i n   $ w i t h _ u c r t _ d l l _ d i r ] ) 
 
               e l s e 
 
 @ @   - 7 1 3 , 8   + 7 4 2 , 1 6   @ @ 
 
               f i 
 
               U C R T _ D L L _ D I R = " $ C Y G W I N _ W I N D O W S S D K D I R / R e d i s t / u c r t / D L L s / $ d l l _ s u b d i r " 
 
               i f   t e s t   - z   " $ ( l s   - d   " $ U C R T _ D L L _ D I R / " * . d l l   2 >   / d e v / n u l l ) " ;   t h e n 
 
 -                 A C _ M S G _ R E S U L T ( [ n o ] ) 
 
 -                 A C _ M S G _ E R R O R ( [ C o u l d   n o t   f i n d   a n y   d l l s   i n   $ U C R T _ D L L _ D I R ] ) 
 
 +                 #   T r y   w i t h   v e r s i o n   s u b d i r 
 
 +                 U C R T _ D L L _ D I R = " ` l s   - d   $ C Y G W I N _ W I N D O W S S D K D I R / R e d i s t / * / u c r t / D L L s / $ d l l _ s u b d i r   \ 
 
 +                         2 >   / d e v / n u l l   |   $ S O R T   - d   |   $ H E A D   - n 1 ` " 
 
 +                 i f   t e s t   - z   " $ U C R T _ D L L _ D I R "   \ 
 
 +                         | |   t e s t   - z   " $ ( l s   - d   " $ U C R T _ D L L _ D I R / " * . d l l   2 >   / d e v / n u l l ) " ;   t h e n 
 
 +                     A C _ M S G _ R E S U L T ( [ n o ] ) 
 
 +                     A C _ M S G _ E R R O R ( [ C o u l d   n o t   f i n d   a n y   d l l s   i n   $ U C R T _ D L L _ D I R ] ) 
 
 +                 e l s e 
 
 +                     A C _ M S G _ R E S U L T ( $ U C R T _ D L L _ D I R ) 
 
 +                 f i 
 
               e l s e 
 
                   A C _ M S G _ R E S U L T ( $ U C R T _ D L L _ D I R ) 
 
               f i 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / g e n d a t a / G e n d a t a - j a v a . b a s e . g m k 
 
 - - -   a / m a k e / g e n d a t a / G e n d a t a - j a v a . b a s e . g m k 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / g e n d a t a / G e n d a t a - j a v a . b a s e . g m k 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 5 5 , 7   + 5 5 , 7   @ @ 
 
   $ ( G E N D A T A _ C U R D A T A ) :   $ ( T O P D I R ) / m a k e / d a t a / c u r r e n c y / C u r r e n c y D a t a . p r o p e r t i e s   $ ( B U I L D _ T O O L S _ J D K ) 
 
   	 $ ( c a l l   M a k e D i r ,   $ ( @ D ) ) 
 
   	 $ ( R M )   $ @ 
 
 - 	 $ ( T O O L _ G E N E R A T E C U R R E N C Y D A T A )   - o   $ @ . t m p   <   $ < 
 
 + 	 $ ( T O O L _ G E N E R A T E C U R R E N C Y D A T A )   - o   $ @ . t m p   - i   $ < 
 
   	 $ ( M V )   $ @ . t m p   $ @ 
 
   	 $ ( C H M O D )   4 4 4   $ @ 
 
   
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / g e n s r c / G e n s r c B u f f e r . g m k 
 
 - - -   a / m a k e / g e n s r c / G e n s r c B u f f e r . g m k 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / g e n s r c / G e n s r c B u f f e r . g m k 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 2 3 0 , 7   + 2 3 0 , 8   @ @ 
 
       e n d i f 
 
   
 
       $ $ ( $ 1 _ D S T ) :   $ $ ( $ 1 _ D E P )   $ ( G E N S R C _ B U F F E R _ D S T ) / _ t h e . b u f f e r . d i r 
 
 - 	 $ ( T O O L _ S P P )   <   $ $ ( $ 1 _ S R C )   >   $ $ ( $ 1 _ O U T ) . t m p   \ 
 
 + 	 $ ( R M )   $ $ ( $ 1 _ O U T ) . t m p 
 
 + 	 $ ( T O O L _ S P P )   - i $ $ ( $ 1 _ S R C )   - o $ $ ( $ 1 _ O U T ) . t m p   \ 
 
   	         - K $ $ ( $ 1 _ t y p e )   \ 
 
   	         - K $ $ ( $ 1 _ c a t e g o r y )   \ 
 
   	         - K $ $ ( $ 1 _ s t r e a m s )   \ 
 
 @ @   - 2 6 0 , 1 2   + 2 6 1 , 1 2   @ @ 
 
                   i f e q   ( $ $ ( $ 1 _ B I N ) ,   1 ) 
 
   	     $ ( S E D )   - e   ' / # B I N / , $ $ $ $ d '   <   $ $ ( $ 1 _ O U T )   >   $ $ ( $ 1 _ D S T ) . t m p 
 
   	     $ ( R M )   $ $ ( $ 1 _ O U T ) 
 
 - 	     $ $ ( $ 1 _ c h a r _ C M D )   <   $ $ ( $ 1 _ S R C _ B I N )   > >   $ $ ( $ 1 _ D S T ) . t m p 
 
 - 	     $ $ ( $ 1 _ s h o r t _ C M D )   <   $ $ ( $ 1 _ S R C _ B I N )   > >   $ $ ( $ 1 _ D S T ) . t m p 
 
 - 	     $ $ ( $ 1 _ i n t _ C M D )   <   $ $ ( $ 1 _ S R C _ B I N )   > >   $ $ ( $ 1 _ D S T ) . t m p 
 
 - 	     $ $ ( $ 1 _ l o n g _ C M D )   <   $ $ ( $ 1 _ S R C _ B I N )   > >   $ $ ( $ 1 _ D S T ) . t m p 
 
 - 	     $ $ ( $ 1 _ f l o a t _ C M D )   <   $ $ ( $ 1 _ S R C _ B I N )   > >   $ $ ( $ 1 _ D S T ) . t m p 
 
 - 	     $ $ ( $ 1 _ d o u b l e _ C M D )   <   $ $ ( $ 1 _ S R C _ B I N )   > >   $ $ ( $ 1 _ D S T ) . t m p 
 
 + 	     $ $ ( $ 1 _ c h a r _ C M D )   - i $ $ ( $ 1 _ S R C _ B I N )   - o $ $ ( $ 1 _ D S T ) . t m p 
 
 + 	     $ $ ( $ 1 _ s h o r t _ C M D )   - i $ $ ( $ 1 _ S R C _ B I N )   - o $ $ ( $ 1 _ D S T ) . t m p 
 
 + 	     $ $ ( $ 1 _ i n t _ C M D )   - i $ $ ( $ 1 _ S R C _ B I N )   - o $ $ ( $ 1 _ D S T ) . t m p 
 
 + 	     $ $ ( $ 1 _ l o n g _ C M D )   - i $ $ ( $ 1 _ S R C _ B I N )   - o $ $ ( $ 1 _ D S T ) . t m p 
 
 + 	     $ $ ( $ 1 _ f l o a t _ C M D )   - i $ $ ( $ 1 _ S R C _ B I N )   - o $ $ ( $ 1 _ D S T ) . t m p 
 
 + 	     $ $ ( $ 1 _ d o u b l e _ C M D )   - i $ $ ( $ 1 _ S R C _ B I N )   - o $ $ ( $ 1 _ D S T ) . t m p 
 
   	     $ ( P R I N T F )   " } \ n "   > >   $ $ ( $ 1 _ D S T ) . t m p 
 
   	     m v   $ $ ( $ 1 _ D S T ) . t m p   $ $ ( $ 1 _ D S T ) 
 
                   e n d i f 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / g e n s r c / G e n s r c C h a r s e t C o d e r . g m k 
 
 - - -   a / m a k e / g e n s r c / G e n s r c C h a r s e t C o d e r . g m k 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / g e n s r c / G e n s r c C h a r s e t C o d e r . g m k 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 3 6 , 7   + 3 6 , 7   @ @ 
 
   $ ( G E N S R C _ C H A R S E T C O D E R _ D S T ) / C h a r s e t D e c o d e r . j a v a :   $ ( G E N S R C _ C H A R S E T C O D E R _ T E M P L A T E ) 
 
   	 $ ( c a l l   M a k e T a r g e t D i r ) 
 
   	 $ ( R M )   $ @ . t m p 
 
 - 	 $ ( T O O L _ S P P )   <   $ <   > $ @ . t m p   \ 
 
 + 	 $ ( T O O L _ S P P )   - i $ <   - o $ @ . t m p   \ 
 
   	         - K d e c o d e r   \ 
 
   	         - D A = ' A '   \ 
 
   	         - D a = ' a '   \ 
 
 @ @   - 7 1 , 7   + 7 1 , 7   @ @ 
 
   $ ( G E N S R C _ C H A R S E T C O D E R _ D S T ) / C h a r s e t E n c o d e r . j a v a :   $ ( G E N S R C _ C H A R S E T C O D E R _ T E M P L A T E ) 
 
   	 $ ( c a l l   M a k e T a r g e t D i r ) 
 
   	 $ ( R M )   $ @ . t m p 
 
 - 	 $ ( T O O L _ S P P )   <   $ <   > $ @ . t m p   \ 
 
 + 	 $ ( T O O L _ S P P )   - i $ <   - o $ @ . t m p   \ 
 
   	         - K e n c o d e r   \ 
 
   	         - D A = ' A n '   \ 
 
   	         - D a = ' a n '   \ 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / g e n s r c / G e n s r c V a r H a n d l e s . g m k 
 
 - - -   a / m a k e / g e n s r c / G e n s r c V a r H a n d l e s . g m k 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / g e n s r c / G e n s r c V a r H a n d l e s . g m k 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 5 9 , 8   + 5 9 , 9   @ @ 
 
   	     $ $ ( e v a l   $ 1 _ t y p e   : =   $ $ $ $ ( s h e l l   $ ( T R )   ' [ : u p p e r : ] '   ' [ : l o w e r : ] '   < < <   $ $ $ $ ( $ 1 _ T y p e ) ) ) 
 
                   e n d i f 
 
   	 $ $ ( c a l l   M a k e D i r ,   $ $ ( @ D ) ) 
 
 + 	 $ ( R M )   $ $ @ 
 
   	 $ ( T O O L _ S P P )   - n e l   - K $ $ ( $ 1 _ t y p e )   - D t y p e = $ $ ( $ 1 _ t y p e )   - D T y p e = $ $ ( $ 1 _ T y p e )   \ 
 
 - 	         $ $ ( $ 1 _ A R G S )   <   $ $ <   >   $ $ @ 
 
 + 	         $ $ ( $ 1 _ A R G S )   - i $ $ <   - o $ $ @ 
 
   
 
       G E N S R C _ V A R H A N D L E S   + =   $ $ ( $ 1 _ F I L E N A M E ) 
 
   e n d e f 
 
 @ @   - 1 4 7 , 1 0   + 1 4 8 , 1 1   @ @ 
 
   
 
       $ $ ( $ 1 _ F I L E N A M E ) :   $ ( V A R H A N D L E S _ S R C _ D I R ) / X - V a r H a n d l e B y t e A r r a y V i e w . j a v a . t e m p l a t e   $ ( B U I L D _ T O O L S _ J D K ) 
 
   	 $ $ ( c a l l   M a k e D i r ,   $ $ ( @ D ) ) 
 
 + 	 $ ( R M )   $ $ @ 
 
   	 $ ( T O O L _ S P P )   - n e l   - K $ $ ( $ 1 _ t y p e )   \ 
 
   	         - D t y p e = $ $ ( $ 1 _ t y p e )   - D T y p e = $ $ ( $ 1 _ T y p e )   - D B o x T y p e = $ $ ( $ 1 _ B o x T y p e )   \ 
 
   	         - D r a w T y p e = $ $ ( $ 1 _ r a w T y p e )   - D R a w T y p e = $ $ ( $ 1 _ R a w T y p e )   - D R a w B o x T y p e = $ $ ( $ 1 _ R a w B o x T y p e )   \ 
 
 - 	         $ $ ( $ 1 _ A R G S )   <   $ $ <   >   $ $ @ 
 
 + 	         $ $ ( $ 1 _ A R G S )   - i $ $ <   - o $ $ @ 
 
   
 
       G E N S R C _ V A R H A N D L E S   + =   $ $ ( $ 1 _ F I L E N A M E ) 
 
   e n d e f 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / g e n e r a t e c u r r e n c y d a t a / G e n e r a t e C u r r e n c y D a t a . j a v a 
 
 - - -   a / m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / g e n e r a t e c u r r e n c y d a t a / G e n e r a t e C u r r e n c y D a t a . j a v a 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / g e n e r a t e c u r r e n c y d a t a / G e n e r a t e C u r r e n c y D a t a . j a v a 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 2 8 , 7   + 2 8 , 9   @ @ 
 
   i m p o r t   j a v a . i o . I O E x c e p t i o n ; 
 
   i m p o r t   j a v a . i o . F i l e N o t F o u n d E x c e p t i o n ; 
 
   i m p o r t   j a v a . i o . D a t a O u t p u t S t r e a m ; 
 
 + i m p o r t   j a v a . i o . F i l e I n p u t S t r e a m ; 
 
   i m p o r t   j a v a . i o . F i l e O u t p u t S t r e a m ; 
 
 + i m p o r t   j a v a . i o . I n p u t S t r e a m ; 
 
   i m p o r t   j a v a . t e x t . S i m p l e D a t e F o r m a t ; 
 
   i m p o r t   j a v a . u t i l . D a t e ; 
 
   i m p o r t   j a v a . u t i l . H a s h M a p ; 
 
 @ @   - 1 3 4 , 1 9   + 1 3 6 , 4 4   @ @ 
 
           p r i v a t e   s t a t i c   S t r i n g   c u r r e n c i e s W i t h M i n o r U n i t s U n d e f i n e d ; 
 
   
 
           p u b l i c   s t a t i c   v o i d   m a i n ( S t r i n g [ ]   a r g s )   { 
 
 - 
 
 + 	         I n p u t S t r e a m   i n   =   S y s t e m . i n ; 
 
                   / /   L o o k   f o r   " - o   o u t p u t f i l e n a m e "   o p t i o n 
 
 -                 i f   (   a r g s . l e n g t h   = =   2   & &   a r g s [ 0 ] . e q u a l s ( " - o " )   )   { 
 
 -                         t r y   { 
 
 -                                 o u t   =   n e w   D a t a O u t p u t S t r e a m ( n e w   F i l e O u t p u t S t r e a m ( a r g s [ 1 ] ) ) ; 
 
 -                         }   c a t c h   (   F i l e N o t F o u n d E x c e p t i o n   e   )   { 
 
 -                                 S y s t e m . e r r . p r i n t l n ( " E r r o r :   "   +   e . g e t M e s s a g e ( ) ) ; 
 
 -                                 e . p r i n t S t a c k T r a c e ( S y s t e m . e r r ) ; 
 
 -                                 S y s t e m . e x i t ( 1 ) ; 
 
 -                         } 
 
 -                 }   e l s e   { 
 
 -                         S y s t e m . e r r . p r i n t l n ( " E r r o r :   I l l e g a l   a r g   c o u n t " ) ; 
 
 -                         S y s t e m . e x i t ( 1 ) ; 
 
 +                 f o r   ( i n t   n   =   0 ;   n   <   a r g s . l e n g t h ;   + + n )   { 
 
 +                         i f   ( a r g s [ n ] . e q u a l s ( " - o " ) )   { 
 
 + 	 	 	 	 + + n ; 
 
 + 	 	 	 	 i f   ( n   > =   a r g s . l e n g t h )   { 
 
 + 	 	 	 	 	 S y s t e m . e r r . p r i n t l n ( " E r r o r :   I n v a l i d   a r g u m e n t   f o r m a t " ) ; 
 
 + 	 	 	 	 	 S y s t e m . e x i t ( 1 ) ; 
 
 + 	 	 	 	 } 
 
 + 	 	 	 	 t r y   { 
 
 + 	 	 	 	 	 o u t   =   n e w   D a t a O u t p u t S t r e a m ( n e w   F i l e O u t p u t S t r e a m ( a r g s [ n ] ) ) ; 
 
 + 	 	 	 	 }   c a t c h   (   F i l e N o t F o u n d E x c e p t i o n   e   )   { 
 
 + 	 	 	 	 	 S y s t e m . e r r . p r i n t l n ( " E r r o r :   "   +   e . g e t M e s s a g e ( ) ) ; 
 
 + 	 	 	 	 	 e . p r i n t S t a c k T r a c e ( S y s t e m . e r r ) ; 
 
 + 	 	 	 	 	 S y s t e m . e x i t ( 1 ) ; 
 
 + 	 	 	 	 } 
 
 + 	 	 	 }   e l s e   i f   ( a r g s [ n ] . e q u a l s ( " - i " ) )   { 
 
 + 	 	 	 	 + + n ; 
 
 + 	 	 	 	 i f   ( n   > =   a r g s . l e n g t h )   { 
 
 + 	 	 	 	 	 S y s t e m . e r r . p r i n t l n ( " E r r o r :   I n v a l i d   a r g u m e n t   f o r m a t " ) ; 
 
 + 	 	 	 	 	 S y s t e m . e x i t ( 1 ) ; 
 
 + 	 	 	 	 } 
 
 + 	 	 	 	 t r y   { 
 
 + 	 	 	 	 	 i n   =   n e w   F i l e I n p u t S t r e a m ( a r g s [ n ] ) ; 
 
 + 	 	 	 	 }   c a t c h   (   F i l e N o t F o u n d E x c e p t i o n   e   )   { 
 
 + 	 	 	 	 	 S y s t e m . e r r . p r i n t l n ( " E r r o r :   "   +   e . g e t M e s s a g e ( ) ) ; 
 
 + 	 	 	 	 	 e . p r i n t S t a c k T r a c e ( S y s t e m . e r r ) ; 
 
 + 	 	 	 	 	 S y s t e m . e x i t ( 1 ) ; 
 
 + 	 	 	 	 } 
 
 + 	 	 	 }   e l s e   { 
 
 + 	 	 	 	 S y s t e m . e r r . p r i n t l n ( " E r r o r :   I n v a l i d   a r g u m e n t   "   +   a r g s [ n ] ) ; 
 
 + 	 	 	 	 S y s t e m . e x i t ( 1 ) ; 
 
 + 	 	 	 } 
 
 +                 } 
 
 + 
 
 +                 i f   ( o u t   = =   n u l l )   { 
 
 + 	 	 	 S y s t e m . e r r . p r i n t l n ( " E r r o r :   I n v a l i d   a r g u m e n t   f o r m a t " ) ; 
 
 + 	 	 	 S y s t e m . e x i t ( 1 ) ; 
 
                   } 
 
   
 
                   f o r m a t   =   n e w   S i m p l e D a t e F o r m a t ( " y y y y - M M - d d - H H - m m - s s " ,   L o c a l e . U S ) ; 
 
 @ @   - 1 5 4 , 7   + 1 8 1 , 7   @ @ 
 
                   f o r m a t . s e t L e n i e n t ( f a l s e ) ; 
 
   
 
                   t r y   { 
 
 -                         r e a d I n p u t ( ) ; 
 
 +                         r e a d I n p u t ( i n ) ; 
 
                           b u i l d M a i n A n d S p e c i a l C a s e T a b l e s ( ) ; 
 
                           b u i l d O t h e r T a b l e s ( ) ; 
 
                           w r i t e O u t p u t ( ) ; 
 
 @ @   - 1 6 7 , 9   + 1 9 4 , 9   @ @ 
 
                   } 
 
           } 
 
   
 
 -         p r i v a t e   s t a t i c   v o i d   r e a d I n p u t ( )   t h r o w s   I O E x c e p t i o n   { 
 
 +         p r i v a t e   s t a t i c   v o i d   r e a d I n p u t ( I n p u t S t r e a m   i n )   t h r o w s   I O E x c e p t i o n   { 
 
                   c u r r e n c y D a t a   =   n e w   P r o p e r t i e s ( ) ; 
 
 -                 c u r r e n c y D a t a . l o a d ( S y s t e m . i n ) ; 
 
 +                 c u r r e n c y D a t a . l o a d ( i n ) ; 
 
   
 
                   / /   i n i t i a l i z e   o t h e r   l o o k u p   s t r i n g s 
 
                   f o r m a t V e r s i o n   =   ( S t r i n g )   c u r r e n c y D a t a . g e t ( " f o r m a t V e r s i o n " ) ; 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / s p p / S p p . j a v a 
 
 - - -   a / m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / s p p / S p p . j a v a 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / j d k / s r c / c l a s s e s / b u i l d / t o o l s / s p p / S p p . j a v a 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 2 5 , 6   + 2 5 , 8   @ @ 
 
   
 
   p a c k a g e   b u i l d . t o o l s . s p p ; 
 
   
 
 + i m p o r t   j a v a . i o . F i l e I n p u t S t r e a m ; 
 
 + i m p o r t   j a v a . i o . F i l e O u t p u t S t r e a m ; 
 
   i m p o r t   j a v a . u t i l . * ; 
 
   i m p o r t   j a v a . u t i l . r e g e x . * ; 
 
   
 
 @ @   - 6 9 , 6   + 7 1 , 8   @ @ 
 
                   S e t < S t r i n g >   k e y s   =   n e w   H a s h S e t < > ( ) ; 
 
                   b o o l e a n   b e   =   f a l s e ; 
 
                   b o o l e a n   e l   =   t r u e ; 
 
 + 	 	 S t r i n g   i n p u t F i l e   =   n u l l ; 
 
 + 	 	 S t r i n g   o u t p u t F i l e   =   n u l l ; 
 
   
 
                   f o r   ( S t r i n g   a r g : a r g s )   { 
 
                           i f   ( a r g . s t a r t s W i t h ( " - D " ) )   { 
 
 @ @   - 7 6 , 6   + 8 0 , 1 0   @ @ 
 
                                   v a r s . p u t ( a r g . s u b s t r i n g ( 2 ,   i ) , a r g . s u b s t r i n g ( i + 1 ) ) ; 
 
                           }   e l s e   i f   ( a r g . s t a r t s W i t h ( " - K " ) )   { 
 
                                   k e y s . a d d ( a r g . s u b s t r i n g ( 2 ) ) ; 
 
 +                         }   e l s e   i f   ( a r g . s t a r t s W i t h ( " - i " ) )   { 
 
 +                                 i n p u t F i l e   =   a r g . s u b s t r i n g ( 2 ) ; 
 
 +                         }   e l s e   i f   ( a r g . s t a r t s W i t h ( " - o " ) )   { 
 
 +                                 o u t p u t F i l e   =   a r g . s u b s t r i n g ( 2 ) ; 
 
                           }   e l s e   i f   ( " - b e " . e q u a l s ( a r g ) )   { 
 
                                   b e   =   t r u e ; 
 
                           }   e l s e   i f   ( " - n e l " . e q u a l s ( a r g ) )   { 
 
 @ @   - 8 7 , 1 1   + 9 5 , 1 1   @ @ 
 
                   } 
 
   
 
                   S t r i n g B u f f e r   o u t   =   n e w   S t r i n g B u f f e r ( ) ; 
 
 -                 n e w   S p p ( ) . s p p ( n e w   S c a n n e r ( S y s t e m . i n ) , 
 
 +                 n e w   S p p ( ) . s p p ( n e w   S c a n n e r ( n e w   F i l e I n p u t S t r e a m ( i n p u t F i l e ) ) , 
 
                                               o u t ,   " " , 
 
                                               k e y s ,   v a r s ,   b e ,   e l , 
 
                                               f a l s e ) ; 
 
 -                 S y s t e m . o u t . p r i n t ( o u t . t o S t r i n g ( ) ) ; 
 
 +                 n e w   F i l e O u t p u t S t r e a m ( o u t p u t F i l e ,   t r u e ) . w r i t e ( o u t . t o S t r i n g ( ) . g e t B y t e s ( ) ) ; 
 
           } 
 
   
 
           s t a t i c   f i n a l   S t r i n g   L N S E P   =   S y s t e m . g e t P r o p e r t y ( " l i n e . s e p a r a t o r " ) ; 
 
 d i f f   - r   4 b e f 1 9 5 7 a 1 d 8   m a k e / s r c / n a t i v e / f i x p a t h . c 
 
 - - -   a / m a k e / s r c / n a t i v e / f i x p a t h . c 	 T h u   N o v   2 2   1 0 : 1 5 : 3 2   2 0 1 8   - 0 8 0 0 
 
 + + +   b / m a k e / s r c / n a t i v e / f i x p a t h . c 	 F r i   D e c   1 4   1 2 : 3 1 : 4 3   2 0 1 8   - 0 8 0 0 
 
 @ @   - 2 4 , 6   + 2 4 , 7   @ @ 
 
     * / 
 
   
 
   # i n c l u d e   < W i n d o w s . h > 
 
 + # i n c l u d e   < s t d b o o l . h > 
 
   # i n c l u d e   < i o . h > 
 
   # i n c l u d e   < s t d i o . h > 
 
   # i n c l u d e   < s t r i n g . h > 
 
 @ @   - 5 3 , 2 5   + 5 4 , 1 6   @ @ 
 
   } 
 
   
 
   / * 
 
 -   *   T e s t   i f   p o s   p o i n t s   t o   / c y g d r i v e / _ /   w h e r e   _   c a n 
 
 +   *   T e s t   i f   p o s   p o i n t s   t o   / p r e f i x / _ /   w h e r e   _   c a n 
 
     *   b e   a n y   c h a r a c t e r . 
 
     * / 
 
 - i n t   i s _ c y g d r i v e _ h e r e ( i n t   p o s ,   c h a r   c o n s t   * i n ,   i n t   l e n ) 
 
 + i n t   i s _ p r e f i x _ h e r e ( i n t   p o s ,   c h a r   c o n s t   * i n ,   i n t   l e n ,   c o n s t   c h a r *   p r e f i x ) 
 
   { 
 
 -     / /   L e n g t h   o f   / c y g d r i v e / c /   i s   1 2 
 
 -     i f   ( p o s + 1 2   >   l e n )   r e t u r n   0 ; 
 
 -     i f   ( i n [ p o s + 1 1 ] = = ' / '   & & 
 
 -             i n [ p o s + 9 ] = = ' / '   & & 
 
 -             i n [ p o s + 8 ] = = ' e '   & & 
 
 -             i n [ p o s + 7 ] = = ' v '   & & 
 
 -             i n [ p o s + 6 ] = = ' i '   & & 
 
 -             i n [ p o s + 5 ] = = ' r '   & & 
 
 -             i n [ p o s + 4 ] = = ' d '   & & 
 
 -             i n [ p o s + 3 ] = = ' g '   & & 
 
 -             i n [ p o s + 2 ] = = ' y '   & & 
 
 -             i n [ p o s + 1 ] = = ' c '   & & 
 
 -             i n [ p o s + 0 ] = = ' / ' )   { 
 
 -         r e t u r n   1 ; 
 
 +     / /   L e n g t h   o f   c /   i s   2 
 
 +     i n t   p r e f i x _ s i z e   =   s t r l e n ( p r e f i x ) ; 
 
 +     i f   ( p o s + p r e f i x _ s i z e + 2   >   l e n )   r e t u r n   0 ; 
 
 +     i f   ( i n [ p o s + p r e f i x _ s i z e + 1 ] = = ' / ' )   { 
 
 +         r e t u r n   s t r n c m p ( i n   +   p o s ,   p r e f i x ,   p r e f i x _ s i z e )   = =   0 ; 
 
       } 
 
       r e t u r n   0 ; 
 
   } 
 
 @ @   - 9 3 , 7   + 8 5 , 7   @ @ 
 
       } 
 
   
 
       f o r   ( i   =   0 ,   j   =   0 ;   i < l e n ; )   { 
 
 -         i f   ( i s _ c y g d r i v e _ h e r e ( i ,   i n ,   l e n ) )   { 
 
 +         i f   ( i s _ p r e f i x _ h e r e ( i ,   i n ,   l e n ,   " / c y g d r i v e / " ) )   { 
 
               o u t [ j + + ]   =   i n [ i + 1 0 ] ; 
 
               o u t [ j + + ]   =   ' : ' ; 
 
               i + = 1 1 ; 
 
 @ @   - 1 9 6 , 7   + 1 8 8 , 3 9   @ @ 
 
       r e t u r n   s t r ; 
 
   } 
 
   
 
 + / * 
 
 +   *   R e p l a c e   / m n t / _ /   w i t h   _ : / 
 
 +   *   W o r k s   i n   p l a c e   s i n c e   d r i v e   l e t t e r   i s   a l w a y s 
 
 +   *   s h o r t e r   t h a n   / m n t / 
 
 +   * / 
 
 + c h a r   * r e p l a c e _ c y g d r i v e _ w s l ( c h a r   c o n s t   * i n ) 
 
 + { 
 
 +     s i z e _ t   l e n   =   s t r l e n ( i n ) ; 
 
 +     c h a r   * o u t   =   ( c h a r * )   m a l l o c ( l e n + 1 ) ; 
 
 +     i n t   i , j ; 
 
 + 
 
 +     i f   ( l e n   <   7 )   { 
 
 +         m e m m o v e ( o u t ,   i n ,   l e n   +   1 ) ; 
 
 +         r e t u r n   o u t ; 
 
 +     } 
 
 + 
 
 +     f o r   ( i   =   0 ,   j   =   0 ;   i < l e n ; )   { 
 
 +         i f   ( i s _ p r e f i x _ h e r e ( i ,   i n ,   l e n ,   " / m n t / " ) )   { 
 
 +             o u t [ j + + ]   =   i n [ i + 5 ] ; 
 
 +             o u t [ j + + ]   =   ' : ' ; 
 
 +             i + = 6 ; 
 
 +         }   e l s e   { 
 
 +             o u t [ j ]   =   i n [ i ] ; 
 
 +             i + + ; 
 
 +             j + + ; 
 
 +         } 
 
 +     } 
 
 +     o u t [ j ]   =   ' \ 0 ' ; 
 
 +     r e t u r n   o u t ; 
 
 + } 
 
 + 
 
   c h a r * ( * r e p l a c e _ c y g d r i v e ) ( c h a r   c o n s t   * i n )   =   N U L L ; 
 
 + b o o l   d e b u g _ f i x p a t h   =   f a l s e ; 
 
   
 
   c h a r   * f i l e s _ t o _ d e l e t e [ 1 0 2 4 ] ; 
 
   i n t   n u m _ f i l e s _ t o _ d e l e t e   =   0 ; 
 
 @ @   - 2 5 0 , 1 1   + 2 7 4 , 1 1   @ @ 
 
           a p p e n d ( & b u f f e r ,   & b u f l e n ,   & u s e d ,   b l o c k ,   b l o c k l e n ) ; 
 
       } 
 
       b u f f e r [ u s e d ]   =   0 ; 
 
 -     i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +     i f   ( d e b u g _ f i x p a t h )   { 
 
           f p r i n t f ( s t d e r r ,   " f i x p a t h   i n p u t   f r o m   @ - f i l e   % s :   % s \ n " ,   & i n [ 1 ] ,   b u f f e r ) ; 
 
       } 
 
       f i x e d   =   r e p l a c e _ c y g d r i v e ( b u f f e r ) ; 
 
 -     i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +     i f   ( d e b u g _ f i x p a t h )   { 
 
           f p r i n t f ( s t d e r r ,   " f i x p a t h   c o n v e r t e d   t o   @ - f i l e   % s   i s :   % s \ n " ,   n a m e ,   f i x e d ) ; 
 
       } 
 
       f w r i t e ( f i x e d ,   s t r l e n ( f i x e d ) ,   1 ,   a t o u t ) ; 
 
 @ @   - 3 6 2 , 2 8   + 3 8 6 , 3 6   @ @ 
 
           D W O R D   p r o c e s s F l a g s   =   0 ; 
 
           B O O L   p r o c e s s I n h e r i t H a n d l e s   =   T R U E ; 
 
           B O O L   w a i t F o r C h i l d   =   T R U E ; 
 
 + 	 c o n s t   c h a r *   f i x p a t h P a t h ; 
 
   
 
 -         i f   ( a r g c < 2   | |   a r g v [ 1 ] [ 0 ]   ! =   ' - '   | |   ( a r g v [ 1 ] [ 1 ]   ! =   ' c '   & &   a r g v [ 1 ] [ 1 ]   ! =   ' m ' ) )   { 
 
 -                 f p r i n t f ( s t d e r r ,   " U s a g e :   f i x p a t h   - c | m < p a t h @ p a t h @ . . . >   [ - - d e t a c h ]   / c y g d r i v e / c / W I N D O W S / n o t e p a d . e x e   [ / c y g d r i v e / c / x / t e s t . t x t | @ / c y g d r i v e / c / x / a t f i l e ] \ n " ) ; 
 
 + 	 d e b u g _ f i x p a t h   =   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L ) ; 
 
 + 
 
 +         i f   ( a r g c < 2   | |   a r g v [ 1 ] [ 0 ]   ! =   ' - '   | |   ( a r g v [ 1 ] [ 1 ]   ! =   ' c '   & &   a r g v [ 1 ] [ 1 ]   ! =   ' m '   & &   a r g v [ 1 ] [ 1 ]   ! =   ' w ' ) )   { 
 
 +                 f p r i n t f ( s t d e r r ,   " U s a g e :   f i x p a t h   - c | m | w < p a t h @ p a t h @ . . . >   [ - - d e t a c h ]   / c y g d r i v e / c / W I N D O W S / n o t e p a d . e x e   [ / c y g d r i v e / c / x / t e s t . t x t | @ / c y g d r i v e / c / x / a t f i l e ] \ n " ) ; 
 
                   e x i t ( 0 ) ; 
 
           } 
 
   
 
 -         i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +         i f   ( d e b u g _ f i x p a t h )   { 
 
               c h a r   c o n s t   *   c m d l i n e   =   G e t C o m m a n d L i n e ( ) ; 
 
               f p r i n t f ( s t d e r r ,   " f i x p a t h   i n p u t   l i n e   > % s < \ n " ,   s t r s t r ( c m d l i n e ,   a r g v [ 1 ] ) ) ; 
 
           } 
 
   
 
           i f   ( a r g v [ 1 ] [ 1 ]   = =   ' c '   & &   a r g v [ 1 ] [ 2 ]   = =   ' \ 0 ' )   { 
 
 -             i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +             i f   ( d e b u g _ f i x p a t h )   { 
 
                   f p r i n t f ( s t d e r r ,   " f i x p a t h   u s i n g   c y g w i n   m o d e \ n " ) ; 
 
               } 
 
               r e p l a c e _ c y g d r i v e   =   r e p l a c e _ c y g d r i v e _ c y g w i n ; 
 
           }   e l s e   i f   ( a r g v [ 1 ] [ 1 ]   = =   ' m ' )   { 
 
 -             i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +             i f   ( d e b u g _ f i x p a t h )   { 
 
                   f p r i n t f ( s t d e r r ,   " f i x p a t h   u s i n g   m s y s   m o d e ,   w i t h   p a t h   l i s t :   % s \ n " ,   & a r g v [ 1 ] [ 2 ] ) ; 
 
               } 
 
               s e t u p _ m s y s _ p a t h _ l i s t ( a r g v [ 1 ] ) ; 
 
               r e p l a c e _ c y g d r i v e   =   r e p l a c e _ c y g d r i v e _ m s y s ; 
 
 + 	 }   e l s e   i f   ( a r g v [ 1 ] [ 1 ]   = =   ' w ' )   { 
 
 +             i f   ( d e b u g _ f i x p a t h )   { 
 
 +                 f p r i n t f ( s t d e r r ,   " f i x p a t h   u s i n g   w s l   m o d e ,   w i t h   p a t h   l i s t :   % s \ n " ,   & a r g v [ 1 ] [ 2 ] ) ; 
 
 +             } 
 
 +             r e p l a c e _ c y g d r i v e   =   r e p l a c e _ c y g d r i v e _ w s l ; 
 
           }   e l s e   { 
 
               f p r i n t f ( s t d e r r ,   " f i x p a t h   U n k n o w n   m o d e :   % s \ n " ,   a r g v [ 1 ] ) ; 
 
               e x i t ( - 1 ) ; 
 
 @ @   - 3 9 1 , 7   + 4 2 3 , 7   @ @ 
 
   
 
           i f   ( a r g v [ 2 ] [ 0 ]   = =   ' - ' )   { 
 
               i f   ( s t r c m p ( a r g v [ 2 ] ,   " - - d e t a c h " )   = =   0 )   { 
 
 -                 i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +                 i f   ( d e b u g _ f i x p a t h )   { 
 
                       f p r i n t f ( s t d e r r ,   " f i x p a t h   i n   d e t a c h e d   m o d e \ n " ) ; 
 
                   } 
 
                   p r o c e s s F l a g s   | =   D E T A C H E D _ P R O C E S S ; 
 
 @ @   - 4 1 7 , 7   + 4 4 9 , 7   @ @ 
 
                   v a r [ v a r _ l e n   -   1 ]   =   ' \ 0 ' ; 
 
                   s t r u p r ( v a r ) ; 
 
   
 
 -                 i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +                 i f   ( d e b u g _ f i x p a t h )   { 
 
                       f p r i n t f ( s t d e r r ,   " f i x p a t h   s e t t i n g   v a r   > % s <   t o   > % s < \ n " ,   v a r ,   v a l ) ; 
 
                   } 
 
   
 
 @ @   - 4 8 0 , 1 2   + 5 1 2 , 1 2   @ @ 
 
           } 
 
           * c u r r e n t   =   ' \ 0 ' ; 
 
   
 
 -         i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +         i f   ( d e b u g _ f i x p a t h )   { 
 
               f p r i n t f ( s t d e r r ,   " f i x p a t h   c o n v e r t e d   l i n e   > % s < \ n " ,   l i n e ) ; 
 
           } 
 
   
 
           i f   ( c m d   = =   a r g c )   { 
 
 -               i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +               i f   ( d e b u g _ f i x p a t h )   { 
 
                     f p r i n t f ( s t d e r r ,   " f i x p a t h   n o   c o m m a n d   p r o v i d e d ! \ n " ) ; 
 
                 } 
 
                 e x i t ( 0 ) ; 
 
 @ @   - 4 9 8 , 6   + 5 3 0 , 2 9   @ @ 
 
           f f l u s h ( s t d e r r ) ; 
 
           f f l u s h ( s t d o u t ) ; 
 
   
 
 +         f i x p a t h P a t h   =   g e t e n v ( " F I X P A T H _ P A T H " ) ; 
 
 +         i f   ( f i x p a t h P a t h   ! =   N U L L )   { 
 
 +             i f   ( d e b u g _ f i x p a t h )   { 
 
 +                 f p r i n t f ( s t d e r r ,   " F I X P A T H _ P A T H   s e t \ n " ) ; 
 
 +             } 
 
 +             c h a r *   p a t h   =   c a l l o c ( 3 2 7 6 7 ,   s i z e o f ( c h a r ) ) ; 
 
 + 	     s t r c a t ( p a t h ,   g e t e n v ( " P a t h " ) ) ; 
 
 +             s t r c a t ( p a t h ,   " ; " ) ; 
 
 +             s t r c a t ( p a t h ,   f i x p a t h P a t h ) ; 
 
 +             i f   ( d e b u g _ f i x p a t h )   { 
 
 +                 f p r i n t f ( s t d e r r ,   " S e t t i n g   P a t h   t o   % s \ n " ,   p a t h ) ; 
 
 +             } 
 
 +             r c   =   S e t E n v i r o n m e n t V a r i a b l e ( " P a t h " ,   p a t h ) ; 
 
 +             i f   ( ! r c )   { 
 
 +                 / /   C o u l d   n o t   s e t   P a t h   f o r   s o m e   r e a s o n .     T r y   t o   r e p o r t   w h y . 
 
 +                 c o n s t   i n t   m s g _ l e n   =   8 0   +   s t r l e n ( p a t h ) ; 
 
 +                 c h a r   *   m s g   =   ( c h a r   * ) a l l o c a ( m s g _ l e n ) ; 
 
 +                 _ s n p r i n t f _ s ( m s g ,   m s g _ l e n ,   _ T R U N C A T E ,   " C o u l d   n o t   s e t   e n v i r o n m e n t   v a r i a b l e   [ P a t h = % s ] " ,   p a t h ) ; 
 
 +                 r e p o r t _ e r r o r ( m s g ) ; 
 
 +                 e x i t ( 1 ) ; 
 
 +             } 
 
 +         } 
 
 + 
 
           r c   =   C r e a t e P r o c e s s ( N U L L , 
 
                                                 l i n e , 
 
                                                 0 , 
 
 @ @   - 5 1 8 , 7   + 5 7 3 , 7   @ @ 
 
               W a i t F o r S i n g l e O b j e c t ( p i . h P r o c e s s ,   I N F I N I T E ) ; 
 
               G e t E x i t C o d e P r o c e s s ( p i . h P r o c e s s ,   & e x i t C o d e ) ; 
 
   
 
 -             i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +             i f   ( d e b u g _ f i x p a t h )   { 
 
                   f o r   ( i = 0 ;   i < n u m _ f i l e s _ t o _ d e l e t e ;   + + i )   { 
 
                       f p r i n t f ( s t d e r r ,   " f i x p a t h   N o t   d e l e t i n g   t e m p o r a r y   f i l e   % s \ n " , 
 
                                       f i l e s _ t o _ d e l e t e [ i ] ) ; 
 
 @ @   - 5 3 0 , 1 3   + 5 8 5 , 1 3   @ @ 
 
               } 
 
   
 
               i f   ( e x i t C o d e   ! =   0 )   { 
 
 -                 i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +                 i f   ( d e b u g _ f i x p a t h )   { 
 
                       f p r i n t f ( s t d e r r ,   " f i x p a t h   e x i t   c o d e   % d \ n " , 
 
                                       e x i t C o d e ) ; 
 
                   } 
 
               } 
 
           }   e l s e   { 
 
 -             i f   ( g e t e n v ( " D E B U G _ F I X P A T H " )   ! =   N U L L )   { 
 
 +             i f   ( d e b u g _ f i x p a t h )   { 
 
                   f p r i n t f ( s t d e r r ,   " f i x p a t h   N o t   w a i t i n g   f o r   c h i l d   p r o c e s s " ) ; 
 
               } 
 
           } 
 
 


More information about the build-dev mailing list