Corinna Vinschen [Wed, 13 Aug 2008 08:54:14 +0000 (08:54 +0000)]
* install.cc (Installer::installOne): Use MoveFileExW on NT. Special
case for bug in Windows 2000.
* package_meta.cc (packagemeta::uninstall): Use wide char file functions
on NT.
* win32.h (VersionInfo::major): New method.
(VersionInfo::minor): New method.
(OSMajorVersion): Define.
(OSMinorVersion): Define.
Corinna Vinschen [Tue, 12 Aug 2008 20:32:08 +0000 (20:32 +0000)]
Revamp for Cygwin 1.7.
* desktop.cc (make_cygwin_bat): Use wide char file functions on NT.
(save_icon): Ditto.
* filemanip.cc (tfx_chars): New char table for wide char transformation
of reserved FS chars to UNICODE private use area.
(transform_chars): New static function.
(mklongpath): New function to convert multibyte path to wide char
path with long path prefix.
* filemanip.h (mklongpath): Declare.
* ini.h (SETUP_INI_FILENAME): Use setup.ini filenames as defined in
real life (setup-2.ini/setup.ini).
(SETUP_BZ2_FILENAME): Ditto.
* install.cc (do_install_thread): Don't create registry mount points
on NT, rather create setup/rootdir entry.
* io_stream_cygfile.cc: Throughout use wide char file functions on NT.
(io_stream_cygfile::w_str): New method to create wide char path.
* io_stream_cygfile.h (class io_stream_cygfile): Remove lmode member.
Add wname member and w_str method.
* io_stream_file.cc: Throughout use wide char file functions on NT.
(io_stream_file::w_str): New method to create wide char path.
* io_stream_file.h (class io_stream_file): Remove lmode member.
Add wname member and w_str method.
* mkdir.cc (mkdir_p): Use wide char file functions on NT.
* mklink2.cc (mkcygsymlink_9x): Rename from mkcygsymlink. Make static.
(mkcygsymlink_nt): New static function.
(mkcygsymlink): Just call mkcygsymlink_9x or mkcygsymlink_nt dependent
on OS.
* mount.cc (CYGWIN_INFO_CYGWIN_SETUP_REGISTRY_NAME): Define.
(remove1): Move to earlier point in file to avoid declaration.
(remove_mount): Ditto. Make static.
(create_install_root): New function to create setup/rootdir registry
value on NT.
(read_mounts_9x): Rename from read_mounts. Make static. Conditionalize
for OS.
(add_usr_mnts): New static function.
(read_mounts_nt): Ditto, to read mounts on NT.
(read_mounts): Just call read_mounts_nt or read_mounts_9x dependent on
OS.
(set_root_dir): On NT, call read_mounts.
(cygpath): Only add slash for non-root mount to avoid multiple slashes
in resulting path (invalid in long path names).
* mount.h (find_mount): Drop declaration.
(remove_mount): Ditto.
(create_install_root): Add declaration.
(read_mounts): Accommodate new parameter.
* package_db.cc (chosen_db_task): New global variable.
* package_db.h (chosen_db_task): Declare.
* root.cc (check_if_enable_next): Don't use get_root_dir here to
avoid having to call save_dialog in RootPage::OnMessageCmd.
(GetDlgItemRect): New static inline function.
(SetDlgItemRect): Ditto.
(load_dialog): On NT, stretch "Install For" block to full dialog width
and hide "Default Text File Type" block.
(save_dialog): On NT set root_text always to IDC_ROOT_BINARY.
(RootPage::OnMessageCmd): Remove call to save_dialog.
(RootPage::OnNext): Initialize packagedb here the first time, to
avoid fetching wrong data from different previous installation.
* source.cc (save_dialog): Don't initialize packagedb here, rather
just memorize setting in chosen_db_task for the deferred initialization
in RootPage::OnNext.
Dave Korn [Thu, 7 Aug 2008 22:59:17 +0000 (22:59 +0000)]
Implement command-line selection of packages to install and make
unattended mode deal with any dialogs that might arise. A joint
effort synthesized from contributions by:
Dr. Frank Lee <rl201@cam.ac.uk>
Bryan Thrall <bryan.thrall@flightsafety.com>
Kohsuke Kawaguchi <kk@kohsuke.org>
Dave Korn <dave.korn.cygwin@gmail.com>
* install.cc (rebootneeded): Don't define statically here.
(do_install_thread): Let exit_msg reflect rebootneeded.
* main.cc (main): If rebootneeded, log it when exiting.
* msg.cc (mbox): In unattended_mode, choose and log default answer.
* package_db.cc (packagedb::fillMissingCategory): Iterate over all
packages adding those selected by packagemeta::isManuallyWanted to
base category so that command-line selections are installed.
* package_meta.cc (PackageOption): Add new StringOption to allow
command-line selection of packages to add to base install.
(packagemeta::isManuallyWanted): New function tests if package was
selected on command-line.
(packagemeta::addToCategoryBase): New function adds package to
"base" category.
* state.cc (rebootneeded): Define here non-static.
* state.h (rebootneeded): Declare here with extern linkage.
* threebar.cc (ThreeBarProgressPage::MaximizeDialog): Don't change
size when running in unattended mode.
* UserSettings.cc (UserSettings::settingFileForLoad): Look locally for settings
before looking outside of current directory.
* choose.cc (ChooserPage::ChooserPage): Record the property sheet's current
show state via new passed in parameter.
* choose.h (ChooserPage::ChooserPage): Reflect change in argument list.
(ChooserPage::nCmdShow): Define new element.
* main.cc (main): Send current show state to Chooser.
* package_version.cc (packageversion::set_requirements): Increase recursion
check from 5 to 30.
* propsheet.cc (PropSheetWndProc): Register hwndDlg with ThreeBarProgressPage.
* threebar.cc (ControlAdjuster::ControlInfo): Initialize cmd_show_set.
(ThreeBarProgressPage::MaximizeDialog): New function.
(ThreeBarProgressPage::OnMessageApp): Call MaximizeDialog to maximize package
selection screen and restore when done.
* threebar.h (ThreeBarProgressPage::MaximizeDialog): Declare function.
(ThreeBarProgressPage::cmd_show_set): Declare variable.
(ThreeBarProgressPage::cmd_show): Declare variable.
(ThreeBarProgressPage::ins_dialog): Declare variable.
(ThreeBarProgressPage::SetHwndDialog): Define function.
Charles Wilson [Wed, 9 Jul 2008 01:44:19 +0000 (01:44 +0000)]
Fix memory leak in compress::decompress().
2008-06-29 Charles Wilson <cygwin@cwilson.fastmail.fm>
* compress.cc (compress::decompress): clean up concrete
decompressor objects on failure -- but in that case, do
NOT destroy original io_stream.
* compress_bz.h (compress_bz::release_original): new method.
(owns_original): new member variable.
* compress_bz.cc (compress_bz::release_original): new method.
(compress_bz::compress_bz): take ownership of parent by default.
(compress_bz::~compress_bz): only delete original if
owns_original is true.
* compress_gz.h (compress_gz::release_original): new method.
(owns_original): new member variable.
* compress_gz.cc (compress_gz::release_original): new method.
(compress_gz::construct): take ownership of parent by default.
(compress_gz::~compress_gz): only delete original if
owns_original is true.
* Makefile.am: Make and install libraries into common location and use them
from there.
* configure.in: Find gpg-error-config in the libgpg-error/src subdirectory
rather than using the host system's version. Set the prefix and exec_prefix to
a common location for the subdirs so that useful files will be installed in a
common location.
Dave Korn [Sun, 2 Mar 2008 22:18:16 +0000 (22:18 +0000)]
(Fixing erroneous previous commit to ChangeLog):
2008-03-02 Dave Korn <dave.korn@artimi.com>
* install.cc (Installer::installOne): Accept new HWND argument
from caller and pass it to MessageBox calls so that MB_TASKMODAL
can work.
(check_for_old_cygwin): Likewise.
(do_install_thread): Pass owner's HWND (from thread context) when
calling them.
Dave Korn [Sun, 2 Mar 2008 22:12:44 +0000 (22:12 +0000)]
2008-03-02 Dave Korn <dave.korn@artimi.com>
* cygpackage.cc (Installer::installOne): Accept new HWND argument
from caller and pass it to MessageBox calls so that MB_TASKMODAL
can work.
(check_for_old_cygwin): Likewise.
(do_install_thread): Pass owner's HWND (from thread context) when
calling them.
Dave Korn [Sat, 23 Feb 2008 18:55:04 +0000 (18:55 +0000)]
2008-02-23 Dave Korn <dave.korn@artimi.com>
* cygpackage.cc (cygpackage::getfirstfile): Guard against trying to
construct std::string from NULL returned by io_stream::gets when the
stream decompressor fails on a corrupt *.lst.gz file.
Brian Dessent [Mon, 30 Jul 2007 22:55:50 +0000 (22:55 +0000)]
* CHANGES: Update.
* configure.in (AM_INIT_AUTOMAKE): Enable more automake warnings.
* Makefile.am (INCLUDES): Use AM_CPPFLAGS instead.
(CLEANFILES): Add. Minor portability tweaks.
* tests/Makefile.am (INCLUDES): Use AM_CPPFLAGS instead.
* archive.cc (archive::extract): Try to be more compatible when
opening tar files.
* compress_bz.cc: Fix whitespace throughout.
(compress_bz::~compress_bz): Ensure that underlying io_stream's dtor is
also run.
* install.cc (Installer::installOne): Refactor.
* package_db.cc (ConnectedLoopFinder::doIt): Move some log spewage into
setup.log.full from setup.log.
(packagedb::connectedBegin): Ditto. Consolidate log output to one line.
Brian Dessent [Wed, 27 Jun 2007 01:41:46 +0000 (01:41 +0000)]
* Makefile.am (release): Drop inconsistent use of $(EXEEXT). Leave an
untouched copy of setup.exe so that later make invocations don't
unnecessarily rebuild it.
(snapshot): Fix typo.
* install.cc (md5_one): Don't try to check packages whose
pkgsource.Cached () is NULL, as with those whose download failed.
Brian Dessent [Wed, 30 May 2007 09:49:24 +0000 (09:49 +0000)]
* find.h (class Find): Make _start_dir non-const.
* find.cc (Find::Find): Append a trailing slash to _start_dir only if
it does not already contain one.
(Find::accept): Use the previously stored value of _start_dir rather
than unconditionally appending a slash.
Brian Dessent [Wed, 30 May 2007 05:53:02 +0000 (05:53 +0000)]
* Makefile.am: No need to specify the default value of --preprocessor
to windres. Rework the automatic version extraction rules so that the
source tarball is generated with the proper name and directory instead
of setup-0. Update snapshot rule to also upload a copy of the binary
with debugging symbols still present.
Brian Dessent [Wed, 30 May 2007 05:12:20 +0000 (05:12 +0000)]
This is a general tidying up/modernization of the build infrastructure.
Renaming the lexer and parser to .ll and .yy allows using automake's
builtin support for flex and bison with C++ sources, and libinilex is a
slightly cleaner way of omitting -Werror.
* Makefile.am (AUTOMAKE_OPTIONS): Move to AM_INIT_AUTOMAKE.
(AM_YFLAGS): Define.
(AM_LFLAGS): Define.
(INCLUDES): Remove redundant mingw directory.
(EXTRA_DIST): Adjust for newly named lexer/parser.
(BUILT_SOURCES): Ditto.
(inilint_LDADD): Ditto.
(inilint_SOURCES): Ditto.
(setup_LDADD): Ditto.
(setup_SOURCES): Ditto.
(iniparse.cc): Remove custom rules.
(inilex.cc): Ditto.
* configure.in: Update quoting and use modern form of AC_INIT and
AM_INIT_AUTOMAKE.
* inilex.l: Rename from this ...
* inilex.ll: ... to this.
* iniparse.y: Rename from this ...
* iniparse.yy: ... to this.
Brian Dessent [Wed, 30 May 2007 03:49:48 +0000 (03:49 +0000)]
* IniParseFindVisitor.cc (IniParseFindVisitor::IniParseFindVisitor):
Remove error_buf and error_count initializers.
(IniParseFindVisitor::visitFile): Store filename in current_ini_name.
Use yyerror_count and yyerror_messages in place of removed error_count
and error_buf members.
* IniParseFindVisitor.h (class IniParseFindVisitor): Remove error_buf
and error_count members.
* ini.cc: Include io_stream_memory.h. Remove file static variables
error_buf, error_count, and ini_filename.
(GuiParseFeedback::progress): Remove some verbose log spam.
(do_remote_ini): Recode .ini-fetching logic to properly display parse
errors, and to account for corrupt bzip2 files.
(yyerror): Moved elsewhere.
(fprintf): Delete unused function.
* ini.h: Remove useless __cplusplus guard. Declare extern variables
current_ini_name, yyerror_messages, and yyerror_count.
* inilex.l: Add current_ini_name, yyerror_messages, and
yyerror_count.
(ini_init): Initialize new variables.
(yybol): Delete.
(yyerror): Reimplement using std::string and relocate from ini.cc.
* io_stream.cc (io_stream::copy): Add clarifying comment.
Igor Peshansky [Fri, 4 May 2007 21:56:53 +0000 (21:56 +0000)]
2007-05-04 Igor Peshansky <pechtcha@cs.nyu.edu>
* resource.h (IDC_STATIC_HEADER): New control id.
* res.rc (IDD_SPLASH): Adjust the copyright.
(IDD_DESKTOP): Make header text accessible as a separate control.
* desktop.cc (set_status): Use eset() instead of SetWindowText().
(load_dialog): Disable checkboxes and change dialog text in
download-only mode.
(DesktopSetupPage::OnInit): Disable checkboxes in download-only
mode.
* threebar.cc (ThreeBarProgressPage::OnMessageApp): Deprecate the
default fallthrough.
* download.cc (do_download_thread): Explicitly return the next
dialog.
Igor Peshansky [Fri, 30 Mar 2007 22:18:34 +0000 (22:18 +0000)]
2007-03-29 Igor Peshansky <pechtcha@cs.nyu.edu>
* LogFile.cc (LogFile::exit): Write exit_msg directly to log, without
the message box.
* resource.h (IDC_DESKTOP_SEPARATOR,IDC_STATUS_HEADER,IDC_STATUS): New
control ids.
* res.rc (IDD_DESKTOP): Change the caption. Add status information.
* desktop.h (DesktopSetupPage::DesktopSetupPage): Define constructor
in the implementation.
* desktop.cc (DesktopControlsInfo): Position specifiers for status
information items.
(DesktopSetupPage::DesktopSetupPage): Register position specifiers.
(set_status): New static method.
(load_dialog): Set status information, if available.
(DesktopSetupPage::OnInit): Set status header font.
Brian Dessent [Wed, 28 Feb 2007 00:55:04 +0000 (00:55 +0000)]
2007-02-27 Brian Dessent <brian@dessent.net>
* ini.h (SETUP_INI_FILENAME): Add define.
(SETUP_BZ2_FILENAME): Add define.
* IniParseFindVisitor.cc (IniParseFindVisitor::visitFile): Use
above macros to parameterize setup.ini filename.
* fromcwd.cc (SetupFindVisitor::visitFile): Ditto.
* ini.cc (do_remote_ini): Ditto.
* Makefile.am (setup_SOURCES): Add win32.cc.
* autoload.c: Include windows.h directly instead of win32.h so that
win32.h can contain C++.
* desktop.cc (verinfo): Delete.
(make_link): Use IsWindowsNT to check for NT instead of verinfo.
(DesktopSetupPage::OnInit): Likewise.
* mount.cc (is_admin): Likewise.
* script.cc (init_run_script): Likewise.
* main.cc (class SIDWrapper, SIDWrapper::SIDWrapper,
SIDWrapper::~SIDWrapper, SIDWrapper::theSID, class HANDLEWrapper,
HANDLEWrapper::HANDLEWrapper, HANDLEWrapper::~HANDLEWrapper,
HANDLEWrapper::theHANDLE, class TokenGroupCollection,
TokenGroupCollection::TokenGroupCollection,
TokenGroupCollection::~TokenGroupCollection,
TokenGroupCollection::populate, TokenGroupCollection::find,
class NTSecurity, set_default_sec, NTSecurity::NoteFailedAPI,
NTSecurity::NTSecurity, NTSecurity::failed,
NTSecurity::initialiseEveryOneSID, NTSecurity::setDefaultDACL,
NTSecurity::setDefaultSecurity): Remove implementation of these
classes from this file and into new file win32.cc and existing win32.h.
(main): Fix whitespace and formatting per GNU coding standards.
* res.rc (IDS_SETUPINI_MISSING): Parameterize filename with %s.
* win32.cc: New file containing methods removed from main.cc as well
as new class VersionInfo methods.
* win32.h: Include <string> for std::string.
(class SIDWrapper, class HANDLEWrapper, class TokenGroupCollection,
class NTSecurity): Add classes removed from main.cc.
(class VersionInfo): Add new class.
(GetVer): Declare.
(IsWindowsNT): Define.
Brian Dessent [Sat, 17 Feb 2007 14:41:10 +0000 (14:41 +0000)]
2007-02-17 Cesar Strauss <cstrauss@cea.inpe.br>
* IniDBBuilderPackage.cc (IniDBBuilderPackage::buildPackageSource):
Initialize the version and operator fields of the newly created
PackageSpecification object, so setup can pick the correct source
version later on.
Igor Peshansky [Wed, 29 Nov 2006 02:07:17 +0000 (02:07 +0000)]
2006-11-28 Igor Peshansky <pechtcha@cs.nyu.edu>
* install.cc (Installer::installOne): If file is in use, ask the user
to stop processes and retry.
(MB_RETRYCONTINUE, IDCONTINUE): New macros.
(hMsgBoxHook): New static field.
(CBTProc): New window hook function.
(_custom_MessageBox): New function.
* CHANGES: Update with the above.
Igor Peshansky [Wed, 24 May 2006 13:01:34 +0000 (13:01 +0000)]
2006-05-24 Igor Peshansky <pechtcha@cs.nyu.edu>
* PickPackageLine.h (PickPackageLine::DrawIcon): Move to PickView.
* PickView.h (PickView::DrawIcon): Move from PickPackageLine.
(PickView::icon_dc,PickView::bm_icon): New instance field.
(PickView::rect_icon,PickView::bg_fg_brush): Ditto.
* PickCategoryLine.cc (PickCategoryLine::paint): Use
PickView::DrawIcon() instead of BitBlt().
* PickPackageLine.cc (PickPackageLine::DrawIcon): Move to PickView.
(PickPackageLine::paint): Use PickView::DrawIcon().
* PickView.cc (PickView::~PickView): Delete GDI objects.
(PickView::init): Create icon drawing context.
(PickView::DrawIcon): New function. Use system default colors to
draw bitmaps.
(PickView::paint): Set background color instead of using transparent
mode. Create system-colored brush.
Max Bowsher [Mon, 17 Apr 2006 17:01:52 +0000 (17:01 +0000)]
2006-04-17 Max Bowsher <maxb1@ukf.net>
* String++.cc, String++.h: Finally, it's time for the long-awaited
departure of 'class String' from this world. setup.exe can now
happily claim to follow the sane path of using just one general
purpose string class throughout :-)
Max Bowsher [Mon, 17 Apr 2006 16:13:17 +0000 (16:13 +0000)]
2006-04-17 Max Bowsher <maxb1@ukf.net>
* package_meta.cc, package_meta.h, package_source.cc,
package_source.h: Do some String to std::string migration.
* package_db.cc: Small tweak to assist with the above.
Max Bowsher [Mon, 17 Apr 2006 15:40:11 +0000 (15:40 +0000)]
2006-04-17 Max Bowsher <maxb1@ukf.net>
* PickView.cc, PickView.h, package_db.cc, package_db.h:
Do some String to std::string migration.
* package_meta.h: Change a couple of types to assist with the above.
Max Bowsher [Sun, 16 Apr 2006 23:07:44 +0000 (23:07 +0000)]
2006-04-17 Max Bowsher <maxb1@ukf.net>
* IniDBBuilder.cc, IniDBBuilder.h, IniDBBuilderPackage.cc,
IniDBBuilderPackage.h, PickLine.h, PickPackageLine.cc:
Do some String to std::string migration.
Max Bowsher [Thu, 30 Mar 2006 22:55:55 +0000 (22:55 +0000)]
2006-03-30 Max Bowsher <maxb1@ukf.net>
* String++.cc (replace): New function to take the place of one form
of String::replace method.
* String++.h (replace): Declare.
(String::replace): Make private.
* desktop.cc (make_cygwin_bat): Use new function.
* filemanip.cc (backslash): Use simple loop in place of
String::replace.
* filemanip.h (backslash): Change signature to use std::string in
place of String.
Max Bowsher [Thu, 30 Mar 2006 21:25:51 +0000 (21:25 +0000)]
2006-03-30 Max Bowsher <maxb1@ukf.net>
* String++.cc, String++.h (casecompare): New function replacing
String.casecompare to increase parity with std::string.
(String::casecompare): Make private.
* ConnectionSetting.cc, IniDBBuilderPackage.cc,
IniParseFindVisitor.cc, LogFile.cc, PackageSpecification.cc,
PickView.cc, SourceSetting.cc, String++.cc, String++.h, fromcwd.cc,
io_stream.cc, mount.cc, package_db.cc, package_source.h,
package_version.cc, prereq.h, script.cc:
Use casecompare in place of String::casecompare.
Max Bowsher [Thu, 30 Mar 2006 20:30:50 +0000 (20:30 +0000)]
2006-03-30 Max Bowsher <maxb1@ukf.net>
* String++.cc, String++.h: Remove String(int) constructor, which
was causing dangerously bizarre implicit conversions, and was a point
of disparity between String and std::string.
(stringify): New function to replace functionality removed above.
* PickView.cc (PickView::init_headers),
archive_tar.cc (archive_tar::next_file_name),
cygpackage.cc (cygpackage::setCanonicalVersion):
Make explicit and call out with a FIXME some bizarre behaviour.
* ScanFindVisitor.cc (ScanFindVisitor::visitFile),
filemanip.cc (base), iniparse.y,
threebar.cc (ThreeBarProgressPage::SetBar2):
Make simple adaptations to the changed API.
* res.rc: Update copyright.
(IDS_MIRROR_LST): Use cygwin.com for mirror list, not sources.redhat.com.
(NOSAVE2): sourceware.cygnus.com -> sources.redhat.com
* site.cc (NOSAVE1): Use preferred name of sourceware site.
(NOSAVE1_LEN): Use just-defined name to determine length.
(NOSAVE2_LEN): Ditto.
(NOSAVE3_LEN): Ditto.
* res.rc (IDD_DROPPED): New dialog.
* resource.h (IDD_DROPPED): New dialog-id.
(IDC_DROP_MIRRORS, IDC_DROP_NOWARN): New control-ids.
* site.cc: Add enum for response on dropped mirrors.
(cache_is_usable, cache_needs_writing): New bools.
(cache_warn_urls): New string.
(cached_site-list, dropped_site_list): New SiteLists.
(site_list_type::init, site_list_type::site_list_type): Change to four
parameter form.
(site_list_type::site_list_type, site_list_type::operator=) Copy servername,
area and location.
(load_site_list): New function, broken out of get_site_list. Support
four-parameter site_list_type.
(get_site_list): Break out load_site_list. Move reading cache earlier. Don't
write new cache. Set flags to record cache state. Load both all_site_list and
cached_site_list.
(SiteSetting::registerSavedSite): Use four-parameter site_list_type.
(drop_proc, check_dropped_mirrors, write_cache_list, save_cache_file): New
functions.
(SitePage::OnNext): Check for dropped mirrors and save cache as appropriate.
(SitePage::OnMessageCmd): Use four-parameter site_list_type.
* site.h
(site_list_type::init, site_list_type::site_list_type): Change to four
parameter form.
(site_list_type): Add servername, area and location members.
Max Bowsher [Thu, 9 Mar 2006 12:26:16 +0000 (12:26 +0000)]
2006-03-09 Bas van Gompel <patch-cygsup.buzz@bavag.tmfweb.nl>
Max Bowsher <maxb1@ukf.net>
Provide indication of site that a file is being downloaded from.
* geturl.cc: Use std::string instead of String throughout.
(init_dialog): Put more information into GUI.
Remove unused 'owner' parameter and change all callers.
(progress): Remove spurious \n characters from GUI.
* geturl.h: Use std::string instead of String throughout.
* res.rc (IDD_INSTATUS): Use SS_ENDELLIPSIS.
Max Bowsher [Wed, 30 Nov 2005 22:32:00 +0000 (22:32 +0000)]
2005-11-30 Max Bowsher <maxb1@ukf.net>
* site.h, site.cc: Use std::string in preference to String.
(site_list_type::init): Convert some painful raw C string work to
STL std::string work. Stop totally ignoring the result of this
calculation, implementing the (somewhat weird) sort order for sites
that was apparently indented for ages.