From: Mark Levedahl Date: Sun, 25 Jun 2023 12:10:42 GMT Subject: Re: [PATCH v0 0/4] Remove obsolete Cygwin support from git-gui Message-ID: <16959998-cb50-6f7d-370f-22c7293c89c2@gmail.com> In-Reply-To: On 6/25/23 07:26, Mark Levedahl wrote: > > On 6/24/23 19:30, Junio C Hamano wrote: git-gui has three independent > functions (is_Cygwin, is_Windows, and is_MaxOSX), each determine if > running on that platform, and "generic Unix/Linux" can be considered > the result if all three functions return false. In Pratyush's tree, > those three functions essentially are: > > is_Cygwin: $::tcl_platform(os) startswith("CYGWIN") > > is_MaxOSX: [tk windowingsystem] == "AQUA" > > is_Windows: $::tcl_platform(platform) == "Windows" > > It turns out, only one of the . is ever true, and none are true on > Linux. So, the if/else tree above is not confused by Windows / Cygwin. > > But, different Tcl/Tk signatures as platforms evolve could cause > problems. A better design might be to just have a $HOSTTYPE variable > set once, perhaps in startup, perhaps even by the makefile, to assure > exactly one hosttype is ever active and make this clear to others. > Normal configuration checking in the makefile could have uncovered > this whole problem in 2012. But, this is a possible cleanup topic for > another day. > > So, the code under the is_Windows and is_Cygwin branches of the > if/else trees are now completely independent, and the is_Windows > branch is never entered on Cygwin. > > > Thank you, > > Mark > A follow up - I have Cygwin in a Windows VM on my laptop, no G4W, no Mac ... Cygwin gives:   $::tcl_platform(os) = CYGWIN_NT-10.0-22621                 $::tcl_platform(platform) = unix                 tk windowingsystem = x11 Linux gives     $::tcl_platform(os) = Linux                 $::tcl_platform(platform) = unix                 tk windowingsystem = x11 So, neither Cygwin nor Linux trigger the checks for is_Windows or is_MacOSX