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
DJ Delorie [Thu, 24 Aug 2000 21:50:14 +0000 (21:50 +0000)]
* fromcwd.cc (canonicalize_version): use multiple buffers so that multiple
calls won't use the same buffer.
* choose.cc (create_listview): don't default to full list if no changes
(base): return computed value, not temporary :-(
(do_choose): don't use installed.db if we're only downloading.
DJ Delorie [Thu, 24 Aug 2000 02:48:14 +0000 (02:48 +0000)]
* nio-ie5.cc (NetIO_IE5): Fix authentication logic
* nio-ie5.h (flush_io): new
* netio.cc (load_dialog): note when we're initializing the dialog
box, and ignore changes to the edit fields then.
DJ Delorie [Tue, 22 Aug 2000 00:45:45 +0000 (00:45 +0000)]
* README: Update
* fromcwd.cc (found_file): don't remember the canonicalized version
* choose.cc (paint): print "nothing to do" message when list is empty.
(build_labels): Use version "0.0" if no version is available.
(create_listview): default to full list if nothing to install/update.
(base): new, returns basename of file
(read_installed_db): compare base names, not full paths
DJ Delorie [Wed, 19 Jul 2000 01:01:04 +0000 (01:01 +0000)]
* autoload.c: new, autoload dlls that might not be available.
* Makefile.in (OBJS): add autoload.o
* res.rc: rewrite root options (text/binary, system/user) to be
more obvious.
DJ Delorie [Tue, 18 Jul 2000 22:48:11 +0000 (22:48 +0000)]
* site.cc (get_site_list): trim displayed URL, sort by domain
* net.cc (do_net): make IE5 default to checked, for now
* ini.cc (do_ini): if we can't load setup.ini, go back to the site list.
DJ Delorie [Mon, 17 Jul 2000 19:57:45 +0000 (19:57 +0000)]
* res.rc (IDD_OTHER_URL): reorder to give default focus to entry
* other.cc (dialog_cmd): save download site URL
* site.cc (get_root_dir): new
(save_mirror_site): new
(dialog_cmd): save download site URL
(get_site_list): make list big enough to add prev site
(get_initial_list_idx): new, read last-used URL from file and
append it to site_list
(do_site): call get_initial_list_idx
* concat.cc (concat): avoid segfault when first parm is null
DJ Delorie [Tue, 11 Jul 2000 21:27:08 +0000 (21:27 +0000)]
* desktop.cc: don't set PATH in cygwin.bat, create /etc/passwd
* geturl.cc: change math for percentage to avoid overflow
* install.cc: ditto
* download.cc: post "download complete" message.
* root.cc: pre-fill in defaults if needed, don't start
browse at root_dir unless it's set.
DJ Delorie [Tue, 11 Jul 2000 02:02:28 +0000 (02:02 +0000)]
* Makefile.in: add desktop.o and mklink2.o
* dialog.h: add do_desktop
* install.cc: create standard directories, call do_desktop
* res.rc: add cygwin.ico as a file also
* desktop.cc: new, do shortcuts, batch files, and icons
* mklink2.c: new, for COM
DJ Delorie [Thu, 8 Jun 2000 03:03:16 +0000 (03:03 +0000)]
* cygcalls.c: new, call cygwin1.dll functions directly
* cygcalls.h: header for same
* Makefile.in: add cygcalls.[ch], remove mount/cygpath/umount
exes, fix cinstall.rc dependencies.
* path.c: remove unneeded code
* setup.c: use cygcalls instead of xcreate_process.
uncompress embedded files with zlib
add "-d" for "download only"
add "-h" for help
postpone mount changes until very end
add download progress indicators
pack multi-column listings more
auto-delete temp files
customize banner message according to options
prompt user for text/binary mounts
add warnings about empty setup directory, root installs, etc
DJ Delorie [Wed, 24 May 2000 16:04:36 +0000 (16:04 +0000)]
* tar.c: New file; built-in tar using zlib.
* tar.h: New file; header for same.
* ctar.c: New file; test program for same.
* Makefile.in: add built-in tar, remove tar.exe and gzip.exe
* path.c (pathcat): convert slashes and canonicalize, instead of aborting
* setup.c (tarx): add support for built-in tar
(main): accept unix-style slashes, check root dir for drive letters,
warn about installing in /, make sure cwd is empty for internet installs,
defer mounts to end of install, support built-in tar.
Fix compiler warnings throughout.
* pkg.c (init_pkgs): Make static 'stuff' global_pkgstuff for use in
get_pkg_stuff.
* setup.c: Make 'root' global.
(istargz): Return pointer to "stem" of matched .tar.gz file.
(tarx): Special case cygwin-20000301 to == cygwin-1.1.0.tar.gz. Remove bogus
check_for_installed check.
(recurse_dirs): Add preliminary support for .bat file execution.
(create_uninstall): Eliminate unneeded parameter.
(do_start_menu): Ditto.
(mkmount): Ditto.
(get_pkg_stuff): Ditto. Check for currently installed cygwin by scanning for
the version number. Eliminate unneeded argument to create_uninstall.
(getdownloadsource): Add 'name' to list of names rather than url.
(main): Eliminate unneeded argument in get_pkg_stuff. Eliminate unneeded
argument in mkmount and do_start_menu.
DJ Delorie [Fri, 19 May 2000 00:05:25 +0000 (00:05 +0000)]
* setup.c (optionprompt): allow multi-column, clean up message
about more options, be more robust about user input.
(getdownloadsource): make the mirror URL a macro.
(main): do mounts after done prompting user.
* setup.c (cleanup): Inverse order of deletion stands a better chance of
deleting cygpath.exe. Still seems to suffer from occasional races, though.
(cleanup_on_signal): Perform convoluted dance to accomodate win95 and w2k.
(output_file): Defend against an unlikely handle leak.
(main): Don't set up signal handling until we have something special to do.
* path.c (kill_cygpath): Delete function.
(exit_cygpath): Make more defensive so that it can be called at any time.
(cygpath_pipe): Don't set up signal here. Do it in main().
* setup.c (istargz): New function.
(recurse_dirs): Look for *.gz pattern rather than *tar.gz since *tar.gz
inexplicably fails on samba mounted partitions. Use istargz to match tar.gz
tail.
(processdirlisting) Use istargz to match tar.gz tail.
(cleanup): Renamed from filedel.
(cleanup_on_signal): New function. Called on CTRL-C.
(main): Record handle of main thread so that it can be suspended when CTRL-C
occurs. Set up cleanup_on_signal signal handler.
* path.c (exit_cygpath): Wait for subprocess to exit before returning.
(cygpath_pipe): Don't call exit_cygpath. Let main atexit routine do that.
* pkg.c (init_pkgs): Accept root argument. Make registry key "cygwin
root"-specific.
* setup.c (filedel): Call exit_cygpath here so that we can be assured that
cygpath subprocess has died. This allows us to delete cygpath.exe and
cygwin1.dll.
(optionprompt): Initialize response to -1 so that second screen of mirrors will
appear.
(get_pkg_stuff): Don't attempt to use HKCLU. Pass root to init_pkgs.
* setup.h: Reflect init_pkgs prototype change.
* pkg.c (init_pkgs): Accept an argument to control what root registry key
should be used.
* setup.c (get_pkg_stuff): Use HKCLU registry key if default fails.
* setup.h: Reflect init_pkgs prototype change.
* pkg.c: New file.
* error.c (winerror): Respond to gcc warning.
* path.c (cygpath_pipe): Ditto.
* setup.c (filedel): Call sa_cleanup on deleteme.
(create_shortcut): Coerce argument to eliminate compiler warning.
(tarx): Use installed version of cygwin1.dll, overriding tar file name.
(refmatches): New function. Tests if ref is contained in a list of packages to
install.
(filematches): New function. Tests if filename matches one of a list of
packages to install.
(recurse_dirs): Accept list of packages to install. Generalize tar.gz test to
accomodate _tar.gz.
(prompt): Ensure that stdout is flushed prior to asking for input.
(findhref): Initialize variables to quiet a compiler warning.
(processdirlisting): Accept list of packages to install. Special case cygwin
tar file version number.
(downloaddir): Accept list of packages to install.
(downloadfrom): Ditto.
(create_uninstall): Eliminate unneeded variables. Quote arguments to regtool.
(do_start_menu): Don't create uninstall bat file if updating or user specified
a list of packages.
(mkmount): Eliminate unneeded variables.
(get_pkg_stuff): New function. Checks for previous unversioned installation.
(main): Accept -u and -f options and package names on the command line. Use
get_pkg_stuff to initialize package information. Umount /etc. Call
recurse_dirs and downloadfrom with list of package to install. Ensure that all
/usr/local directories are created. Output installation time to setup.log.
* setup.h: Add some prototypes.
* xsystem.c (xcreate_process): Eliminate unneeded variable.
* setup.c (optionprompt): Don't overlap display of already seen options on next
page.
(geturl): Print name of site which we're connecting to rather than "ftp site".
(processdirlisting): Avoid URLs that contain a /. or ./ . Is this test too
simplistic?
(do_start_menu): Use pathcat to build path to <root>\bin to avoid problems when
user chooses x:\ as their root.
(main): For now, default to "non-update" mode. Allow -u option to signify an
update.
* pkg.c: New file.
* setup.c (tarx): Skip already installed or older packages. Report when a
package has been updated.
(processdirlisting): Skip already installed or older packages.
(main): Detect -f option for forced installation. Initialize pkg stuff if
appropriate.
* setup.h: Add pkg definitions.
* setup.c (findhref): Return NULL on empty string. Eat any trailing
";something".
(processdirlisting): Attempt to limit recursively processing the same
directory.
* setup.c (filedel): New function.
(output_file): Keep track of files extracted from setup.exe for subsequent
deletion.
(tarx): Close process handle of child tar process or suffer handle leak.
(getdownloadsource): Close mirror file so that it can be unlinked.
(processdirlisting): Return total number of files extracted.
(main): Initialize array of files to delete. Ensure that files are closed on
exit. Make the directory that setup.exe is started from == the directory where
temporary files are placed. Issue an error if no files were found to download.
* xsystem.c (xcreate_process): Close the thread handle. Close the process
handle if we waited for it to exit.
* setup.c (findhref): Change method for scanning for href= to choose the last
one on the line. This is still not foolproof and probably will need to be
changed eventually. Don't abort if no "size" field is evident.
(processdirlisting): Fix boolean algebra.
* setup.c (findhref): Decode file size, when appropriate.
(needfile): New function. Returns 1 when file should be downloaded.
(processdirlisting): Always download if file size does not match. Prompt when
download fails for some reason.
(getdownloadsource): Accomodate findhref argument changes.
Throughout, use global session handle rather than reinitializing for each
connect. Don't pass session as an argument to setup.c functions.
* setup.c (geturl): Only issue "Connecting to.." message when using http or
first time for ftp since subsequent connections will be fast.
(processdirlisting): Allocate space for "N" when user has specified "N"ever
option so that it can be subsequently freed.
(main): Abort if we can't get the list of mirrors.
* Makefile.in: Add umount to list of files to include in setup.exe.
* setup.c (xumount): New function for unmounting directories.
(main): Unmount /usr.
(mkmount): Unmount "unix directory" before trying to figure out where to create
the directory.
* setup.c (mkmount): Use xcreate_process to start mount process, avoiding the
shell.
(main): Don't do buffering on stdout or prompts won't be displayed correctly if
running in a cygwin shell with CYGWIN=tty.
* setup.c (geturl): Use alternative method for finding filename part of a URL.
(processdirlisting): Accomodate strange output from non-MS ftp proxy.
(downloaddir): Unlink file containing dir listing.
(downloadfrom): Ditto.
Use "warning" function, where appropriate to output warnings.
* setup.c (warning): New function -- outputs warning to console and log file.
(tarx): Fix index used to reset file protection.
(main): Open the log file earlier so that more stuff can be sent to it.
* Makefile.in: Eliminate duplicate -nostdinc from CFLAGS.
* setup.c (create_uninstall): Create the uninstall .bat file in the "root" so
that we can remove the /bin directory. Add bin\cygwin.bat to list of files to
be deleted. Fix directory detection for determining when to use 'rmdir'.
(do_start_menu): Add /usr/local/bin to the path.
(main): Add slop to files.array allocation so that we don't have to worry about
reallocating the array when it grows too large when doing some trivial
"pushes". Add /tmp and /usr/local/{bin,lib} to list of files.
* path.c (kill_cygpath): New cleanup function.
(exit_cygpath): New cleanup function.
(cygpath_pipe): New function. Sets up cygpath in the background for
translating filenames.
(pathcvt): Use background cygpath for file translation.
* setup.c (tarx): New function. Called to extract tar files, capture logging
output, and translate it to Windows format.
(recurse_dirs): Use 'tarx' function to extract files.
(create_uninstall): Use file list built up by tarx rather than reading the log
file.
(mkmount): Add ability to mount root.
(main): Track elapsed install time. Mount root.
* starry.h: Add index field to strarry for tracking of tarx's usage of this
structure.
* xsystem.c (xcreate_process): Return proces handle when not waiting.
* path.c: New file.
(pathfp): New function. Preliminary work for new -f cygpath functionality.
* Makefile.in: Add new file.
(pathcvt): Move to new file.
(dtoupath): Ditto.
(utodpath): Ditto.
(pathcat): Ditto.
* setup.c (processdirlisting): Always open file in text mode.
(create_uninstall): Ditto.
(getdownloadsource): Ditto.
(main): Ditto.
* xsystem.c: New file.
* Makefile.in: Accomodate new file.
* setup.c (xsystem): Move to new file.
(recurse_dirs): Accept handle to output log file. Don't use ">" redirection to
trap tar output. Use supplied handle instead.
(create_uninstall): Accept FILE pointer to opened log file. Don't unlink log
file here.
(do_start_menu): Accept FILE pointer to pass to create_uninstall.
(main): Open log file here and pass it to various functions. Unlink when done.
Change occurrences of .usr.bin to .bin throughout.
* setup.c (geturl): Increase number of retries to 20. Let user know what's
going on during long connects.
(processdirlisting): Accept "A"lways and "N"ever as update options.
(create_uninstall): Load cygwin1.dll from the current directory rather than
\bin.
(main): Add some expository text.
* Makefile.in: Change method for compressing cygwin1.dll to avoid creating a
cygwin1.dll in the current directory. Ensure the addition of -nostdinc to
MINGW_CFLAGS.