Browse Source

libdpkg: Add a new source version accessor

Guillem Jover 7 years ago
parent
commit
e0043dccaa
3 changed files with 20 additions and 0 deletions
  1. 4 0
      lib/dpkg/dpkg-db.h
  2. 1 0
      lib/dpkg/libdpkg.map
  3. 15 0
      lib/dpkg/pkg-show.c

+ 4 - 0
lib/dpkg/dpkg-db.h

@@ -379,6 +379,10 @@ const char *pkgbin_name(struct pkginfo *pkg, struct pkgbin *pkgbin,
                         enum pkg_name_arch_when pnaw);
 const char *pkg_name(struct pkginfo *pkg, enum pkg_name_arch_when pnaw);
 
+void
+pkg_source_version(struct dpkg_version *version,
+                   const struct pkginfo *pkg, const struct pkgbin *pkgbin);
+
 void
 varbuf_add_source_version(struct varbuf *vb,
                           const struct pkginfo *pkg, const struct pkgbin *pkgbin);

+ 1 - 0
lib/dpkg/libdpkg.map

@@ -265,6 +265,7 @@ LIBDPKG_PRIVATE {
 	varbuf_add_source_version;
 	pkgbin_name;
 	pkg_name;
+	pkg_source_version;
 	pkgbin_summary;
 	pkg_abbrev_want;
 	pkg_abbrev_status;

+ 15 - 0
lib/dpkg/pkg-show.c

@@ -26,6 +26,7 @@
 
 #include <dpkg/macros.h>
 #include <dpkg/i18n.h>
+#include <dpkg/dpkg.h>
 #include <dpkg/dpkg-db.h>
 #include <dpkg/pkg-show.h>
 
@@ -323,3 +324,17 @@ varbuf_add_source_version(struct varbuf *vb,
 		varbuf_add_buf(vb, version, len);
 	}
 }
+
+void
+pkg_source_version(struct dpkg_version *version,
+                   const struct pkginfo *pkg, const struct pkgbin *pkgbin)
+{
+	struct dpkg_error err;
+	struct varbuf vb = VARBUF_INIT;
+
+	varbuf_add_source_version(&vb, pkg, pkgbin);
+	varbuf_end_str(&vb);
+
+	if (parseversion(version, vb.buf, &err) < 0)
+		ohshit(_("version '%s' has bad syntax: %s"), vb.buf, err.str);
+}