[Aptitude-devel] r3204 - in branches/aptitude-0.3/aptitude: . src/cmdline

Daniel Burrows dburrows@costa.debian.org
Sat, 30 Apr 2005 19:08:37 +0000


Author: dburrows
Date: Sat Apr 30 19:08:30 2005
New Revision: 3204

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/cmdline/cmdline_action.cc
   branches/aptitude-0.3/aptitude/src/cmdline/cmdline_action.h
   branches/aptitude-0.3/aptitude/src/cmdline/cmdline_do_action.cc
   branches/aptitude-0.3/aptitude/src/cmdline/cmdline_prompt.cc
   branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.cc
   branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.h
Log:
Whee, support package state changes at the resolver prompt.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Sat Apr 30 19:08:30 2005
@@ -1,5 +1,11 @@
 2005-04-30  Daniel Burrows  <dburrows@debian.org>
 
+	* src/cmdline/cmdline_action.cc, src/cmdline/cmdline_action.h, src/cmdline/cmdline_do_action.cc, src/cmdline/cmdline_prompt.cc, src/cmdline/cmdline_resolver.cc, src/cmdline/cmdline_resolver.h:
+
+	  Add support for modifying package states from the resolver
+	  prompt; in the process, moved the routine responsible for doing
+	  this from cmdline_prompt.cc to cmdline_action.cc.
+
 	* src/cmdline/cmdline_resolver.cc:
 
 	  Fix some of the formatting problems with the resolver help text.

Modified: branches/aptitude-0.3/aptitude/src/cmdline/cmdline_action.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/cmdline/cmdline_action.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/cmdline/cmdline_action.cc	Sat Apr 30 19:08:30 2005
@@ -341,3 +341,79 @@
 
   return rval;
 }
+
+void cmdline_parse_action(string s,
+			  pkgset &to_install, pkgset &to_hold,
+			  pkgset &to_remove, pkgset &to_purge,
+			  int verbose)
+{
+  string::size_type loc=0;
+
+  while(loc<s.size() && isspace(s[loc]))
+    ++loc;
+
+  if(loc==s.size())
+    return;
+
+  cmdline_pkgaction_type action;
+
+  switch(s[loc])
+    {
+    case '_':
+      action=cmdline_purge;
+      break;
+    case '-':
+      action=cmdline_remove;
+      break;
+    case '=':
+      action=cmdline_hold;
+      break;
+    case '+':
+      action=cmdline_install;
+      break;
+    default:
+      printf(_("Bad action character '%c'\n"), s[0]);
+      return;
+    }
+
+  ++loc;
+
+  while(loc<s.size())
+    {
+      while(loc<s.size() && isspace(s[loc]))
+	++loc;
+
+      if(loc<s.size())
+	switch(s[loc])
+	  {
+	  case '_':
+	    action=cmdline_purge;
+	    ++loc;
+	    break;
+	  case '-':
+	    action=cmdline_remove;
+	    ++loc;
+	    break;
+	  case '=':
+	    action=cmdline_hold;
+	    ++loc;
+	    break;
+	  case '+':
+	    action=cmdline_install;
+	    ++loc;
+	    break;
+	  default:
+	    {
+	      string pkgname;
+	      while(loc<s.size() && !isspace(s[loc]))
+		pkgname+=s[loc++];
+
+	      if(!cmdline_applyaction(pkgname, action,
+				      to_install, to_hold,
+				      to_remove, to_purge,
+				      verbose))
+		return;
+	    }
+	  }
+    }
+}

Modified: branches/aptitude-0.3/aptitude/src/cmdline/cmdline_action.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/cmdline/cmdline_action.h	(original)
+++ branches/aptitude-0.3/aptitude/src/cmdline/cmdline_action.h	Sat Apr 30 19:08:30 2005
@@ -21,4 +21,13 @@
 			 pkgset &to_remove, pkgset &to_purge,
 			 int verbose);
 
+/** Parses a list of actions and executes them.  If there is a
+ *  syntax or other error, all the commands up to the point of
+ *  the error will be executed.
+ */
+void cmdline_parse_action(string s,
+			  pkgset &to_install, pkgset &to_hold,
+			  pkgset &to_remove, pkgset &to_purge,
+			  int verbose);
+
 #endif // CMDLINE_ACTION_H

Modified: branches/aptitude-0.3/aptitude/src/cmdline/cmdline_do_action.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/cmdline/cmdline_do_action.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/cmdline/cmdline_do_action.cc	Sat Apr 30 19:08:30 2005
@@ -173,7 +173,8 @@
 		       to_remove,
 		       to_purge,
 		       assume_yes,
-		       !fix_broken);
+		       !fix_broken,
+		       verbose);
 
   _error->DumpErrors();
 

Modified: branches/aptitude-0.3/aptitude/src/cmdline/cmdline_prompt.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/cmdline/cmdline_prompt.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/cmdline/cmdline_prompt.cc	Sat Apr 30 19:08:30 2005
@@ -489,84 +489,6 @@
   return rval;
 }
 
-// Parses a list of actions and executes them.  Aborts after a partial
-// action if something bad happens.
-static void cmdline_parse_action(string s,
-				 pkgset &to_install, pkgset &to_hold,
-				 pkgset &to_remove, pkgset &to_purge,
-				 int verbose)
-{
-  string::size_type loc=0;
-
-  while(loc<s.size() && isspace(s[loc]))
-    ++loc;
-
-  if(loc==s.size())
-    return;
-
-  cmdline_pkgaction_type action;
-
-  switch(s[loc])
-    {
-    case '_':
-      action=cmdline_purge;
-      break;
-    case '-':
-      action=cmdline_remove;
-      break;
-    case '=':
-      action=cmdline_hold;
-      break;
-    case '+':
-      action=cmdline_install;
-      break;
-    default:
-      printf(_("Bad action character '%c'\n"), s[0]);
-      return;
-    }
-
-  ++loc;
-
-  while(loc<s.size())
-    {
-      while(loc<s.size() && isspace(s[loc]))
-	++loc;
-
-      if(loc<s.size())
-	switch(s[loc])
-	  {
-	  case '_':
-	    action=cmdline_purge;
-	    ++loc;
-	    break;
-	  case '-':
-	    action=cmdline_remove;
-	    ++loc;
-	    break;
-	  case '=':
-	    action=cmdline_hold;
-	    ++loc;
-	    break;
-	  case '+':
-	    action=cmdline_install;
-	    ++loc;
-	    break;
-	  default:
-	    {
-	      string pkgname;
-	      while(loc<s.size() && !isspace(s[loc]))
-		pkgname+=s[loc++];
-
-	      if(!cmdline_applyaction(pkgname, action,
-				      to_install, to_hold,
-				      to_remove, to_purge,
-				      verbose))
-		return;
-	    }
-	  }
-    }
-}
-
 static void cmdline_parse_show(string response,
 			       int verbose)
 {
@@ -656,7 +578,8 @@
 				    to_remove,
 				    to_purge,
 				    assume_yes,
-				    force_no_change))
+				    force_no_change,
+				    verbose))
 	{
 	  cont=true;
 	  rval=false;

Modified: branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.cc	Sat Apr 30 19:08:30 2005
@@ -19,6 +19,7 @@
 
 #include "cmdline_resolver.h"
 
+#include "cmdline_action.h"
 #include "cmdline_common.h"
 #include "cmdline_prompt.h"
 #include "cmdline_show.h"
@@ -129,7 +130,8 @@
 			  pkgset &to_remove,
 			  pkgset &to_purge,
 			  bool assume_yes,
-			  bool force_no_change)
+			  bool force_no_change,
+			  int verbose)
 {
   while(!show_broken())
     {
@@ -206,6 +208,14 @@
 		    cout << _("The following commands are available:") << endl;
 		    resolver_help(cout);
 		    break;
+		  case '+':
+		  case '-':
+		  case '=':
+		  case '_':
+		    cmdline_parse_action(response, to_install, to_hold,
+					 to_remove, to_purge, verbose);
+		    modified_pkgs=true;
+		    break;
 		  default:
 		    cout << _("Invalid response; please enter one of the following commands:") << endl;
 		    resolver_help(cout);

Modified: branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.h	(original)
+++ branches/aptitude-0.3/aptitude/src/cmdline/cmdline_resolver.h	Sat Apr 30 19:08:30 2005
@@ -39,15 +39,17 @@
  *  \param assume_yes if \b true, try to find a single solution
  *  (regardless of how long it takes) and accept it immediately.
  *
- *  \param force_no_change if \b true, assign estra version scores to
+ *  \param force_no_change if \b true, assign extra version scores to
  *  heavily bias the resolver against changing any packages in the
  *  supplied sets.
+ *  \param verbose the verbosity level set by the user
  */
 bool cmdline_resolve_deps(pkgset &to_install,
 			  pkgset &to_hold,
 			  pkgset &to_remove,
 			  pkgset &to_purge,
 			  bool assume_yes,
-			  bool force_no_change);
+			  bool force_no_change,
+			  int verbose);
 
 #endif // CMDLINE_RESOLVER_H