* 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.