Corinna Vinschen [Tue, 15 Jan 2002 18:27:40 +0000 (18:27 +0000)]
* io_stream.cc (io_stream::gets): Eliminate trailing new line chars.
* package_meta.cc (packagemeta::uninstall): Check for additional
Windows shortcut. Unset R/O file attribute before trying to delete
file.
Robert Collins [Tue, 8 Jan 2002 23:46:26 +0000 (23:46 +0000)]
2002-01-09 Robert Collins <rbtcollins@hotmail.com>
* choose.cc (pkgtrustp): Fall back to installed if a package is not present in
the current trust level. For prev, fall back via curr.
(set_existence): Allow sources with no sites, but cached files to be
kept.
(pick_category_line::paint): Start drawing clickable categories.
* fromcwd.cc (found_file): Reinstate local file scanning.
Robert Collins [Tue, 8 Jan 2002 10:23:18 +0000 (10:23 +0000)]
2002-01-07 Gary R. Van Sickle <g.r.vansickle@worldnet.att.net>
* fromcwd.cc: Run indent.
(do_fromcwd): Reverse sense of comment. Set next_dialog
to IDD_CHOOSER instead of IDD_CHOOSE.
* ini.cc (find_routine): Remove "/" from "/setup.ini".
Robert Collins [Sun, 6 Jan 2002 13:37:09 +0000 (13:37 +0000)]
2001-01-07 Robert Collins <rbtcollins@hotmail.com>
* category.cc (Categorycmp): Add a const safe version.
* category.h (Categorycmp): Add a const safe version.
(Category): Add operator ==.
* choose.cc (fill_missing_category): Add every package to "All".
(pick_category_line::paint): Add support for hidden labels, and a tree depth.
(pick_category_line::click): Ditto.
(view::view): Pass in a top level category to use.
(view::insert_pkg): Special case - skip category "All".
(view::insert_category): Ditto.
(view::clear_view): Set the contents label state.
(create_listview): Pass in a top level category to view().
* choose.h (topbucket): Make bucket available to derived classes.
(pick_category_line): Add support for hidden labels, and a tree depth.
Remove our second copy of bucket.
(view): Pass in a top level category to the constructor.
Use pick_category_line to allow three level display.
Robert Collins [Sun, 6 Jan 2002 11:31:47 +0000 (11:31 +0000)]
2001-01-06 Robert Collins <rbtcollins@hotmail.com>
* cygpackage.h (cygpackage): Make set_[s|l]desc virtual.
* iniparse.y (add_correct_version): Copy descriptions across.
* package_meta.cc (SDesc): Iterate through versions, return the first with a
description.
* package_version.h (packageversion): Add new virtuals set_[l|s]desc.
Robert Collins [Thu, 3 Jan 2002 11:42:30 +0000 (11:42 +0000)]
2002-01-04 Jan Nieuwenhuizen <janneke@gnu.org>
* Makefile.in (realclean): more clean.
(OBJS): Add script.o.
* postinstall.cc (run_script_in_etc_postinstall): New function.
(do_postinstall): Split off new funtion init_run_script ().
(init_run_script):
(run):
(run_script): Move to script.cc. Replace some deprecated remove
and move calls.
* script.h:
* script.cc: New file.
* Forward port cygwin-20010707.jcn3.patch.
* package_meta.cc (uninstall): Run pre- and postremove scripts.
* install.cc: Typo fix.
(do_install): Run script initialisation.
Robert Collins [Thu, 3 Jan 2002 11:27:11 +0000 (11:27 +0000)]
2001-01-04 Gary R. Van Sickle <g.r.vansickle@worldnet.att.net>
* cistring.cc: Run d2u.
* cistring.h: Run d2u.
* desktop.cc (etc_profile): Remove "test -f ./.bashrc && . ./.bashrc"
from the generated /etc/profile. Bash will source this file
automatically, and having this here merely results in .bashrc being
executed twice. Run d2u.
* desktop.h: Run d2u.
* propsheet.cc: Run d2u.
(PropSheetProc): New function. Add minimize box here instead of in
PropertyPage::DialogProc.
(PropSheet::Create): Change to use creation callback PropSheetProc.
(DLGTEMPLATEEX): Add 'hidden' Windows struct definition.
* propsheet.h: Run indent, d2u.
* proppage.h: Run indent, d2u.
* proppage.cc: Run d2u.
(PropertyPage::DialogProc): Remove minimize-box-adding
functionality. Remove commented-out "PropSheet_SetWizButtons" calls.
Add support for calling virtual OnMessageCmd. Add setting of fonts in
WM_INITDIALOG handler.
(resource.h): New include for resource IDs.
* res.rc: Resize and rearrange property page dialog templates
to bring them in line with "Microsoft's Backward Compatible Wizard 97"
specification. Run d2u.
(IDD_SITE): Add an edit control and an "Add" button in order to
combine the IDD_SITE and IDD_OTHER_URL functionality onto one page.
(IDD_OTHER_URL): Remove dialog template.
(IDD_DLSTATUS): Remove dialog template.
* site.cc: Run d2u.
(SitePage::OnBack): Remove NEXT() macro invocation.
(SitePage::OnActivate): New member function.
(load_dialog): Remove. Functionality subsumed into
SitePage::OnActivate.
(save_dialog): Change to support both list and user URLs. Remove
OTHER_IDX and mirror_idx logic.
(SitePage::PopulateListBox): New member function.
(SitePage::CheckControlsAndDisableAccordingly): New member function.
(SitePage::OnMessageCmd): New override.
(check_if_enable_next): Remove.
(dialog_cmd): Remove.
(do_download_site_info_thread): Remove calls to NEXT() macro.
(SitePage::Create): Call the single-param PropertyPage::Create
overload.
(other_url): New static taken from other.cc.
(SitePage::OnNext): Remove mirror_idx logic.
(SitePage::OnInit): Remove "Other URL" entry from list box. Remove
list box populating code, now handled in SitePage::PopulateListBox.
(mirror_idx, NO_IDX, OTHER_IDX): Remove.
(save_site_url): Fix potential buffer overflow problem. Switched to
TCHAR in grossly premature preparation for multilingual support.
* site.h: Run d2u.
(SitePage::OnActivate): New member function.
(SitePage::CheckControlsAndDisableAccordingly) New member.
(SitePage::OnMessageCmd): New override.
(do_download_site_info_thread): Add MessageBox call on failure to
download site list.
* splash.cc: Run d2u.
(SplashPage::OnInit): Set the font for the title.
* splash.h: Run d2u.
* threebar.cc: Run d2u.
* threebar.h: Run d2u.
* window.h: Run d2u.
(Window::IsButtonChecked): New member function declaration.
(Window::OnMessageCmd): New member function.
(Window::SetDlgItemFont): New member function declaration.
(Window::MAXFONTS, Window::Fonts, Window::FontCounter): New data
members.
* window.cc: Run d2u.
(Window::IsButtonChecked): New member function definition.
(Window::SetDlgItemFont): New member function definition.
(Window::Window): Add initialization for FontCounter.
(Window::~Window): Delete any fonts we created.
* geturl.cc: Run d2u.
(progress): Remove the "3" field width from the "%3d"
percent-complete format indicator. Causes line to not start at
beginning of text box, and does little to help with "jumping", since
the "bytes downloaded so far" field is variable-width anyway. Change
kb/s format field to "%03.1" to 0-pad the kb/s number in the event of
painfully slow connections, or temporary slowdowns in faster
connections should such more-instantaneous functionality become
available.
* net.h: Run d2u.
(NetPage::OnMessageCmd): New member function declaration.
(NetPage::CheckIfEnableNext): New member function declaration.
* net.cc: Run d2u.
(NetPage::OnMessageCmd): New member function definition.
(dialog_cmd): Remove, subsumed into NetPage::OnMessageCmd.
(check_if_enable_next): Remove.
(NetPage::CheckIfEnableNext): New member function, subsumes
check_if_enable_next.
(propsheet.h): Add include.
(NetPage::Init): Add call to CheckIfEnableNext.
(load_dialog): Remove call to check_if_enable_next.
(NetPage::Create): Call single-template-ID-parameter overload of
PropertyPage::Create instead of three-parameter one.
Robert Collins [Sun, 23 Dec 2001 12:13:29 +0000 (12:13 +0000)]
2001-12-22 Gary R. Van Sickle <g.r.vansickle@worldnet.att.net>
* window.h (Window): New file, new class.
* window.cc (Window): New file, new class.
* threebar.h (ThreeBarProgressPage): New file, new class.
* threebar.cc (ThreeBarProgressPage): New file, new class.
* splash.h (SplashPage): New file, new class.
* splash.cc (SplashPage): Replace file with implementation of new
class.
* source.h (SourcePage): New file, new class.
* source.cc: Run indent.
(SourcePage): Add class implementation to this file.
(do_source): Remove, functionality subsumed by SourcePage::Create()
and SourcePage::OnDeactivate().
(dialog_proc): Remove, functionality subsumed by
SourcePage::OnActivate().
* site.h: Run indent.
(SitePage): Add class declaration.
* site.cc: Run indent.
(SitePage): Add class implementation.
(do_download_site_info_thread): New function.
(context): New var. Context info for do_download_site_info_thread().
(do_download_site_info): New function.
(SitePage::Create, SitePage::OnInit SitePage::OnNext)
(SitePage::OnBack): SitePage class implementation..
(dialog_cmd): Remove IDOK, ID_BACK, and IDCANCEL handlers, now handled
by SitePage members.
(dialog_proc): Remove, now handled by SitePage::OnInit and base class
functionality.
(do_site): Remove, now handled by do_download_site_info_thread() and
SitePage::OnNext functionality.
(get_site_list): Remove dismiss_url_status_dialog() call.
* root.h (RootPage): New file, new class.
* root.cc: Run indent.
(dialog_cmd): Pass parent HWND parameter to note(), yesno().
(dialog_proc): Remove.
(do_root): Remove
(dialog_cmd): Remove IDOK, ID_BACK, and IDCANCEL clauses from switch.
(RootPage::OnInit): New member function. Move get_root_dir() logic to
here from do_root().
(RootPage::Create): New member function.
(RootPage::OnNext): New member function. Move IDOK logic from
dialog_cmd() to here.
(RootPage::OnBack): New member function.
* propsheet.h (PropSheet): New file, new class.
* propsheet.cc (PropSheet): New file, new class.
* proppage.h (PropertyPage): New file, new class.
* proppage.cc (PropertyPage): New file, new class.
* net.h (NetPage): New file, new class.
* net.cc: Run indent.
(net.h, threebar.h): Add includes.
(Progress): Add extern.
(dialog_cmd): Remove IDOK, IDC_BACK, and IDCANCEL cases, now handled by
property sheet logic. Saved temporarily for reference.
(NetPage::Create, NetPage::OnInit, NetPage::OnDeactivate,
NetPage::OnNext, NetPage::OnBack):
New implementation of NetPage class members.
(do_net): Remove.
(dialog_proc): Remove.
* msg.h (fatal, note, yesno): Add owner param.
* msg.c (fatal, note, yesno, mbox): Add owner param.
(mbox): Remove MB_TOPMOST from MessageBox call. Unnecessary and wrong
now that we have a parent.
* main.cc: Run indent.
(commctrl.h, proppage.h, propsheet.h, splash.h, source.h)
(localdir.h, net.h, site.h, choose.h, threebar.h, desktop.h): Include
headers.
(root_dialog_proc): extern into this file.
(Progress): Progress dialog defined here, used in several other files.
(WinMain): Instantiate and create Splash, Source, Root, LocalDir, Net,
Site, Chooser, Desktop pages and MainWindow sheet. Call
InitCommonControls() to make sure Windows is set up for our use of
property sheets. Add pages to sheet.
Call MainWindow.Create() to "DoModal". Remove main loop, that logic is
now handled by the PropSheet class.
(root.h): Add include.
* log.cc (log_save): Pass NULL parent to fatal().
(exit_setup): Pass NULL parent to note().
* localdir.h (LocalDirPage): New file, new class.
* localdir.cc: Run indent.
(localdir.h): New include.
(threebar.h): New include.
(Progress): extern into this file.
(LocalDirPage::Create, LocalDirPage::OnInit, LocalDirPage::OnActivate)
(LocalDirPage::OnNext, LocalDirPage::OnBack): Implementation of
LocalDirPage.
(LocalDirPage::OnNext): Move log() call from do_local_dir() to here.
(dialog_cmd): Remove IDOK, ID_BACK, and IDCANCEL handlers.
(do_local_dir): Remove.
(dialog_proc): Remove.
(cwd): Remove, not used by anything.
* install.cc: Run indent.
(process.h, threebar.h): New includes.
(Progress): extern into this file.
(ins_dialog, ins_action, ins_pkgname, ins_filename, ins_pprogress)
(ins_iprogress, ins_diskfull, init_event): Remove, now handled by
ThreeBarProgressPage.
(dialog_cmd, dialog_proc, dialog): Removed, handled in
ThreeBarProgressPage.
(init_dialog): Remove all mention of the above ins_* handles. Now
handled in ThreeBarProgressPage. Altered SetWindowText()s to call
ThreeBarProgressPage instance Progress directly.
(progress): Alter bar update logic to call ThreeBarProgressPage
instance Progress directly.
(uninstall_one): Alter SetWindowText()s to call ThreeBarProgressPage
instance Progress directly.
(install_one_source): Alter SetWindowText()s to call
ThreeBarProgressPage
instance Progress directly. Pass NULL parent to note().
(do_install_thread): Rename from do_install(), added owner param.
Alter SetWindowText()s to call ThreeBarProgressPage instance Progress
directly.
Remove dismiss_url_status_dialog() call, no longer necessary. Remove
ShowWindow(<hide>) call, also unnecessary now. Pass owner handle to
fatal().
(do_install_reflector): New function.
(do_install): New function.
* ini.cc (process.h, threebar.h): New includes.
(Progress): externed into this file.
(find_routine): Pass NULL parent to note().
(do_local_ini): Add owner param.
(do_remote_ini): Add owner param. Pass owner to get_url_to_membuf()
and note(). Remove call to dismiss_url_status_dialog().
(do_ini_thread): Rename from do_ini(). Add owner param. Pass owner to
do_local_ini(), do_remote_ini(), yesno(), and note(). Set next_dialog
to IDD_CHOOSER on exit.
(do_ini_thread_reflector): New function.
(context): New var. Context for do_ini_thread.
(do_ini): New function.
* geturl.h (get_url_to_membuf, get_url_to_string, get_url_to_file): Add
owner param.
* geturl.cc (gw_dialog, gw_url, gw_rate, gw_progress, gw_pprogress,
gw_iprogress)
(gw_progress_text, gw_pprogress_text, gw_iprogress_text, init_event):
Removed.
(threebar.h): New include.
(Progress): externed into this file.
(dialog_cmd, dialog_proc, dialog): Removed, handled by
ThreeBarProgressPage now.
(init_dialog): Remove "if (gw_dialog == 0)" clause. Alter
SetWindowText()s
and bar setting SendMessage()s to call ThreeBarProgressPage instance
Progress directly. Remove "one bar only" logic, this is now handled
explicitly in the ThreeBarProgressPage class.
(progress): Altered bar and text update logic to call
ThreeBarProgressPage instance Progress directly. Changed kbps
calculation to floating point and now print out a single decimal
place.
(get_url_to_membuf): Add owner param. Pass it to init_dialog.
(get_url_to_string): Add owner param. Pass it to get_url_to_membuf.
(get_url_to_file): Add owner param. Pass it to init_dialog. Alter bar
update logic to call ThreeBarProgressPage instance Progress directly.
(dismiss_url_status_dialog): Remove.
* fromcwd.cc (do_fromcwd): Add owner param. Initialize found_ini to
false, was true.
* download.cc: Run indent.
(process.h, threebar.h): New includes.
(Progress): externed into this file.
(download_one): Add owner param. Pass it to get_url_to_file().
(do_download_thread): Renamed from do_download. Add owner param. When
calculating total_download_bytes, take binpicked and srcpicked into
account. Remove call to dismiss_url_status_dialog(), no longer needed.
Pass owner handle to download_one() and yesno().
(do_download_reflector, do_download): New functions.
(context): New var. Context for do_download_thread().
* dialog.h (D(x)): Add owner param.
* desktop.h (DesktopSetupPage): New file, new class.
* desktop.cc: Run indent.
(desktop.h): Add include.
(dialog_proc, do_desktop): Remove, now handled in
DesktopSetupPage::OnInit().
(dialog_cmd): Remove IDOK, IDC_BACK, and IDCANCEL cases, handled in
DesktopSetupPage::OnFinish(), DesktopSetupPage::OnBack(), and PropSheet
resp.
(DesktopSetupPage::Create, DesktopSetupPage::OnInit)
(DesktopSetupPage::OnBack, DesktopSetupPage::OnFinish): Implementation
of DesktopSetupPage.
* cistring.h: New file, new class.
* cistring.cc: New file, new class.
* choose.h: Run indent.
(Chooser): New class declaration.
* choose.cc: Run indent.
(do_choose): Add owner param. Pass it to DialogBox() and
fatal().
(Chooser): New class implementation.
* res.rc (IDS_VERSION_INFO): New string.
(IDD_SOURCE, IDD_LOCAL_DIR, IDD_ROOT, IDD_SITE, IDD_OTHER_URL)
(IDD_DLSTATUS, IDD_INSTATUS, IDD_SPLASH, IDD_CHOOSE, IDD_DESKTOP):
Change WS_POPUP to WS_CHILD. Numerous positioning/size changes
throughout.
(IDD_CHOOSE): Give template the WS_EX_CONTROLPARENT style to enable
TAB control navigation etc. Give the controls a reasonable tab order.
Grouped radio buttons. Something's still not right, can't tab away
from back/next/cancel group reliably.
* resource.h (IDD_CHOOSER): New dialog ID.
* Makefile.in (OBJS): Add cistring.o, proppage.o, propsheet.o,
threebar.o, and window.o.
Robert Collins [Thu, 20 Dec 2001 11:49:54 +0000 (11:49 +0000)]
2001-12-20 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in: Add libcomctl32.a for setup.exe.
* archive.h (archive): Prevent non-child direct creation of the class.
* archive_tar.h (archive_tar): Prevent inaccurate synthetic copy and assignment.
* choose.cc: Include commctrl for the choose header.
(NEW_COL_SIZE_SLOP): Define without magic numbers.
(pkgtrustp): Convert to function.
(set_action): Remove.
(add_required, fill_missing_category,default_trust): Use list syntax for
package list.
Use new set_action.
(choose_caption): Remove.
(topbucket::paint): New method.
(topbucket::empty): Ditto.
(topbucket::click): Ditto.
(topbucket::~topbucket): Ditto.
(paint): Remove i,ii and p as they are obsolete.
Remove header drawing code.
Use new chooser method to paint the chooser.
Use new chooser itemcount method.
(scroll_common): Rename to view::scroll.
Scroll the header window separately.
(list_vscroll, list_hscroll, list_click): Update for new chooser methods.
(listview_proc): Look for header messages.
(note_width): Accept stringless calls.
(pick_line::set_line): Remove.
(pick_line::paint): Remove.
(pick_pkg_line::paint): Paint this one line, using the header column widths.
(pick_category_line::paint): Paint this category, and anything in the bucket.
(pick_line::click): Remove.
(pick_pkg_line::click): Handle a click.
(pick_category_line::click): Handle a click.
(_view): Rename all to view.
(view::view): Initialise the control contents.
(view::set_headers): Work with the header control.
(view::init_headers): Use list syntax for package list.
Rearrange the width logic a little.
(view::insert_pkg): Update to use the hierarchy.
(view::insert_category): Ditto.
(view::insert_at, view::insert_under): Remove.
(view::clear_view): Update to use the hierarchy.
(view::click): Update to use the hierarchy.
(set_view_mode): Use list syntax for package list.
Update for new chooser methods.
(DoInsertItem): New helper function. (Needs a home somewhere).
(create_listview): Remove choose control code and use the constructor instead.
(dialog_cmd,scan2,do_choose): Use list syntax for package list.
* choose.h: Include newly required headers list and package_meta.
(_voew): Rename to view.
(pick_line): Convert to an ABC.
(pick_pkg_line): New class.
(pick_catgory_line): New class.
(topbucket): New class.
(view::scroll): New method created from listview_scroll function.
* desktop.cc (make_passwd_group): Use list syntax for package list.
* download.cc (do_download): Use list syntax for package list.
* fromcwd.cc (found_file): Use list syntax for package list.
* iniparse.y (pacakges): Use list syntax for package list.
* install.cc (uninstall_one): Use list syntax for package list.
(do_install): Use list syntax for package list.
* io_stream.h (io_stream): Prevent non-child direct creation of the class.
Prevent inaccurate synthetic copy and assignment.
* list.h: Include required header stdlib.
Work on const correctness.
* package_db.cc (packagedb::getpackagebyname): Remove.
(packagedb::packagedb): Remove custom list code, and make db a local.
(packagedb::getfirstpackage): Remove.
(packagedb::getnextpackage): Remove.
(packagedb::addpackage): Remove.
(flush): Remove custom list code.
(packagedb::registerpackage): Remove.
(packagedb::packages): New static member.
(packagedb::task): New static member.
* package_db.h (PackageDBActions): New enum.
(packagedb): Remove getfirstpackage, getnextpackage, getpackagebyname,
addpackage, registerpackage, packages, packagecount, curr_package, db.
Add packages, task.
* pacakge_meta.cc: Include package_db.h.
(packagemeta::action_caption): New method.
(packagemeta::set_action): New method.
* package_meta.h (CategoryPackage): Initialise key.
(packagemeta): Initialise key.
Add set_action and action_caption methods.
Prevent inaccurate synthetic copy and assignment.
* resource.h (IDC_CHOOSE_LISTHEADER): New ID.
* source.cc: Include package_db for db manipulation.
(save_dialog): Set the db task.
* win32.h: Tell the w32 include headers what IE version to expect/require.
Robert Collins [Mon, 3 Dec 2001 22:22:09 +0000 (22:22 +0000)]
2001-12-04 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in (OBJS): Add setup_version.o.
(version.c): Rename to setup_version.
* choose.cc (set_action): Prevent NULL pointer dereference.
(package_sort): Remove.
* fromcwd.cc (canonicalize_version): Moved to version.cc.
(check_ini): New function for use with find to see if there is a cached setup.ini.
(do_fromcwd): Check for a cached setup.ini from any mirror site.
* ini.cc (find_routine): New function, for finding cached setup.ini's.
(do_local_ini): New function, drives parsing of local ini's.
(do_remote_ini): New function, drives parsing and caching of remote ini's.
(do_ini): Move guts to do_remote_ini and do_local_ini.
* list.h (removebyindex): New method.
* other.cc (save_dialog): Use new site_list and all_site_list to add the
new site to the site picklist.
(dialog_cmd): Only save the dialog when exiting the dialog.
* res.rc (IDD_SITE): Make IDC_URL_LIST a multiple-selection control.
* site.cc (site_list_type): Move to site.h
(site_list): New global, sites chosen by the user.
(all_site_list): New global, all potential sites.
(site_list_type::init): New method, parses a mirror.lst URL string into a
site_list_type object.
(site_list_type::site_list_type): New method.
(check_if_enable_next): Examine the control, not a local variable.
(load_dialog): Select all the user chosen sites by default.
(save_dialog): Adjust for multiple selection semantics.
(save_site_url): Save all user chosen sites.
(dialog_cmd): Don't save the dialog when the listbox recieves a message -
thats not needed.
Remove obsolete other_url reference.
(dialog_proc): Use all_site_list instead of site_list.
(site_sort): Remove.
(get_site_list): Remove malloc use - use list template instead.
Move site_list_type initialisation to site_list_type::init().
(get_initial_list_idx): Renamed to ...
(get_saved_sites): this. Also read in multiple sites to the site_list.
(do_site): Use all_site_list not site_list.
Log all chosen sites.
* site.h: New file, defines site related class, functions and variables.
* state.h: Add comment about use of state.h
(mirror_site): Remove.
(other_url): Remove.
(MIRROR_SITE): Remove.
* version.cc: New file, for version-handling and related functions.
Robert Collins [Sun, 2 Dec 2001 03:25:11 +0000 (03:25 +0000)]
2001-12-02 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in: Add filemanip.o to setup.
* archive.cc (archive::extract_file): Use new io_stream method 'copy'.
* archive_tar.h (archive_tar_file): Implement get_size virtual.
(archive_tar): Ditto.
* choose.cc (set_action): Use [] operator instead of getnth - its more readable.
(paint): Ditto.
(_view::init_headers): Ditto.
(_view::insert_pkg): Ditto.
(set_view_mode): Ditto.
(scan2): Ditto.
(do_choose): Ditto.
(base): Moved to filemanip.cc.
(find_tar_ext): Ditto.
(parse_filename): Ditto.
(_Info::_Info): Remove.
* compress_bz.h (compress_bz): Implement get_size virtual.
* compress_gz.h (compress_gz): Implement get_size virtual.
* cygpackage.cc (cygpackage::destroy): Use array delete for char * objects.
* download.cc (get_file_size): Move to filemanip.cc.
(check_for_cached): Use [] operator instead of getnth - its more readable.
(download_one): Ditto.
* filemanip.cc: New file.
* geturl.cc (init_dialog): Make url a pointer to const as it is not modified.
(get_url_to_membuf): New function - contains get_url_to_string worker code.
(get_url_to_string): Becomes a trivial wrapper to get_url_to_membuf.
* geturl.h: Declare new prototype.
* ini.cc (do_ini): Use get_url_to_membuf and pass ini_init an io_stream.
Tidy up the error code a little.
* ini.h: Remove __cplusplus protection for ini_init.
(_Info): Remove.
* inilex.l: Remove old globals.
(ini_init): Use an io_stream for getting the characters.
(ini_getchar): Ditto.
* iniparse.y: Declare yylex as a C++ function.
(add_correct_version): Use [] operator instead of getnth - its more readable.
* io_stream.cc (io_stream::move_copy): Use the copy method.
(io_stream::copy): New method to simply copy from one stream to another.
* io_stream.h (io_stream): New static method copy, and virtual method get_size.
* io_stream_cygfile.cc (io_stream_cygfile::get_size): Implement this.
* io_stream_cygfile.h (io_stream_cygfile::get_size): Declare this.
* io_stream_file.cc (io_stream_file::get_size): Implement this.
* io_stream_file.h (io_stream_file::get_size): Declare this.
* io_stream_memory.h: Include errno as it's neded to parse the header.
(io_stream_memory::get_size): Implement this.
(io_stream_memory::st_size): Delete this.
* list.h: Change getnth into the [] operator.
* netio.cc (NetIO::NetIO): Change prototype to reflect Purl not being modified.
(NetIO::set_url): Ditto.
(NetIO::open): Ditto.
* netio.h: As for netio.cc.
* nio-file.cc (NetIO_File::NetIO_File): Change prototype to reflect Purl not
being modified.
* nio-file.h: Ditto.
* nio-ftp.cc (NetIO_FTP::NetIO_FTP): Ditto.
* nio-ftp.h (NetIO_FTP::NetIO_FTP): Ditto.
* nio-http.cc (NetIO_HTTP::NetIO_HTTP): Ditto.
* nio-http.h (NetIO_HTTP::NetIO_HTTP): Ditto.
* nio-i5.cc (NetIO_IE5::NetIO_IE5): Ditto.
* nio-i5.h (NetIO_IE5::NetIO_IE5): Ditto.
* package_meta.cc (packagemeta::~packagemeta): Bugfix: use array delete.
* package_source.cc (packagesource::set_canonical): Ditto.
(packagesource::set_cached): Ditto.
* package_source.h (site::~site): Ditto.
* site.cc: Change site_list_type to a class, and search and replace sort_key to
key globally.
Robert Collins [Fri, 30 Nov 2001 12:25:00 +0000 (12:25 +0000)]
2001-11-30 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in (OBJS): Remove category_list - it's not needed.
* README: More wishlist updates.
* category.cc (Category::Category): Initialise new members.
(Categorycmp): New function.
* category.h (Category): New member key for template use.
* category_list.cc: Remove.
* category_list.h: Remove.
(Categorycmp): New function prototype.
* choose.cc: Remove category_list - not needed.
(set_action): Only show the 'source' option when the source is actually
available.
(add_required): Fix recursion limiter to 5.
(fill_missing_category): Use list access.
(default_trust): Ditto.
(pick_line::paint): Ditto.
(_view::init_headers): Ditto.
(_view::insert_pkg): Ditto.
(_view::insert_category): Ditto.
(_view::click): Ditto.
(set_view_mode): Ditto.
(do_choose): Ditto.
* cygpackage.h: Remove category_list - not needed.
* geturl.cc (get_url_to_string): Fix null byte insertion.
* inipatse.y: Remove category_list - not needed.
(categories): Use list access.
* package_db.cc: Ditto.
* package_db.h: Remove category_list - not needed.
(packagedb): Use the list template for categories.
* package_meta.cc (add_category): Ditto.
* package_meta.h (CategoryPackage): Link to the category as well.
(packagemeta): Use a list of CategoryPackages instead of Categories
for more memory efficient cross-referencing.
Robert Collins [Thu, 29 Nov 2001 09:52:33 +0000 (09:52 +0000)]
2001-11-29 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in (OBJS): Add package_source and rfc1738.
* README: Wishlist update.
* category_list.cc (register_category): Use references.
* category_list.h (CategoryList): Ditto.
* choose.cc (isinstalled): Remove.
(pkgtrustp): New macro.
(set_action): Use packagemeta.
(add_required): Ditto.
(choose_caption): Example package to choose caption, rather than state flags.
(check_existence): Remove.
(set_existence): Remove old code.
(fill_missing_category): Use packagemeta.
(keep_or_skip): Remove.
(default_trust): Use packagemeta and set trust values directly.
(pick_line::set_line): Use packagemeta.
(_view::insert_pkg): Ditto.
(_view::insert_category): Ditto.
(_view::click): Ditto.
(set_view_mode): Ditto. Also remove "exclude" code.
(create_listview): Use packagemeta.
(dialog_cmd): Ditto.
(getpkgbyname): Remove
(scan2): Use packagemeta. Temporarily comment out the holefinding code.
(read_installed_db): Remove.
(package_sort): Use packagemeta.
(do_choose): Use packagemeta. Don't sort the packages - the db does that.
* choose.h: Use packagemeta.
* cygpackage.cc (cygpackage::cygpackage): Initialise all variables.
(cygpackage::cygpackage): Ditto.
(cygpackage::set_canonical_version): Copy the passed string.
(cygpackage::~cygpackage): Move cleanup code to destroy().
(cygpackage::destroy): New function.
(cygpackage::getfirstfile): Use a separate buffer.
(cygpackage::getnextfile): Ditto.
(cygpackage::Canonical_version): New function.
(cygpackage::set_sdesc): Ditto.
(cygpackage::set_ldesc): Ditto.
* cygpackage.h (cygpackage::Canonical_version): New method.
(cygpackage::set_sdesc): New method.
(cygpackage::set_ldesc): New method.
(cygpackage::SDesc): New method.
(cygpackage::LDesc): New method.
(cygpackage::set_canonical_version): New method.
* desktop.cc: Include packagedb headers.
(make_password_group): Use packagemeta.
* download.cc: Include packagedb headers.
(check_for_cached): New method to find any cached file and fill out the database
info.
(download_one): Take a packagesource, support multiple mirrors.
(do_download): Use packagemeta.
* from cwd.cc: Include packagedb headers.
(found_file): Use packagemeta.
* ini.cc (do_ini): Beginning of multiple-mirror support.
* ini.h (CategoryPackage): Remove.
(Dependency): Remove.
(Package): Remove.
(new_package,getpkgbyname,getpackagecategorybyname,add_category): Remove.
* inilex.l: Support multiple mirrors.
* iniparse.y: Include packagedb headers.
(parser): Use packagemeta.
(new_package): Remove.
(add_correct_version): New function.
(new_requirement): Remove.
(add_category): Remove.
* install.cc (uninstall_one): Use packagemeta.
(install_one_source): New function.
(install_one): Use packagemeta.
(do_install): Use packagemeta.
* io_stream.cc (io_stream::move): Bugfix on move/copy case.
* io_stream_cygfile.cc (io-stream_cygfile::set_mtime): Do not reopen the file
after setting the mtime, it makes no sense, and results in 0 length files.
* io_stream_file.cc (io-stream_file::set_mtime): Ditto.
* list.h: New file, template class for a form of list.
* package_db.cc (packagedb::registerpackage): New function.
* package_db.h (packagedb::npackages ()): New method.
* package_meta.cc (packagemeta::add_version): Use list template.
(packagemeta::set_installed): Ditto.
(packagemeta::add_category): New method.
* package_meta.h: Include necessary headers to parse the class.
(CategoryPackage): New class.
(packagemeta): Initialise all members.
(packagemeta::SDesc): New method.
(packagemeta::Categories): New method.
(packagemeta::add_category): Ditto.
(packagemeta::versions): Change to be a list instance.
* package_source.cc (packagesource::set_canonical): New method.
(packagesource::set_cached): New method.
* package_source.h: Include necessary headers to parse the class.
(site): New class.
(packagesource::packagesource): Initialize all members.
(packagesource): Make this class non-abstract.
* package_version.cc (packageversion::packageversion): New method.
* package_version.h (Dependency): New class.
(packageversion::Canonical_vesion): New method.
(packageversion::SDesc): New method.
(packageversion::LDesc): New method.
(packageversion::new_requirement): Ditto.
(packageversion::srcpicked, binpicked): What to install.
(packageversion::src, bin): Installation source data.
* rfc1738.cc: New file. Escapes special characters in URL's.
* rfc1738.h: Ditto.
Robert Collins [Wed, 28 Nov 2001 12:05:27 +0000 (12:05 +0000)]
2001-11-26 Gary R. Van Sickle <g.r.vansickle@worldnet.att.net>
* nio-http.cc (NetIO_HTTP::NetIO_HTTP): Stop header parsing when
SimpleSocket::gets() returns a zero-length string, so that we
don't end up eating the entire stream thinking it's all header info.
Robert Collins [Thu, 22 Nov 2001 23:53:15 +0000 (23:53 +0000)]
2001-11-23 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in (OBJS): Add package_version.
* ategory.cc (Category::Category): Update constructors.
* category_list.cc (CategoryList::register_category): Insert correctly.
* choose.cc: Include package_version.h, not package.h.
* cygpackage.cc: Ditto.
(cygpackage::uninstall): New method.
* cygpackage.h (cygpackage): Rename genericpackage to packageversion.
New method uninstall.
* hash.cc (add, has, enumerate): Change prototype to be accurate.
* hash.h (hash): Change prototypes to be accurate.
* ini.h (_Info): New parameterless constructor.
(CategoryPackage): New constructor.
(Package): Ditto.
* install.cc: Don't include unneeded headers.
Include package database headers.
(hash::add_subdirs): Remove.
(uninstall_one): Use packagemeta->uninstall to perform the uninstallation.
Don't uninstall source packages.
(do_install): Just can uninstall_one once as we ignore source packages now.
Don't copy the installed.old database accross, instead iterate through the
packagedb packages list and write the isntalled packages out.
* package_db.cc: Include package_version.h, not package.h.
(packagedb::packagedb): Never let db be undefined.
Record the installation filename, so we can reconstruct installed.db.
(packagedb::addpackage): Insert packages in alpha sorted order.
(packagedb::categories): Initialise correctly.
* package_meta.cc: Include win32 and mount headers as a workaround to
current io_stream limitations. Include a TODO about that.
(standard_dirs): New, from install.cc.
(hash::add_subdirs): New, from install.cc.
(packagemeta::set_installed): Rename genericpackage to packageversion.
(packagemeta::uninstall): New method.
* package_meta.h: Rename genericpackage to packageversion.
(packagemeta): Update constructor.
(add_version, set_installed): Rename genericpackage to packageversion.
(uninstall): New method.
(installed_from): New member.
* package_source.cc: New file.
* package_source.h: New file.
* package_version.cc: New file.
* package_version.h: New file.
* package.cc: Removed.
* package.h: Removed.
Robert Collins [Wed, 21 Nov 2001 11:14:09 +0000 (11:14 +0000)]
2001-11-21 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in (OBJS): Add category.o and category_list.o.
* category.h: New file.
* category.cc: New file.
* category_list.h: New file.
* category_list.cc: New file.
* choose.cc: Include category headers.
(fill_missing_category): Use package_db to access global categories.
(_view::insert_pkg): Ditto.
(_view::insert_category): Ditto.
(set_view_mode): Ditto.
(getcategorybyname): Remove.
* cygpackage.h: Include category_list.h to parse this correctly.
(cygpackage): New virtual &Categories.
* ini.h (_CategoryPackage): More C to C++ conversion.
(Category): Remove.
(getcategorybyname): Remove.
(register_category): Remove.
* iniparse.y: Include package db and category headers.
(categories): Use package_db to access global categories.
(category): Remove.
(ncategories): Remove.
(register_category): Remove.
* package.h: New virtual &Categories.
* package_db.cc (packagedb::packagedb): Don't read the installed db twice.
(packagedb::categories): Declare.
* package_db.h (packagedb): New member categories for global categories list.
Robert Collins [Wed, 21 Nov 2001 03:44:34 +0000 (03:44 +0000)]
2001-11-21 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in (OBJS): Add package abstraction objects.
* choose.cc: Include package abstraction headers.
(read_installed_db): Use packagedb class and ignore installed sources.
* cygpackage.cc: New file.
* cygpackage.h: New file.
* filemanip.h (get_file_size): Use unixy types.
* package.h: New file.
* package.cc: New file.
* package_db.cc: New file.
* package_db.h: New file.
* package_meta.cc: New file.
* package_meta.h:
Robert Collins [Wed, 14 Nov 2001 09:21:59 +0000 (09:21 +0000)]
2001-11-14 Robert Collins <rbtcollins@hotmail.com>
* Makefile.in (OBJS): Include io_stream_memory in setup.exe.
* archive_tar.cc (archive_tar::write): New prototype.
(archive_tar::seek): New method.
* archive.h (archive_tar_file): Update write() and add seek().
(archive_tar): Ditto.
* archive_tar_file.cc (archive_tar_file::write): New prototype.
(archive_tar_file::seek): New method.
* compress_bz.cc (compress_bz::write): New prototype.
(compress_bz::seek): New function.
* compress_bz.h (compress_bz): Update write() and add seek().
* compress_gz.cc (compress_gz::write): New prototype.
(compress_gz::seek): New function.
* compress_gz.h (compress_gz): Update write() and add seek().
* geturl.cc: Include io_stream headers.
(GUBuf): Remove.
(get_url_to_string): Use a io_stream_memory buffer instead of GUBuf.
* io_stream.h (io_stream_seek_t): New enum.
(io_stream): Update write() and add seek().
* io_stream_cygfile.cc (io_stream_cygfile::write): New prototype.
(io_stream_cygfile::seek): New function.
* io_stream_cygfile.h (io_stream_cygfile): Update write() and add seek().
* io_stream_file.cc (io_stream_file::write): New prototype.
(io_stream_file::seek): New function.
* io_stream_file.h (io_stream_file): Update write() and add seek().
Robert Collins [Wed, 14 Nov 2001 00:11:35 +0000 (00:11 +0000)]
2001-11-13 Brian Keener <bkeener@thesoftwaresource.com>
* localdir.cc: Add headers unistd.h and port.h.
(save_local_dir): Expand search logic to include local directory for
location of file last-cache.
(dialog_cmd): Skip IDD_ROOT when downloading and use Back button.
(do_local_dir): Expand search logic to include local directory for file
last-cache.
* res.rc (IDD_CHOOSE_DIALOG): Add hotkey to View button.
* Source.cc (dialog_cmd): Skip IDD_ROOT if select Download from
Internet.
(do_source): Default to Install from Internet on first entry or
previous selection if backing up from IDD_ROOT or IDD_LOCAL_DIR.
Robert Collins [Fri, 9 Nov 2001 14:12:00 +0000 (14:12 +0000)]
2001-11-10 Robert Collins <rbtcollins@hotmail.com>
* ini.h (actions): Remove - transferred to choose.h.
(views): Ditto.
* choose.h: Protect class's from "C" compilers.
(actions): New enum, from ini.h. This may not be the 'right' place
but that place doesn't exist yet.
(_views): New enum, from ini.h.
* choose.cc (set_action): Handle installed packages with a version not in
setup.ini.
(choose_caption): Ditto.
* iniparse.y: Rearrange header order to handle new ini.h.
Robert Collins [Fri, 9 Nov 2001 13:03:02 +0000 (13:03 +0000)]
2001-11-08 Pavel Tsekov <ptsekov@syntrex.com>
* simpsock.h (SimpleSocket::invalidate): Declare new method.
* simpsock.cc (SimpleSocket::invalidate): Implement new method.
(SimpleSocket::SimpleSocket): Initialize buf to zero. Do not allocate
memory for buf in the constructor.
(SimpleSocket::~SimpleSocket): Use SimpleSocket::invalidate().
(SimpleSocket::printf): Use SimpleSocket::write() instead of send().
(SimpleSocket::write): Check object consistency - return -1 on error.
invalidate() the object on socket write error.
(SimpleSocket::fill): Check object consistency - return -1 on error.
invalidate() the object if socket read error is encountered and there
is no more data available in the internal read buffer.
Allocate memory for the internal read buffer.
(SimpleSocket::gets): Return zero (NULL pointer) if error is encountered
during fill() and no more data is available in the internal read buffer.
(SimpleSocket::read): Check object consistency - return -1 on error.
invalidate() the object if socket read error is encountered.
* nio-ftp.cc (NetIO_FTP:NetIO_FTP): Allow 125 as valid response code to
the RETR command (fix for MS IIS ftp server 5 - possibly others too).
(NetIO_FTP::ok): Check if the SimpleSocket object is ok().
(NetIO_FTP::read): Use NetIO_FTP::ok().
* nio-http.cc: Check for valid return value of SimpleSocket::gets().
(NetIO_HTTP::ok): Check if the SimpleSocket object is ok().
Robert Collins [Mon, 5 Nov 2001 13:00:36 +0000 (13:00 +0000)]
2001-11-06 Pavel Tsekov <ptsekov@syntrex.com>
* fromcwd.cc (found_file): Free() memory containing the version and
filepath information for a given package, before replacing the pointers which
reference this memory.
Robert Collins [Fri, 2 Nov 2001 05:00:34 +0000 (05:00 +0000)]
2001-11-02 Robert Collins <rbtcollins@hotmail.com>
* choose.cc: Ran indent.
(set_action): When the requested trust level is missing and the level was not
user requested, set the action to ACTION_SAME_CURR.
Robert Collins [Fri, 2 Nov 2001 00:50:19 +0000 (00:50 +0000)]
2001-11-02 Pavel Tsekov <ptsekov@syntrex.com>
* geturl.cc (is_showing): Remove.
(is_local_install): New static variable. Controls whether the
progress dialog and the supporting thread will be created.
(dialog_proc): Return TRUE to WM_INITDIALOG as specified by the WIN32 API.
(init_dialog): Remove usage of SetForegroundWindow and is_showing.
This prevents the progress dialog to gain control over the
application and fixes the "setup.exe going to background" problem.
(progress): Use is_local_install.
(get_url_to_string): Set is_local_install.
(dismiss_url_status_dialog): Use is_local_install.
* install.cc (dialog_proc): Return TRUE as specified in WIN32 API.
(init_dialog): Remove usage of SetForegroundWindow.
This prevents the progress dialog to gain control over the
application and fixes the "setup.exe going to background" problem.
Robert Collins [Fri, 2 Nov 2001 00:38:26 +0000 (00:38 +0000)]
2001-11-02 Robert Collins <rbtcollins@hotmail.com>
* choose.cc (list_click): Change r to row for clarity.
When we shrink the list below 1 page, scroll to the top of the list.
(_view::click): Return the actual change for contractions.
(dialog_proc): Return TRUE to WM_INITDIALOG as specified by the Win32 API.
Robert Collins [Thu, 1 Nov 2001 13:22:46 +0000 (13:22 +0000)]
2001-11-02 Robert Collins <rbtcollins@hotmail.com>
* choose.cc (dialog_cmd): Swap cygwin root selection and local dir selection order.
* localdir.cc: Ran indent.
(get_root_dir_now): New function.
(save_local_dir): New function.
(dialog_cmd): Use it and swap cygwin root selection and local dir selection order.
(do_local_dir): If there is a saved local dir, read it in.
* net.cc (dialog_cmd): Swap cygwin root selection and local dir selection order.
* root.cc (dialog_cmd): Ditto.
* source.cc (dialog_cmd): Ditto.
Robert Collins [Wed, 31 Oct 2001 13:15:06 +0000 (13:15 +0000)]
2001-11-01 Matt Hargett <matt@use.net>
* geturl.cc (progress): Change int to unsigned int to eliminate
lint warnings.
* (get_url_to_string): Check for NULL pointer.
* mount.cc (find2): Use free instead of delete for malloc'd
memory.
* nio-http.cc (NetIO_HTTP::NetIO_HTTP): Fix memory leak.
Robert Collins [Wed, 31 Oct 2001 13:00:11 +0000 (13:00 +0000)]
2001-10-31 Robert Collins <rbtcollins@hotmail.com>
* choose.cc(_view::insert_under): Handle linen > nlines and lines[linen] with neither
a package nor a category. The lines[linen] bug was reported by Matt (matt@usa.net).
(read_installed_db): Bugfix for testing whether a package has a source tarball.
Reported by Matt (matt@usa.net).
* geturl.cc(dialog): Rename gw_dialog to local_gw_dialog to avoid programmer
confusion and lint errors. Reported by Matt (matt@usa.net).
Robert Collins [Wed, 31 Oct 2001 09:39:13 +0000 (09:39 +0000)]
2001-10-31 Robert Collins <rbtcollins@hotmail.com>
* argv.cc: New file, converts arguments for -mwindows programs. (Simplified derivation
from dcrt0.cc.)
* argv.h: New file.
* Makefile,in: Add argv.o and mingw_getopt.o to setup.exe object list.
Add mingw_getopt.o build rule.
* main.cc(WinMain): Initialise argv and argc for use by getopt.
* desktop.cc (make_passwd_group): Move file creation earlier in the process to
ensure that passwd-grp.bat reflects desired operation.
* postinstall.cc (each): Remove "*.done" file else rename will fail.
Copyrights.
* 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".