The following commit has been merged in the master branch: commit 246c8223a6003af989b16f29dfd48d9415ea7dd8 Author: Guillem Jover <guil...@debian.org> Date: Mon Jan 2 06:56:41 2012 +0100
libdpkg: Add virtual source:Package and source:Version fields Closes: #653575 diff --git a/debian/changelog b/debian/changelog index c814a92..1164bdd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -45,6 +45,8 @@ dpkg (1.16.2) UNRELEASED; urgency=low * Add missing ‘*’ in asprintf() and vasprintf() compat declarations. * Add support for virtual output binary:Summary and db:Status-Abbrev fields. Closes: #192619, #427945 + * Add support for virtual output source:Package and source:Version fields. + Closes: #653575 [ Raphaël Hertzog ] * Update Dpkg::Shlibs to look into multiarch paths when cross-building diff --git a/lib/dpkg/pkg-format.c b/lib/dpkg/pkg-format.c index a474345..f7afe10 100644 --- a/lib/dpkg/pkg-format.c +++ b/lib/dpkg/pkg-format.c @@ -228,9 +228,56 @@ virt_summary(struct varbuf *vb, varbuf_add_buf(vb, desc, len); } +static void +virt_source_package(struct varbuf *vb, + const struct pkginfo *pkg, const struct pkgbin *pkgbin, + enum fwriteflags flags, const struct fieldinfo *fip) +{ + const char *name; + size_t len; + + name = pkg->installed.source; + if (name == NULL) + name = pkg->set->name; + + len = strcspn(name, " "); + if (len == 0) + len = strlen(name); + + varbuf_add_buf(vb, name, len); +} + +static void +virt_source_version(struct varbuf *vb, + const struct pkginfo *pkg, const struct pkgbin *pkgbin, + enum fwriteflags flags, const struct fieldinfo *fip) +{ + const char *version; + size_t len; + + if (pkg->installed.source) + version = strchr(pkg->installed.source, '('); + else + version = NULL; + + if (version == NULL) { + varbufversion(vb, &pkg->installed.version, vdew_nonambig); + } else { + version++; + + len = strcspn(version, ")"); + if (len == 0) + len = strlen(version); + + varbuf_add_buf(vb, version, len); + } +} + const struct fieldinfo virtinfos[] = { { "binary:Summary", NULL, virt_summary }, { "db:Status-Abbrev", NULL, virt_status_abbrev }, + { "source:Package", NULL, virt_source_package }, + { "source:Version", NULL, virt_source_version }, { NULL }, }; diff --git a/man/dpkg-query.1 b/man/dpkg-query.1 index dbe7984..06f6adc 100644 --- a/man/dpkg-query.1 +++ b/man/dpkg-query.1 @@ -188,6 +188,8 @@ fields in control files): .nf \fBbinary:Summary\fP \fBdb:Status\-Abbrev\fP + \fBsource:Package\fP + \fBsource:Version\fP .fi The default format string is \(lq\fB${Package}\et${Version}\en\fP\(rq. -- dpkg's main repository -- To UNSUBSCRIBE, email to debian-dpkg-cvs-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org