delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:mime-version:content-type | |
:content-transfer-encoding:date:from:to:subject:message-id; q= | |
dns; s=default; b=eBl8EujVRDnXcdw42ZjPvFO3gze65O4Vz0wQmCrLbucpZT | |
W2trArxKI+K28C29cg/mnwBnH7hua87wPXXm5gJcC7DpqQqDNqMYToAqMHMd0pwR | |
Hn3siTasUgh1TPbbN5USB2I8LTlJboDVlOJzaBbfV4RawbJZefqhRwyBQbmdU= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:mime-version:content-type | |
:content-transfer-encoding:date:from:to:subject:message-id; s= | |
default; bh=9pH16ApBfIpy5fjpU8Ve+ycZpW4=; b=ParISun6DyHUTTxCIFQV | |
IMVzsGYQsMubGKnFP+z9//dbMtKtC/7dshg+wg51XF4R0lGO5J8qD/Mhp6pOahnJ | |
7x5lWyGDdeLsKLiTg1O9eIIeAvYRcavCKg5p4MXn6Phyz/ySQ8BTHGNS4mh9r1oo | |
otzTBvWwGtsq2S5MPbO8p24= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Authentication-Results: | sourceware.org; auth=none |
X-Spam-SWARE-Status: | No, score=-4.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.1 spammy=Package, H*r:194, WRONG, UD:exe |
X-HELO: | lb3-smtp-cloud9.xs4all.net |
MIME-Version: | 1.0 |
Date: | Sun, 14 Apr 2019 12:41:08 +0200 |
From: | Houder <houder AT xs4all DOT nl> |
To: | cygwin AT cygwin DOT com |
Subject: | Setup.exe: BUG. |
Message-ID: | <77bf0a487a2ffeb94af5f3fd6264b77e@xs4all.nl> |
X-Sender: | houder AT xs4all DOT nl |
User-Agent: | XS4ALL Webmail |
X-IsSubscribed: | yes |
L.S., While implementing a solution for the problem described here: https://cygwin.com/ml/cygwin/2019-04/msg00032.html ( Setup: why consult registry (rootdir) if -R has been specified? ) I discovered a bug in main.cc (setup.exe). At startup, setup.exe writes the following report to the log file: yyyy/mm/dd HH:MM:SS Starting cygwin install, version 2.900 yyyy/mm/dd HH:MM:SS User has backup/restore rights yyyy/mm/dd HH:MM:SS Current Directory: <directory> <==== ******* ... The last line above should read: yyyy/mm/dd HH:MM:SS Local Directory: <directory>, a.k.a. Local Package Directory! The call flow in main.cc is as follows: Winmain main_display The code in main.cc can be described as follows: WinMain - local_dir is assigned the current directory (the directory from which setup.exe is started) - however, at the beginning of main_display the constructor of class LocalDirSetting is executed (as result of the declaration of localDir) - main_display - the constructor of class LocalDirSetting may assign a different value to local_dir ... (different from the current directory) (it is here where I discovered another bug in setup.exe) - - the constructor first checks whether or not option -l has been specified - using option -l one can specify the local directory a.k.a the Local Package Directory, as an argument to setup.exe - if option -l has not been specified, the constructor checks if the execution of constructor UserSettings (as result of the declaration of Settings (WinMain) ) has produced a value for "last-cache" - "last-cache" (one of the user settings from a previous invocation of setup.exe is retrieved from /etc/setup/setup.rc - "last cache" is another alias for the local directory a.k.a. the Local Package Directory - CURRENTLY, setup.exe attempts to locate /etc/setup/setup.rc only in the root directory as specified by the registry ("rootdir") Currently? Yes, currently, setup.exe does not attempt to locate the file in the directory as specified by the -R option (first choice), or in the current directory (second choice - which would make sense if setup.exe is started in the root directory). The upshot of the above is, that the report that is written to the logfile is wrong if a different value is assigned to local_dir in main_display. [ and yes, people do create shortcuts to the setup executable and specify arguments to the setup program over there. Believe it or not.} Logging of the current directory should occur in WinMain (see below). Henri ----- The code in main.cc as far as it concerns the text above. static inline void main_display () { /* nondisplay classes */ LocalDirSetting localDir; <==== SourceSetting SourceSettings; ... // Henri: WRONG! It is the Local Directory a.k.a. the Local Package Directory Log (LOG_TIMESTAMP) << "Current Directory: " << local_dir << endLog; ... } int WINAPI WinMain (HINSTANCE h, HINSTANCE hPrevInstance, LPSTR command_line, int cmd_show) { ... try { ... char cwd[MAX_PATH]; GetCurrentDirectory (MAX_PATH, cwd); local_dir = std::string (cwd); ... ... if (!elevate && !output_only) { ... setup logging ... // Henri: now you would be right! Log (LOG_TIMESTAMP) << "WinMain: Current Directory: " << local_dir << endLog; } ... if (elevate) { ... run setup.exe in elevated mode ... } else { ... UserSettings Settings (local_dir); <==== main_display (); Settings.save (); ... } } ... handle exceptions ... } ===== -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |