Ok, I've (deliberately) broken HEAD. Or to be a little more precise, it's now got a version of setup in it that has the core code required to parse and download from multiple independent mirrors. The gui side isn't done yet, and there are a number of things I've just roughly #if 0'd for the moment.
If one of those bites you, please feel free to fix it ;]. I will get them all reinstated, but I really wanted this core code in so that folk would patching something current. The main visible changes are that the packages and categories global variables are gone. Instead there is a class packagedb that maintains a complete list of all packages, installed and not installed, with sources from an arbitrary number of mirror sites (listed per package). The things I've disabled are fairly minor - scanning for -src packages in a local dir with no setup.ini for example). Also changed in this version is the spin control for choosing packages. It now goes of the package's metadata selection to determine the state, rather than an arbitrary number of predefined states. The most obvious change of this is that when installing from a local dir with no setup.ini, ALL the previous versions should now be visible. (ie if you have 20 copies of cygwin, knock yourself out). I've reinstated the prev/curr/test buttons to their former power. I don't like the way they are now either though :}. (clicking on test uninstalls *everything* because we have no test packages :}.) see set_action in choose.cc for more info, It should make sense (theres ~ 1page of explanation :}) And before anyone comments, the multiple mirror code will honour locally cached files from previous setup.exe's, even though it downloads new ones differently. Rob