* IniDBBuilder.h (IniDBBuilder::set_arch): New function.
(IniDBBuilder::set_release): New function.
(IniDBBuilder::arch): New storage for arch:.
(IniDBBuilder::arch): New storage for release:.
* IniDBBuilderPackage.cc (IniDBBuilderPackage::autodep): Fix cut/paste error
which ended up calling the wrong thing.
* ScanFindVisitor.cc (ScanFindVisitor::visitFile): Remove old code.
* cygpackage.cc (cygpackage::set_autodep): Implement to satisfy setup's insane
class hierarchy.
* cygpackage.h (cygpackage::set_autodep): See above.
(std::string autodep_regex): Ditto.
* package_version.cc (packageversion::set_autodep): Ditto.
* package_version.h (packageversion::set_autodep): Ditto.
* inilex.ll: Tokenize "arch:" and "release:".
* iniparse.yy: Parse ARCH and RELEASE.
* FindVisitor.cc (FindVisitor::visitDirectory): Check tracking level
argument to limit the search depth.
* FindVisitor.h (FindVisitor::visitDirectory): Add tracking level
argument to declaration.
* IniParseFindVisitor.cc (IniParseFindVisitor::visitFile): Check
found file's basePath to end in SETUP_INI_DIR.
* find.cc (Find::accept): Accept additional tracking level argument
and submit to FindVisitor::visitDirectory.
* find.h (Find::accept): Add tracking level argument to declaration.
* fromcwd.cc (SetupFindVisitor::visitFile): Check found file's basePath
to end in SETUP_INI_DIR.
(do_fromcwd): Only search ini file two directory levels deep.
* ini.cc (do_local_ini): Ditto.
(do_remote_ini): Add SETUP_INI_DIR to current_ini_name.
* ini.h (SETUP_INI_DIR): New macro.
(SETUP_INI_FILENAME): Just define filename.
(SETUP_BZ2_FILENAME): Ditto.
* mount.cc (LFSTAB): Define.
(from_fstab): Use LFSTAB constant where appropriate. Properly size path array
to include \etc\fstab. Change len argument of mklongpath to reflect the actual
size of the destination argument.
* archive.cc (archive::extract_file): Use named constants for return values.
* archive.h (archive::extract_results): New enum.
(archive::extract_file): Use extract_results for return value.
* install.cc (Installer::installOne): Use archive::extract_results to make
decisions about archive::extract_file return.
* io_stream_cygfile.cc: Add a comment making return value clear.
* mkdir.cc: Ditto.
Corinna Vinschen [Wed, 26 Jun 2013 12:39:17 +0000 (12:39 +0000)]
* io_stream_cygfile.cc: Rearrange inclusion of headers to workaround
bug in older mingw-w64 system headers. Drop unneeded include files.
* io_stream_file.cc: Drop unneeded include files.
Corinna Vinschen [Tue, 25 Jun 2013 11:25:54 +0000 (11:25 +0000)]
* Makefile.am (AM_CXXFLAGS): Add source file specific CXXFLAGS.
(inilex_CXXFLAGS): Add -Wno-sign-compare to workaround failing build
on Fedora 18 due to bison creating sign comparison mismatches in
generic yylex wrapper code.
* ini.h (SETUP_BZ2_FILENAME): Reflect new architecture layout in ftp.
(SETUP_INI_FILENAME): Ditto.
* main.cc (Arch): New option. Include StringOption.h for this.
(WinMain): Change is_64bit calculation to allow overriding from command-line.
Issue error if bad value provided.
* res.rc: Move some text closer together.
* splash.cc: Include ini.h. Add architecture to opening screen.
* UserSettings.cc (UserSettings::get): Don't try to open a filename with the
name of the key. That's old behavior.
Corinna Vinschen [Fri, 22 Mar 2013 13:05:06 +0000 (13:05 +0000)]
* desktop.cc (do_desktop_setup): Install "Cygwin64 Terminal" link on
64 bit.
(DesktopSetupPage::OnActivate): Check for "Cygwin64 Terminal" link on
64 bit.
* main.cc (main_display): Avoid compiler warning on 64 bit.
* mount.cc (from_fstab): Take 2nd parameter as const by reference to
avoid potential crash due to scope issue.
Yaakov Selkowitz [Thu, 14 Mar 2013 09:21:06 +0000 (09:21 +0000)]
* configure.ac: Remove check for libmingw32.
(SETUP): Define EXE name based on host_cpu.
(MINGWTARGET): Remove.
* Makefile.am: Use SETUP throughout. Remove MINGWTARGET conditional.
Add -lmingw32 to LDFLAGS.
* ini.h (is_64bit): Declare.
(SETUP_INI_FILENAME): Make dependent on value of is_64bit.
(SETUP_BZ2_FILENAME): Ditto.
* main.cc (is_64bit): Define based on compiler target.
* mount.h (SETUP_KEY_WOW64): Define based on value of is_64bit.
* install.cc (create_allow_protected_renames): Add SETUP_KEY_WOW64
flag to RegOpenKeyEx call.
* mount.cc: Throughout, add SETUP_KEY_WOW64 flag to all RegOpenKeyEx
and RegCreateKeyEx calls.
(read_mounts): Change default Cygwin root depending on is_64bit.
* Makefile.am: Add regex.c to list of sources.
(iniparse.hh): Rename if a iniparse.h has been created.
* regex/config.h: New file.
* regex/re_comp.h: New file.
* regex/regcomp.c: New file.
* regex/regex.c: New file.
* regex/regex.h: New file.
* regex/regex_internal.c: New file.
* regex/regex_internal.h: New file.
* regex/regexec.c: New file.
* processlist.cc (Process::isModuleLoadedInProcess): Avoid compiler warning by
changing 'i' to unsigned.
Jon TURNEY [Fri, 8 Feb 2013 16:57:34 +0000 (16:57 +0000)]
2013-01-25 Achim Gratz <Stromeko@nexgo.de>
* README (HOW TO BUILD): Cross compiler package is now named
mingw-gcc-g++, also mention package upx as an optional dependency.
Jon TURNEY [Fri, 8 Feb 2013 15:55:01 +0000 (15:55 +0000)]
List and offer to kill processes preventing a file from being written
2013-02-01 Jon TURNEY <jon.turney@dronecode.org.uk>
* install.cc ( _custom_MessageBox): Remove custom message box.
(FileInuseDlgProc): Add file-in-use dialog box.
(installOne): Use processlist to list processes using a file, and
offer to kill them with the file-in-use dialog.
* res.rc (IDD_FILE_INUSE) : New dialog.
* resource.h (IDD_FILE_INUSE, IDC_FILE_INUSE_EDIT)
(IDC_FILE_INUSE_MSG, IDC_FILE_INUSE_HELP): Define corresponding
resource ID numbers.
* processlist.h: New file.
* processlist.cc: New file.
* Makefile.am (setup_LDADD): Add -lpsapi.
(setup_SOURCES): Add new files.
Jon TURNEY [Fri, 8 Feb 2013 15:38:50 +0000 (15:38 +0000)]
Refactor ::run() so it's more generally useful
2013-02-01 Jon TURNEY <jon.turney@dronecode.org.uk>
* script.cc (::run, Script::run): Move the formatting of the command
line used for postinstall script running out to Script::run. Move the
logging of the command and it's output into ::run.
* script.h: Add ::run() prototype.
Jon TURNEY [Thu, 17 Jan 2013 13:34:12 +0000 (13:34 +0000)]
Report progress correctly when amount of data is more than 2GB
2013-01-16 Jon TURNEY <jon.turney@dronecode.org.uk>
* threebar.cc (ThreeBarProgressPage::SetBar2): Change from long int to
long long int to handle more than 2GB of data.
* threebar.h (ThreeBarProgressPage::SetBar2): Update prototype.
* install.cc: Change md5sum and install counters to long long int.
* geturl.cc: Change download counter to long long int.
* geturl.h: Ditto.
Fix build with mingw-w64 headers.
* autoload.c: Define DECLSPEC_IMPORT for mingw-w64 headers.
* filemanip.h: Include <sys/types.h> to fix missing mode_t typedef
error with mingw-w64 headers.
* gpg-packet.cc: Include "win32.h" to avoid macro redefinition
errors with mingw-w64 headers.
(ARRAYSIZE): Do not redefine.
* main.cc (_argv): Declare if using mingw-w64 headers.
(WinMain): Move up _argv definition to before it is first used.
* ntdll.h: Include PSDK headers with mingw-w64 instead of DDK.
* package_message.h: Include "win32.h" instead of <windows.h>.
* propsheet.cc (PROPSHEETHEADER_V1_SIZE): Do not redefine.
* win32.h: Include <sys/types.h> to fix missing mode_t typedef
error with mingw-w64 headers.
Define DECLSPEC_IMPORT for mingw-w64 headers.
Yaakov Selkowitz [Thu, 30 Aug 2012 22:23:02 +0000 (22:23 +0000)]
* main.cc: Remove CINTERFACE define.
(main_display): Use C++ syntax for COM.
* mklink2.cc: Remove CINTERFACE define.
(make_link_2): Use C++ syntax for COM.
* io_stream_file.cc (io_stream_file::exists): Properly treat return from
GetFileAttributesW as a bit field so that a directory will not be seen as
"existing".
Corinna Vinschen [Wed, 29 Feb 2012 09:00:39 +0000 (09:00 +0000)]
* win32.cc (NTSecurity::GetPosixPerms): Don't allow write permissions
in inheritable default permission ACEs for group and other if the
directory is an S_ISVTX dir.
Corinna Vinschen [Fri, 24 Feb 2012 20:04:13 +0000 (20:04 +0000)]
* main.cc (WinMain): Move call to nt_sec.setDefaultSecurity here so
it's called earlier in the process. This avoids spurious error
messages in --help output.
Jon TURNEY [Fri, 24 Feb 2012 18:48:30 +0000 (18:48 +0000)]
2012-02-23 Jon TURNEY <jon.turney@dronecode.org.uk>
* main.cc (main_display): Move --help output from here ...
(WinMain): ... to here, so we don't logging of the current directory and
any errors from constructing a UserSettings object preceding the --help output.
Jon TURNEY [Thu, 23 Feb 2012 14:31:23 +0000 (14:31 +0000)]
Add infrastructure for handling string options which are repeated
2011-05-30 SZAVAI Gyula <szgyg@ludens.elte.hu>
* libgetopt++/src/StringArrayOption.cc: New file.
* libgetopt++/include/getopt++/StringArrayOption.h: New file.
* libgetopt++/Makefile.am: Add new files.
Jon TURNEY [Sat, 13 Aug 2011 14:43:31 +0000 (14:43 +0000)]
* choose.cc (OnInit, createListview): Build the initial list of packages
to install in OnInit() not in CreateListView(). If packages were selected
on command line in unattended mode, just install those packages.
* package_db.h (packagedb):Add addCommandLinePackages() method
* package_db.cc (addCommandLinePackages): Add separate method to add these
so we can indicate if packages were added on the command line
Jon TURNEY [Sat, 13 Aug 2011 14:22:17 +0000 (14:22 +0000)]
* PickView.cc (defaultTrust): Move implementation which deals with
package db from here...
* package_db.cc (defaultTrust): ... to here.
* package_db.h (packagedb): ... a new member function.
Corinna Vinschen [Fri, 12 Aug 2011 15:43:17 +0000 (15:43 +0000)]
* cygwin-setup.ico: New file.
* cygwin-terminal.ico: New file.
* cygwin.ico: New icons.
* desktop.cc (make_link): Take additional argument to take arguments
for shortcut. Append arg to argbuf.
(start_menu): Take additional argument to take argments for shortcut.
Add to call to make_link.
(desktop_icon): Ditto.
(save_icon): Take path and name of resource as arguments. Replace
Cygwin icon if it's the old one.
(do_desktop_setup): Save Cygwin standalone and Cygwin terminal icons.
Rename desktop and start menu shortcut name to "Cygwin Terminal", use
the cygwin terminal icon for them, and point them to mintty.
* res.rc: Change splash icon to keep size of original icon.
(IDI_CYGWIN_SETUP): New entry.
(IDI_CYGWIN_TERMINAL): New entry.
(CYGWIN-SETUP.ICON): New entry.
(CYGWIN-TERMINAL.ICON): New entry.
* resource.h (IDI_CYGWIN_SETUP): Define.
(IDI_CYGWIN_TERMINAL): Define.
Jon TURNEY [Fri, 26 Nov 2010 14:21:43 +0000 (14:21 +0000)]
Change package_db collection of packages from vector to a map so we can look things up in it quickly
This allows packagedb::findBinary() and packagedb::findSource() to be re-written to locate packages
by name rather than searching the entire set, which makes a big difference to total execution time.
* IniDBBuilderPackage.cc (IniDBBuilderPackage): Remove db.packages vector
sorting.
(buildPackage, buildPackageSource): Change package collection from vector
to map.
* PickView.cc (setViewMode, init_headers, defaultTrust): Ditto.
* choose.cc (createListview, logResults, keepClicked)
(changeTrust): Ditto
* install.cc (do_install_thread): Ditto
* download.cc (do_download_thread): Ditto
* prereq.cc (isMet): Ditto
* package_meta.cc (ScanDownloadedFiles): Ditto
* package_db.h (packagedb): Ditto
* package_db.cc (packagedb, flush, markUnVisited, setExistence)
(fillMissingCategory): Ditto
(findBinary, findSource): Rewrite to locate packages in map rather than
searching the whole vector, for performance.
(ConnectedLoopFinder, doIt, visit): Rewrite to refer to package using a
packagemeta *, as an index into the vector of packages can no longer be
used.
Jon TURNEY [Mon, 22 Nov 2010 12:53:06 +0000 (12:53 +0000)]
* package_meta.h (packagemeta): Remove unused member variables for
storing timestamp of the setup.ini that package version came from.
* package_meta.cc (packagemeta): Ditto.
Jon TURNEY [Mon, 22 Nov 2010 12:49:50 +0000 (12:49 +0000)]
* package_version.h (packageversion): Add compareVersion() utility
function.
* package_version.cc (Vendor_version, Package_version)
(compareVersions): Implement the Vendor_version() and Package_version()
accessor functions. Add compareVersions() utility function.
* cygpackage.cc (setCanonicalVersion): Fix to extract vendor version
correctly.
* IniDBBuilderPackage.cc (add_correct_version): When multiple setup.ini's
offer different packages for the same stability level, use the package with
the highest version number rather than the package coming from the setup.ini
with the latest timestamp.
Jon TURNEY [Sat, 20 Nov 2010 13:15:50 +0000 (13:15 +0000)]
* choose.cc (OnNext): Remove PrereqChecker call, instead use new
WM_APP_PREREQ_CHECK state of Progress dialog.
* threebar.h (WM_APP_PREREQ_CHECK)
(WM_APP_PREREQ_CHECK_THREAD_COMPLETE): Add new messages.
* threebar.cc (OnActivate, OnMessageApp): Use single bar mode for
WM_APP_PREREQ_CHECK state. Handle new messages.
* dialog.h (do_prereq_check_thread): Add prototype.
* prereq.cc (isMet, do_prereq_check_thread)
(do_prereq_check_reflector, do_prereq_check): Add progress reporting
during isMet, and thread containing moved PrereqChecker code.
Throughout, change all occurrences of "PostMessage" to PostMessageNow. This
works around problem where w32api uses a #define which calls the Windows API
version of PostMessage directly, confusing g++ 3.4.4.
Jon TURNEY [Wed, 10 Nov 2010 20:23:43 +0000 (20:23 +0000)]
* ini.cc (GuiParseFeedback::progress, GuiParseFeedback::iniName):
Update all the text in the progress dialog whilst parsing .ini file,
not just the top line.
Jon TURNEY [Fri, 5 Nov 2010 22:53:23 +0000 (22:53 +0000)]
* compress_bz.h (compress): Add endReached flag.
* compress_bz.cc (read, compress_bz): Use endReached flag to return 0
for a read when EOF has been reached, after BZ2_bzDecompress returns
BZ_STREAM_END, rather than continue to try to call BZ2_bzDecompress
beyond the end of the compressed data, generating a BZ_SEQUENCE_ERROR.
* ini.cc (do_remote_ini): Now that bz2_stream doesn't always have a
spurious error, detect and report if an error occurred decompressing.
* propsheet.cc (PropSheet::SetActivePage): Remove :: from call to
PropSheet_SetCurSel.
(PropSheet::SetActivePageByID): Remove :: from call to
PropSheet_SetCurSelByID.
(PropSheet::SetButtons): Remove :: from call to PropSheet_SetWizButtons.
(PropSheet::PressButton): Remove :: from call to PropSheet_PressButton.
Jon TURNEY [Sun, 29 Aug 2010 10:08:56 +0000 (10:08 +0000)]
2010-08-29 Jon TURNEY <jon.turney@dronecode.org.uk>
* postinstall.cc (do_postinstall_thread): Don't run postinstall
scripts belonging to a just installed package twice.
* script.h (Script): Add operator ==
Andy Koppe [Wed, 18 Aug 2010 17:03:17 +0000 (17:03 +0000)]
* res.rc (IDD_PREREQ): Say "Resolving Dependencies" instead of
"Unmet Dependencies found"
* prereq.cc (PrereqPage::OnNext): Tone down message box about
missing dependencies.