* autoload.c: Add dynamic load statements for NT/W2K
advapi32 functions not available in 9x/ME.
* main.cc (set_default_dacl): New function.
(WinMain): Call `set_default_dacl' if running on NT/W2K.
* ini.h (_CategoryPackage): Change pkg field to pkgname for consistency.
* choose.cc: Use pkgname field when referencing _CategoryPackage throughout.
(fill_missing_category): Don't add excluded packages.
(default_trust): Ditto.
(_view::insert_pkg): Ditto.
* iniparse.y (register_category): Use consistent variable name.
* choose.cc (set_action): Use default trust for determining reinstall and
source only.
(default_trust): Set default trust.
(pick_line::paint): Allow source selection when reinstalling or retrieving.
* choose.cc (isinstalled): Modify to properly accomodate special case of
"download only".
(set_action): Check downloaded components, not installed components if
"download only".
(set_existence): Always include full list of files when "download only".
* res.rc (IDD_LOCAL_DIR): Change caption to match the other dialog boxes.
(IDD_CHOOSE))))))))): Adjust horizontal size so package names are visible.
* choose.cc: Restore some more changes from 2001-06-25, throughout.
(paint): Wrap some excessively long lines.
(pick_line::paint): Ditto. Move the arrow in the "Current" column right to
where it belongs. Move the source checkbox slightly to the right.
(do_choose): List categories and required packages in setup.log.full.
* choose.cc (scan2): Restore source scanning eliminated by previous checkin.
* ini.h (struct _Info): Add "derived" element.
* choose.cc (scan2): Try to place unknown tar files into proper slot when
package exists in setup.ini but tar file does not.
*ini.h: Reapply 2001-06-25 changes.
* choose.cc (add_required): Ditto. Default to "Keep" state if UNINSTALL and
product is installed. Default to curr state if SKIP, etc.
(keep_or_skip): New function. Returns skip or keep state depending on
installed state of package.
(default_trust): Use keep_or_skip to set state.
(_view::insert_pkg): Use calloc to allocate lines.
(set_view_mode): Adapt 2001-06-25 change to set_full_list here.
Robert Collins [Sat, 30 Jun 2001 01:37:55 +0000 (01:37 +0000)]
Sat Jun 30 11:01:00 2001 Robert Collins <rbtcollins@hotmail.com>
* choose.cc: Remove globals full_list, headers, package_indexes and
nindexes.
Add globals cat_headers, pkg_headers and chooser.
(add_required): New function.
(paint): Use the chooser for header details.
Call into the chooser to paint each line.
(list_click): Use new global variables.
Call into the chooser to handle the click.
Repaint the entire view if packages have been added or removed.
(note_width): Get passed a headers struct rather than using a global
variable.
(fill_missing_category): New function.
(default_trust): Skip non-"Required" or "Misc" packages.
(pick_line::set_line (Package *)): New function.
(pick_line::set_line (Category *)): New function.
(pick_line::paint): New function.
(pick_line::click): New function.
(_view::_view): New function.
(_view::set_view_mode): New function.
(_view::mode_caption): New function.
(_view::set_headers): New function.
(_view::init_header): New function.
(_view::insert_pkg): New function.
(_view::insert_category): New function.
(_view::insert_at): New function.
(_view::insert_under): New function.
(_view::clear_view): New function.
(viewsplusplus): New function.
(_view::client): New function.
(set_view_mode): Use new chooser functionality.
(set_full_list): Use new global variables.
(create_listview): Instantiate chooser.
Remove all hardcoded headers[] code.
(dialog_cmd): On trust changes, check dependencies.
(getcategorybyname): New function.
(getpackagecategorybyname): New function.
(scan2): Use case-insensitive package comparison.
(do_choose): Use fill_missing_category ().
Show some category data.
* ini.h: Protect against multiple inclusion.
(views) New enum.
(_CategoryPackage): New struct.
(_Category): New struct.
(_Package): Change category to Category * from char *.
(extern Category category): New global variable.
(extern in ncategories): Ditto.
(getcategorybyname): New prototype.
(catpackagecategorybyname): New prototype.
(register_category): New prototype.
(add_category): New prototype.
* iniparse.y: Parse multiple categories per package.
category: New global variable.
ncategories: New global variable.
(new_package): Compare package against NULL, not 0.
(new_requirement): Source formatting fix.
(register_category): New function.
(add_category): New function.
* res.rc: Change IDC_CHOOSE_FULLPART to IDC_CHOOSE_VIEW.
IDC_CHOOSE_VIEWCAPTION: New control.
* resource.h: Change IDC_CHOOSE_FULLPART to IDC_CHOOSE_VIEW.
IDC_CHOOSE_VIEWCAPTION: New control.
Increment _APS_NEXT_CONTROL_VALUE.
* choose.cc (paint): Wrap lines excessively long lines.
(list_click): Ditto.
(create_listview): Ditto.
(do_choose): Ditto. Replace TABs and remove CRs in lines written to
setup.log.full. Allow "Yes" for source exists in setup.log.full when
installing from local directories.
* choose.cc (set_action): Only clear srcpicked when moving to next state.
Allow source installation if it exists in the current "trust" state. Don't
move to skip state when package is installed.
(list_click): Don't allow source clicking when no source is available.
(set_full_list): Display package when not is_full_action.
* ini.h (is_full_action): Define.
* install.cc (check_for_old_cygwin): New function. First stab at checking for
old cygwin versions.
(do_install): Call check_for_old_cygwin if there were no errors during the
install.
* choose.cc (set_existence): Use pointer method for indexing in trust array.
(create_listview): Ditto.
(scan2): Ditto. Also, use consistent variable name for indexing into trust
array.
* ini.h (Package): Reorganize info array for easier scanning.
* choose.cc (isinstalled): Eliminate special download only test.
(set_action): Don't move to next state if in ACTION_SAME range and not
incrementing.
(choose_caption): Display "Retrieve" rather than "Reinstall" when just
downloading.
(do_choose): Sort packages after all packages have been read. Accomodate the
fact that first element in trust array is empty so that log files don't report
the wrong trust value.
* iniparse.y (new_package): Malloc space for package name or suffer memory
corruption.
* choose.cc (set_action): Set trust on "redo".
(_Info::_Info): New constructor.
(read_installed_db): Use new constructor. Use trusts type for iterator.
* ini.h (struct _Info): Label struct, add constructor.
(Package): Make installed_ix a type 'trusts.'
* install.cc (uninstall_one): Unset any installed info for current package.
(install_one): Allocate new Info struct for installed reflecting new installed
info.
(do_install): Don't output line to installed.db if package is being
uninstalled.
* choose.cc: Eliminate extra array throughout. Use element in package
structure instead. Use pointers rather than array indexes where appropriate.
(set_action): New function to set next action based on current.
(choose_caption): New function. Returns display caption.
(check_existence): Change arguments. Use pointer to 'info' structure.
(set_existence): Use pointer rather than array index.
(default_trust): Use trusts enum for second argument.
(set_full_list): Honor exclude element in package structure.
(build_labels): Eliminate.
(base): Make global. Use const char * argument.
(get_package_version): Eliminate.
(getpkgbyname): New function.
(read_installed_db): Use parse_filename to get version info.
* desktop.cc (make_passwd_group): Use getpkgbyname function.
* download.cc (get_file_size): const argument.
(do_download): Use is_download_action to determine when something should be
downloaded.
* filemanip.h: Add some functions.
* ini.cc (do_ini): Use NULL rather than 0 for pointer assignment.
* ini.h: Use enums for actions and trusts.
(is_download_action): New macro.
(is_upgrade_action): Ditto.
(is_uninstall_action): Ditto.
(struct Package): Add new fields.
* inilex.l (yylex): Detect new setup.ini options.
* iniparse.y: Declare new tokens.
(yyparse): Detect exclude keyword. Fill out version field even if version ==
0.
(new_package): Use greater granularity when allocating package array to avoid
repeated calls to realloc.
* install.cc (exists): const argument.
(uninstall_one): Take pkg argument.
(install_one): Ditto. Eliminate unneeded arguments which can be derived from
package info.
(do_install): Iterate over package array using a pointer. Use
is_download_action to control when package should be downloaded.
* tar.cc (tar_open): const argument.
* tar.h: Refloect const argument.
Corinna Vinschen [Mon, 28 May 2001 08:31:02 +0000 (08:31 +0000)]
* geturl.cc (get_url_to_file): Add parameter `allow_ftp_auth'.
* geturl.h: Change declaration of `get_url_to_file' accordingly.
* netio.cc (NetIO::NetIO): Add parameter `allow_ftp_auth'.
Set member `ftp_auth'.
(NetIO::open): Add parameter `allow_ftp_auth'. Use it in calls
to constructors of derived classes.
(NetIO::get_ftp_auth): New method.
* netio.h: Change class definition accordingly.
* nio-ftp.cc (NetIO_FTP::NetIO_FTP): Add parameter `allow_ftp_auth'.
Take global variables `net_ftp_user' and `net_ftp_passwd' into account.
Add code for ftp authentication retry.
* nio-ftp.h: Change class definition accordingly.
* nio-http.cc (NetIO_HTTP::NetIO_HTTP): Add parameter `allow_ftp_auth'.
Add code for ftp authentication retry in case of proxy connection.
* nio-http.h: Change class definition accordingly.
* res.rc: Add FTP authentication dialog.
* resource.h: Add new constants used in res.rc.
* state.h: Add variables `net_ftp_user' and `net_ftp_passwd'.
* Makefile.in: Make iniparse.y produce a c++ file.
* choose.cc (set_existence): Revert 2001-05-27 change.
* ini.cc: Remove "C" from declaration of yyparse.
* iniparse.y (yyparse): Fill out version field by default when a binary install
is detected and no version has been set yet.
* install.cc (do_install): Mount things earlier so that we can use proper mount
table settings. Don't remove mounts since they are now honored.
* mount.cc (create_mount): Reread the mount table after establishing a new
mount.
(read_mounts): Explicitly clear root_here to allow multiple uses of this
function. Ensure that there is no garbage in the table when we've exhausted
all of the mounts in the registry.
(cygpath): Accomodate ./ in path.
Use parse_filename method to parse filenames throughout. Use get_root_dir to
retrieve the current root directory throughout. Set const in argument list,
where appropriate, throughout.
* choose.cc (set_existence): Detect case of uninstalled package with no
version.
(parse_filename): New function.
* filemanip.h (fileparse): New structure.
* mount.cc (read_mounts): Remember where we found the root mount.
(set_root_dir): New function.
(get_root_dir): Ditto.
* mount.h: Declare new functions.
* site.cc (get_root_dir_now): Renamed from get_root_dir.
(save_site_url): Use new function name.
(get_initial_list_idx): Ditto.
Reformat file after botched patch formatting.
* choose.cc (which_trust): Eliminate variable.
(default_trust): Don't set which_trust.
(do_choose): Use selected trust when reinstalling or installing source.
Change concat to cygpath throughout. Change map_filename to cygpath
throughout.
* concat.cc (vconcat): New function.
(concat): Use vconcat.
* concat.h: Reflect above.
* install.cc (map_filename): Eliminate.
(install_one): Free dest_file.
* mount.cc (find2): Expect input key to be pointing to mount record.
(in_table): New function.
(is_admin): Move from root.cc.
(read_mounts): New function.
(path_prefix_p): New function.
(cygpath): New function.
* mount.h: Define new functions and structure.
* root.cc (in_table): Move to mount.cc.
(do_root): Call read_mounts to initialize root stuff and mount table.
* site.cc (get_root_dir): Ditto.
* resource.h: Add new field IDC_CHOOSE_INST_TEXT. Modify
_APS_NEXT_CONTROL_VALUE to account for addition of IDC_CHOOSE_INST_TEXT.
* res.rc (IDD_CHOOSE): Modify choose dialog to use new field
IDC_CHOOSE_INST_TEXT for screen text. Modify choose Dialog to allow hot keys
to select Prev, Curr, Exp.
* ini.h: Add new actions for ACTION_REDO and ACTION_SRC_ONLY. Modify define
for LOOP_PACKAGES to include new actions ACTION_REDO and ACTION_SRC_ONLY.
* choose.cc: Add new Trusts for TRUST_REDO and TRUST_SRC_ONLY.
(paint): Modify to check TRUST_SRC_ONLY when determining Bitmap for source
Checkbox to use.
(build_labels): Add logic to allow for selection of Source only
Download/ReDownload/Install/Reinstall and also to Redownload/Reinstall current
version binary.
(dialog_proc): Add conditional display for file selection prompt based on
download vs install using IDC_CHOOSE_INST_TEXT.
(do_choose): Add new logic for TRUST_REDO and TRUST_SRC_ONLY selection and
modify logic for TRUST_UNINSTALL, TRUST_KEEP, and TRUST_NONE to handle the
instance where Source Download/Install was selected. Modify log file to store
appropriate information regarding Action selected and the new actions that were
added (I.E.: ACTION_REDO and ACTION_SRC_ONLY).
* download.cc: Add include for <unistd.h> and "port.h".
(download_one): Modify parameter list to include the selected action for the
file to be downloaded. Modify size check against expected size to include
check for ACTION_REDO and ACTION_SRC_ONLY. Modify rename of .tmp file to also
remove the destination file if exists due to ability to redownload source and
binary now.
(do_download): Modify to also use ACTION_REDO and ACTION_SRC_ONLY in
calculation of Download Bytes. Modify to also use ACTION_REDO and
ACTION_SRC_ONLY in determining files selected for download.
* install.cc (uninstall_one): Add check to treat a Reinstall like an upgrade so
current version will be uninstalled prior to reinstall.
(do_install): Add logic to handle ACTION_REDO and ACTION_SRC_ONLY for
uninstalling and installing binary and source packages.
* desktop.cc (make_passwd_group): Modify logic to account for a Source only
cygwin install when checking for cygwin to determine need for mkpasswd and
mkgroup.
* winsup/cinstall/res.rc: Added accelerators and improved focus order. Removed
WS_DISABLED from "OK" buttons to accomodate default focus changes in net.cc and
source.cc.
* winsup/cinstall/net.cc (dialog_proc): If no radio button is selected, a
default is selected.
* winsup/cinstall/source.cc (dialog_proc): Ditto.
(check_if_enable_next): Removed. No longer needed since a radio button will
always be selected.
(load_dialog): Removed call to check_if_enable_next.
(dialog_cmd): Ditto. Also added default to switch.
* win32.h: Remove the definitions for _UNION_NAME and _STRUCT_NAME.
Must now include <windows.h> and not the pieces.
* choose.cc (create_listview): Clean up type mismatch problems.
* dialog.h (NEXT(id)): Ditto.
* geturl.cc (dialog): Ditto.
* install.cc (dialog): Ditto.
* splash.cc (load_dialog): Ditto.
* Makefile.in: Add bz2 include/library support.
* filemanip.h: New file.
* choose.cc (find_tar_ext): New function. Returns TRUE if .tar.gz or .tar.bz2
found.
(scan2): Reorganize to use find_tar_ext, accomodating .bz2 extension.
(read_installed_db): Ditto.
(do_choose): Ditto.
* fromcwd.cc (found_file): Ditto.
(do_fromcwd): Ditto.
* tar.cc (class gzbz): New super class for uncompression support.
(gz): New class for gzip support.
(bz): New class for bzip2 support.
(tar_open): Use gzbz class to control file opening.
(tar_ftell): Ditto for returning position in file.
(skip_file): Ditto for reading file.
(tar_next_file): Ditto.
(tar_read_file): Ditto.
(tar_close): Ditto for close.
* zlib/configure.in: Force NM substitution.
* source.cc (do_source): Default to "Install from Internet".
* nio-file.cc (NetIO_File::NetIO_File): Use `get_file_size' instead of `stat'.
* choose.cc (list_click): Correct inability to select source code for download.
(scan2): Modify to skip source tarballs when scanning disk for installable
packages.
Corinna Vinschen [Thu, 15 Mar 2001 19:06:23 +0000 (19:06 +0000)]
* install.cc: install sources into /usr/src instead
of /, also include the sizes of source tarballs
in total_bytes.
* download.cc: include sizes of source tarballs in
total_download_bytes.
* choose.cc (paint): Modify message for nothing to download vs
nothing to install/update based on installation method.
(list_click): Modify to skip versions in selection process if
installing from local directory and installation file does not exist.
Also leaves Source Action set to N/A if the source file does not exist
and installing from local directory.
(check_existence): New method to check current existence of installation
files based on selected installation method.
(set_existence): New method to set the current existence of installation
files based on selected installation method.
(best_trust): Modify decision process for best trust to base decision on
current trust selected (IE: Prev, Curr, or Test), existence of file and
installation method selected.
(default_trust): Add logic to capture the current trust level and the
trust selected for the given package.
(set_full_list): Expand decision criteria for displaying a package in
the selection list to include file existence/non-existence and selected
installation method.
(build_labels): Modify criteria for label addition to include
installation method and file existence/non-existence.
(create_listview): Modify to establish package trust level for each
package before setting up the display list. Also modification to set
current trust button as the default.
(dialog_cmd): Set response for Prev, Curr, Test button push to perform
a reset of the selection list in addition to setting the default trust.
(get_package_version): New method to provide reusable code for
determining the package version from the file name for a specified
trust.
(scan2): Modify to use new method get_package_version and
also enhance handling of the build for the structures package and
extra.
(read_installed_db): Modify to use the new method
get_package_version and also enhance handling of the build for the
structures package and extra.
(do_choose): Add additional initialization of package and extra
structures. Modify to use read_installed_db all the time despite
install method. Modify output to setup.log.full log file to increase
readability by adding additional spacing, expanded code and available
versions.
* ini.h: Add new fields install_exists, source_exists and
partial_list_display to the structure definition for package.
* res.rc (IDD_CHOOSE): Modify choose dialog Prev, Curr, and Test
pushbuttons by replacing with Radio Buttons thus allowing the
operator to better determine which is selected.
Corinna Vinschen [Tue, 27 Feb 2001 12:27:58 +0000 (12:27 +0000)]
Changes by Brian Keener <bkeener@thesoftwaresource.com>
* download.cc (do_download): Add new variables total_download_bytes and
total_download_bytes_sofar for download progress meter. Add loop
to accumulate the total bytes to download from the selected packages.
* geturl.cc: Add state.h and diskfull.h to include list. Add new
variables gw_iprogress, gw_pprogress, gw_progress_text,
gw_pprogress_text, and gw_iprogress_text to allow for addition of
total packages download progress meter and disk full percent
progress meter. Add variables total_download_bytes and
total_download_bytes_sofar for use by progress meters.
(dialog_proc): Add new variables gw_iprogress, gw_pprogress,
gw_progress_text, gw_pprogress_text, and gw_iprogress_text to
allow for addition of total packages download progress meter and disk
full percent progress meter.
(init_dialog): Ditto.
(progress): Ditto.
(get_url_to_file): Ditto.
* geturl.h: Add external definition for total_download_bytes and
total_download_bytes_sofar.
* res.rc: Add two additional progress meters (IDC_DLS_IPROGRESS)
and (IDC_DLS_PPROGRESS) and three text objects (IDC_DLS_PROGRESS_TEXT)
and (IDC_DLS_IPROGRESS_TEXT, IDC_DLS_PPROGRESS_TEXT) for use in the
download meters.
* resource.h: Add new fields for progress meters and text and update
_APS_NEXT_CONTROL_VALUE.
Corinna Vinschen [Mon, 19 Feb 2001 18:02:19 +0000 (18:02 +0000)]
* download.cc (get_file_size): New function. Eliminates the need
to call `stat'.
(download_one): Call `get_file_size' instead of `stat'. This
workarounds a problem with mingw's `stat' call.
Earnie Boyd [Thu, 8 Feb 2001 01:59:42 +0000 (01:59 +0000)]
* Makefile.in: (%.o: %.rc): Specify --include-dir $(w32api_include).
This is to allow cinstall to build with 2.95.2-7 and to make the
use of headers consistent.
* choose.cc (paint): Use system background color for text output.
* Makefile.in: Use CXX for linking and for compiling .cc files.
* configure.in: Find correct c++ compiler.
* configure: Regenerate.
* desktop.cc: Include "ini.h" and "version.h".
(make_passwd_group): Skip the function on 9x/ME boxes when an
older version of Cygwin has been installed which doesn't
support mkpasswd/mkgroup on 9x/ME.
* install.cc: Move the `LOOP_PACKAGES' and `pi' macros to...
* ini.h: ...here.
DJ Delorie [Mon, 6 Nov 2000 17:04:14 +0000 (17:04 +0000)]
* install.cc (do_install): Add call to set_cygdrive_flags to sync
the mount modes.
* mount.cc (set_cygdrive_flags): New function.
(get_cygdrive_flags): Ditto.
(default_cygdrive): Ditto.
(set_cygdrive_flags): Ditto.
* mount.h: Add prototype for set_cygdrive_flags.
DJ Delorie [Sun, 22 Oct 2000 15:38:07 +0000 (15:38 +0000)]
* choose.cc (build_labels): Don't skip TRUST_PREV completely; only
ignore it wrt full_list if there's already a version installed.
(do_choose): Sort the list.
(package_sort): New.
DJ Delorie [Thu, 14 Sep 2000 15:56:31 +0000 (15:56 +0000)]
* res.rc: increased the size of the site dialog (IDD_SITE) & the
corresponding list box to provide for more URL's to be listed.
Modified the position of the Back, Next and Cancel buttons to
correspond to the new size of the dialog.
DJ Delorie [Fri, 8 Sep 2000 00:14:21 +0000 (00:14 +0000)]
* splash.cc: use version.h, not local decl
* res.rc: add "old version" message
* resource.h: ditto
* version.h: new
* fromcwd.cc (canonicalize_version): make global
* iniparse.y: add setup-version support
* inilex.l: add [exp] as alias for [test], add setup-version
* Makefile.in (version.c): add setup-version tag
* desktop.cc (do_desktop): remove 1.1 version number
(do_desktop_setup): ditto
* ini.cc (do_ini): zero out package list just in case we redo it.
DJ Delorie [Thu, 7 Sep 2000 01:45:12 +0000 (01:45 +0000)]
* desktop.cc: added logic to handle to the new dialog and to
default the setting for the new checkboxes based on whether the
desktop icon or start menu link already exist.
(desktop_icon): correction to desktop directories for desktop icon
creation. Additional logic added for Win95 which does not appear
to have Common Directories so if Common selected and null uses
normal directory.
(start_menu): Additional logic added for Win95 which does not
appear to have Common Directories so if Common selected and null
uses normal directory.
(do_desktop_setup): moved the saving of the icon, creation of the
bat file, profile, passwd, Start Menu link and desktop shortcut to
this method from do_desktop. Made the creation of the desktop
icon and start menu link conditional on settings of new dialog
created for desktop.
* install.cc (do_install): changed next from IDD_S_DESKTOP to
IDD_DESKTOP.
* main.cc (WinMain): changed case IDD_S_DESKTOP to IDD_DESKTOP.
* res.rc: added new resource to create a desktop dialog with 2
checkboxes for creating the desktop icon and start menu link.
* resource.h: changed IDD_S_DESKTOP to IDD_DESKTOP and added two
new controls: IDC_ROOT_MENU and IDC_ROOT_DESKTOP for new dialog.
* state.h: added root_menu and root_desktop for use in dialog.
DJ Delorie [Wed, 30 Aug 2000 01:05:42 +0000 (01:05 +0000)]
* choose.cc (scan_downloaded_files): scan for existing files, so
that the user only sees new downloads.
* nio-ie5.cc (NetIO_IE5): pre-check for wininet.dll, enable dial-up
* site.cc (do_site): if we can't download the mirror list, go back
to the net setup box to choose another transport.
* autoload.c: add more functions
* Makefile.in (ALL_DEP_LDLIBS): remove wininet.a
* resource.h: add WININET message
* net.cc (do_net): no longer default to IE5
* simpsock.h (class SimpleSocket): new, simplify socket operations
* simpsock.cc: ditto
* nio-http.h: new, for direct http protocol
* nio-http.cc: ditto
* nio-ftp.h: new, for direct http protocol
* nio-ftp.cc: ditto
* netio.cc (set_url): move initialization here to handle redirections
(open): add direct http/ftp
* netio.h (NetIO::set_url): new
* log.cc (log_save): create directory for log if needed
* hash.cc, hash.h: new
* Makefile: add hash.o
* choose.cc: enable "uninstall" option
* download.cc: invert action test to accomodate uninstalling
* ini.h: add ACTION_UNINSTALL
* install.cc: add uninstall functionality
* res.rc: make install tag changeable
* resource.h: add uninstall resources