Hi, currently pinning multiple related packages is pretty cumbersome as it requires a separate paragraph for each package. (Image pinning all KDE/PHP/xorg packages.) The attached patch allows to specify multiple package names in the Package: line in the preference file. It's pretty unintrusive but brings a big usability gain (imo). It applies to both 0.6.4 and 0.7 and updates the manpage too. Regards, David ps: I'm new to C++ only knowing C so so the string handling might not be as elegant.
--- apt-pkg/policy.cc.orig 2007-03-05 23:16:38.000000000 +0100
+++ apt-pkg/policy.cc 2007-03-05 23:18:08.000000000 +0100
@@ -300,7 +300,16 @@
continue;
}
- Plcy.CreatePin(Type,Name,string(Word,End),priority);
+ int curWordEnd;
+ do {
+ for (curWordEnd = 0; !isspace(Name[curWordEnd]) && curWordEnd < Name.length(); curWordEnd++);
+ Plcy.CreatePin(Type,Name.substr(0, curWordEnd), string(Word,End),priority);
+ for(; isspace(Name[curWordEnd]); curWordEnd++);
+ Name.erase(0,curWordEnd);
+ } while (!Name.empty());
}
Plcy.InitDefaults();
--- doc/apt_preferences.5 2006-12-04 18:43:47.000000000 +0100
+++ doc/apt_preferences.5.orig 2007-03-05 23:35:28.000000000 +0100
@@ -121,9 +121,9 @@
The APT preferences file allows the system administrator to control the assignment of priorities. The file consists of one or more multi\-line records separated by blank lines. Records can have one of two forms, a specific form and a general form.
.TP 3n
\(bu
-The specific form assigns a priority (a "Pin\-Priority") to a specified package and specified version or version range. For example, the following record assigns a high priority to all versions of the
+The specific form assigns a priority (a "Pin\-Priority") to one or more specified packages and specified version or version range. For example, the following record assigns a high priority to all versions of the
\fIperl\fR
-package whose version number begins with "5.8".
+package whose version number begins with "5.8". Multiple packages can be separated by spaces.
.sp
.RS 3n
.nf
--- doc/apt_preferences.5.xml 2006-12-04 15:37:35.000000000 +0100
+++ doc/apt_preferences.5.xml.orig 2007-03-05 23:35:36.000000000 +0100
@@ -143,10 +143,11 @@
and a general form.
<itemizedlist>
<listitem>
-<simpara>The specific form assigns a priority (a "Pin-Priority") to a
-specified package and specified version or version range. For example,
+<simpara>The specific form assigns a priority (a "Pin-Priority") to one or more
+specified packages and specified version or version range. For example,
the following record assigns a high priority to all versions of
-the <filename>perl</filename> package whose version number begins with "<literal>5.8</literal>".</simpara>
+the <filename>perl</filename> package whose version number begins with "<literal>5.8</literal>".
+Multiple packages can be separated by spaces.</simpara>
<programlisting>
Package: perl
Attachment:
pgpe8me3cJGXN.pgp
Description: PGP signature