--- /dev/null
+From fc2314965332d9f9efb3f79f500f4ddbf76e91f8 Mon Sep 17 00:00:00 2001
+From: Ian Jackson <ijackson@chiark.greenend.org.uk>
+Date: Fri, 4 Nov 2016 13:55:19 +0000
+Subject: [PATCH] provide dpkg --filter-valid-versions
+
+Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
+---
+ src/enquiry.c | 20 ++++++++++++++++++++
+ src/main.c | 1 +
+ src/main.h | 2 ++
+ 3 files changed, 23 insertions(+)
+
+diff --git a/src/enquiry.c b/src/enquiry.c
+index 9f71863..b5010ad 100644
+--- a/src/enquiry.c
++++ b/src/enquiry.c
+@@ -694,3 +694,23 @@ cmpversions(const char *const *argv)
+ else
+ return rip->if_equal;
+ }
++
++int
++filterversions(const char *const *argv)
++{
++ char buf[100];
++ char *newline;
++ struct dpkg_error err;
++ struct dpkg_version vp;
++
++ while (fgets(buf,sizeof(buf),stdin)) {
++ newline = strchr(buf,'\n');
++ assert(newline);
++ *newline = 0;
++ if (parseversion(&vp, buf, &err))
++ continue;
++ puts(buf);
++ }
++ assert(feof(stdin));
++ return 0;
++}
+diff --git a/src/main.c b/src/main.c
+index 122a28f..5d03cee 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -694,6 +694,7 @@ static const struct cmdinfo cmdinfos[]= {
+ ACTION( "print-foreign-architectures", 0, act_printforeignarches, print_foreign_arches ),
+ ACTION( "predep-package", 0, act_predeppackage, predeppackage ),
+ ACTION( "compare-versions", 0, act_cmpversions, cmpversions ),
++ ACTION( "filter-valid-versions", 0, act_filterversions, filterversions ),
+ /*
+ ACTION( "command-fd", 'c', act_commandfd, commandfd ),
+ */
+diff --git a/src/main.h b/src/main.h
+index cddf45e..f4fad13 100644
+--- a/src/main.h
++++ b/src/main.h
+@@ -97,6 +97,7 @@ enum action {
+ act_controlshow,
+
+ act_cmpversions,
++ act_filterversions,
+
+ act_arch_add,
+ act_arch_remove,
+@@ -183,6 +184,7 @@ int printarch(const char *const *argv);
+ int printinstarch(const char *const *argv);
+ int print_foreign_arches(const char *const *argv);
+ int cmpversions(const char *const *argv);
++int filterversions(const char *const *argv);
+
+ /* from verify.c */
+
+--
+2.10.1
+
#exec 3<&0 </dev/null
git init
-git commit --allow-empty -m 'Test object'
-head=`git rev-parse HEAD`
+#git commit --allow-empty -m 'Test object'
+#head=`git rev-parse HEAD`
#exec <&3 3<&-
sub complete_batch () {
if ($file) {
- print STDERR "completing batch ($_)\n";
+ print STDERR "check completing batch\n";
close $file or die $!;
- system "git update-ref --stdin <batch"
- and die "$? $!";
+ system "git update-ref --stdin <batch"
+ and die $? < 0 ? $! : $?;
}
$file = undef;
$count = 0;
}
while (<>) {
-print STDERR ">$_<\n";
+#print STDERR ">$_<\n";
$file ||= new IO::File "batch", ">" or die $!;
chomp;
- print $file "create refs/tags/$_ '$head'\n" or die $!;
- $count++ < 1000 or complete_batch;
+ print $file "delete refs/tags/$_\n" or die $!;
+ $count++ < 100000 or complete_batch;
}
-print STDERR "FOO\n";
+#print STDERR "FOO\n";
STDIN->error and die $!;
complete_batch();
'