chiark / gitweb /
finish
[version-charset-test.git] / 0001-provide-dpkg-filter-valid-versions.patch
diff --git a/0001-provide-dpkg-filter-valid-versions.patch b/0001-provide-dpkg-filter-valid-versions.patch
new file mode 100644 (file)
index 0000000..c59a0ed
--- /dev/null
@@ -0,0 +1,75 @@
+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
+