? .deps
? .in
? .libs
? Makefile
? build
? category.cc
? category.h
? cmdline_base.patch
? config.cache
? config.log
? config.status
? confstatKC4332
? confstatOu3964
? cvsup.log
? cygwin1_06282004.dll
? inilex.cc
? iniparse.cc
? iniparse.h
? libtool
? setup.log
? setup.log.full
? setup.patch
? setup_version.c
? source.cc.mod
? stringopt.log
? bz2lib/.deps
? bz2lib/config.log
? bz2lib/config.status
? csu_util/.deps
? csu_util/.dirstamp
? libgetopt++/.deps
? libgetopt++/.libs
? libgetopt++/Makefile
? libgetopt++/config.log
? libgetopt++/config.status
? libgetopt++/cvsup.log
? libgetopt++/libgetopt++.la
? libgetopt++/libtool
? libgetopt++/include/autoconf.h
? libgetopt++/include/stamp-h1
? libgetopt++/src/.deps
? libgetopt++/src/.dirstamp
? libgetopt++/src/BoolOption.lo
? libgetopt++/src/GetOption.lo
? libgetopt++/src/Option.lo
? libgetopt++/src/OptionSet.lo
? libgetopt++/src/StringOption.lo
? libgetopt++/tests/.deps
? libmd5-rfc/.deps
? libmd5-rfc/.dirstamp
? tests/.deps
? tests/Makefile
? zlib/.deps
? zlib/config.log
? zlib/config.status
Index: package_db.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/package_db.cc,v
retrieving revision 2.35
diff -w -u -p -r2.35 package_db.cc
--- package_db.cc	30 Jul 2007 22:55:49 -0000	2.35
+++ package_db.cc	9 Aug 2007 17:34:22 -0000
@@ -35,6 +35,8 @@ static const char *cvsid =
 
 #include "filemanip.h"
 
+#include "getopt++/StringOption.h"
+
 #include "package_version.h"
 #include "cygpackage.h"
 #include "package_db.h"
@@ -44,6 +46,8 @@ static const char *cvsid =
 
 using namespace std;
 
+static StringOption PackageOption ("", 'p', "package", "Packages to include");
+
 /* static members */
 
 packagedb::packagedb ()
@@ -397,9 +401,30 @@ packagedb::setExistence ()
 #endif
 }
 
+static bool
+manuallyAddedToBase(packagemeta* pkg)
+{  
+  string packages_option = PackageOption;
+  string tname;
+  /* Split the packages listed in the option up */
+  string::size_type loc = packages_option.find( ",", 0 );
+  bool breturn=false;
+  while ( loc != string::npos ) {
+    tname=packages_option.substr(0,loc);
+    packages_option=packages_option.substr(loc+1);
+    breturn = breturn || (pkg->name.compare(tname)==0);
+    loc = packages_option.find( ",", 0 );
+  }
+  /* At this point, no "," exists */
+  breturn=breturn || (pkg->name.compare(packages_option)==0);
+  return breturn;
+}
+
 void
 packagedb::fillMissingCategory ()
 {
+  for_each(packages.begin(), packages.end(), visit_if(mem_fun(&packagemeta::addToCategoryBase),manuallyAddedToBase));
+
   for_each(packages.begin(), packages.end(), visit_if(mem_fun(&packagemeta::setDefaultCategories), mem_fun(&packagemeta::hasNoCategories)));
   for_each(packages.begin(), packages.end(), mem_fun(&packagemeta::addToCategoryAll));
 }
Index: package_meta.cc
===================================================================
RCS file: /cvs/cygwin-apps/setup/package_meta.cc,v
retrieving revision 2.52
diff -w -u -p -r2.52 package_meta.cc
--- package_meta.cc	17 Apr 2006 16:13:17 -0000	2.52
+++ package_meta.cc	9 Aug 2007 17:34:25 -0000
@@ -664,3 +664,9 @@ packagemeta::addToCategoryAll()
 {
   add_category ("All");
 }
+
+void
+packagemeta::addToCategoryBase()
+{
+  add_category ("Base");
+}
Index: package_meta.h
===================================================================
RCS file: /cvs/cygwin-apps/setup/package_meta.h,v
retrieving revision 2.36
diff -w -u -p -r2.36 package_meta.h
--- package_meta.h	17 Apr 2006 16:13:17 -0000	2.36
+++ package_meta.h	9 Aug 2007 17:34:25 -0000
@@ -56,6 +56,7 @@ public:
   bool hasNoCategories() const;
   void setDefaultCategories();
   void addToCategoryAll();
+  void addToCategoryBase();
 
   class _actions
   {
