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.
* Makefile.in: Eliminate traces of cygwinisms. Don't link with libmsvcrt.a.
It's unneeded. Build .rc file on the fly from various sources.
* configure.in: Locate correct objcopy.
* configure: Regenerate.
* configure.in: New file.
* configure: New file.
* zlib/Makefile.am: New file.
* zlib/configure.in: New file.
* zlib/aclocal.m4: New file.
* zlib/acinclude.m4: New file.
* zlib/configure: Regenerate from configure.in.
* zlib/Makefile.in: Regenerate from Makefile.am