Add cli-switch to query for license files
authorPanu Matilainen <pmatilai@redhat.com>
Thu, 8 Nov 2012 08:26:18 +0000 (10:26 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Thu, 8 Nov 2012 09:00:04 +0000 (11:00 +0200)
(cherry picked from commit 4b19c17f53f56c841903e5d6a09efdb10b2ca400)

doc/rpm.8
lib/poptQV.c
lib/query.c
lib/rpmcli.h

index ce35fdc..13dbb48 100644 (file)
--- a/doc/rpm.8
+++ b/doc/rpm.8
@@ -607,6 +607,9 @@ This uses the \fB--queryformat\fR if one was specified.
 Orders the package listing by install time such that the latest
 packages are at the top.
 .TP
+\fB-L, --licensefiles\fR
+List only license files (implies \fB-l\fR).
+.TP
 \fB-l, --list\fR
 List files in package.
 .TP
index 1cb5517..3db17b0 100644 (file)
@@ -114,6 +114,7 @@ static void queryArgCallback(poptContext con,
     switch (opt->val) {
     case 'c': qva->qva_flags |= QUERY_FOR_CONFIG | QUERY_FOR_LIST; break;
     case 'd': qva->qva_flags |= QUERY_FOR_DOCS | QUERY_FOR_LIST; break;
+    case 'L': qva->qva_flags |= QUERY_FOR_LICENSE | QUERY_FOR_LIST; break;
     case 'l': qva->qva_flags |= QUERY_FOR_LIST; break;
     case 's': qva->qva_flags |= QUERY_FOR_STATE | QUERY_FOR_LIST;
        break;
@@ -171,6 +172,8 @@ struct poptOption rpmQueryPoptTable[] = {
        N_("list all configuration files"), NULL },
  { "docfiles", 'd', 0, 0, 'd',
        N_("list all documentation files"), NULL },
+ { "licensefiles", 'L', 0, 0, 'L',
+       N_("list all license files"), NULL },
  { "dump", '\0', 0, 0, POPT_DUMP,
        N_("dump basic file information"), NULL },
  { NULL, 'i', POPT_ARGFLAG_DOC_HIDDEN, 0, 'i',
index 7ecebaf..6f2d593 100644 (file)
@@ -146,6 +146,10 @@ int showQueryPackage(QVA_t qva, rpmts ts, Header h)
        if ((qva->qva_flags & QUERY_FOR_CONFIG) && !(fflags & RPMFILE_CONFIG))
            continue;
 
+       /* If querying only licenses, skip non-license files. */
+       if ((qva->qva_flags & QUERY_FOR_LICENSE) && !(fflags & RPMFILE_LICENSE))
+           continue;
+
        /* If not querying %ghost, skip ghost files. */
        if ((qva->qva_fflags & RPMFILE_GHOST) && (fflags & RPMFILE_GHOST))
            continue;
index 1e92c50..cdb1f8a 100644 (file)
@@ -123,14 +123,15 @@ enum rpmQueryFlags_e {
     QUERY_FOR_STATE    = (1 << 24),    /*!< query:  from --state */
     QUERY_FOR_DOCS     = (1 << 25),    /*!< query:  from --docfiles */
     QUERY_FOR_CONFIG   = (1 << 26),    /*!< query:  from --configfiles */
-    QUERY_FOR_DUMPFILES        = (1 << 27)     /*!< query:  from --dump */
+    QUERY_FOR_DUMPFILES        = (1 << 27),    /*!< query:  from --dump */
+    QUERY_FOR_LICENSE  = (1 << 28)     /*!< query:  from --licensefiles */
 };
 
 typedef rpmFlags rpmQueryFlags;
 
 #define        _QUERY_FOR_BITS \
    (QUERY_FOR_LIST|QUERY_FOR_STATE|QUERY_FOR_DOCS|QUERY_FOR_CONFIG|\
-    QUERY_FOR_DUMPFILES)
+    QUERY_FOR_LICENSE|QUERY_FOR_DUMPFILES)
 
 /** \ingroup rpmcli
  * Bit(s) from common command line options.