summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am10
-rw-r--r--lib/poptQV.c8
-rw-r--r--rpmpopt.in1
-rw-r--r--rpmqv.c2
-rw-r--r--rpmspec.c77
-rw-r--r--tests/rpmquery.at6
6 files changed, 89 insertions, 15 deletions
diff --git a/Makefile.am b/Makefile.am
index 9ff6d3cae..907c721ec 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -88,7 +88,7 @@ pkginclude_HEADERS += build/rpmspec.h
rpmbindir = `echo $(bindir) | $(SED) -e s,usr/bin,bin,`
rpmbin_PROGRAMS = rpm
-bin_PROGRAMS = rpm2cpio rpmbuild rpmdb rpmkeys rpmsign
+bin_PROGRAMS = rpm2cpio rpmbuild rpmdb rpmkeys rpmsign rpmspec
rpmlibexec_PROGRAMS =
rpmconfig_SCRIPTS = find-provides find-requires mkinstalldirs \
@@ -105,7 +105,7 @@ libcliutils_la_LIBADD += @WITH_POPT_LIB@
rpm_SOURCES = rpmqv.c debug.h system.h
rpm_CPPFLAGS = $(AM_CPPFLAGS) -DIAM_RPMEIU -DIAM_RPMQV
rpm_LDADD = libcliutils.la
-rpm_LDADD += build/librpmbuild.la lib/librpm.la rpmio/librpmio.la
+rpm_LDADD += lib/librpm.la rpmio/librpmio.la
rpm_LDADD += @WITH_NSS_LIB@ @WITH_POPT_LIB@ @WITH_ZLIB_LIB@
rpmdb_SOURCES = rpmdb.c debug.h system.h
@@ -132,6 +132,12 @@ rpmbuild_LDADD = libcliutils.la
rpmbuild_LDADD += build/librpmbuild.la lib/librpm.la rpmio/librpmio.la
rpmbuild_LDADD += @WITH_NSS_LIB@ @WITH_POPT_LIB@ @WITH_ZLIB_LIB@
+rpmspec_SOURCES = rpmspec.c debug.h system.h
+rpmspec_CPPFLAGS = $(AM_CPPFLAGS)
+rpmspec_LDADD = libcliutils.la
+rpmspec_LDADD += build/librpmbuild.la lib/librpm.la rpmio/librpmio.la
+rpmspec_LDADD += @WITH_NSS_LIB@ @WITH_POPT_LIB@ @WITH_ZLIB_LIB@
+
rpm2cpio_SOURCES = rpm2cpio.c debug.h system.h
rpm2cpio_LDADD = lib/librpm.la rpmio/librpmio.la
rpm2cpio_LDADD += @WITH_NSS_LIB@ @WITH_POPT_LIB@ @WITH_ZLIB_LIB@
diff --git a/lib/poptQV.c b/lib/poptQV.c
index 8f163efda..dbed4537a 100644
--- a/lib/poptQV.c
+++ b/lib/poptQV.c
@@ -18,7 +18,6 @@ struct rpmQVKArguments_s rpmQVKArgs;
#define POPT_QUERYBYNUMBER -1003
#define POPT_TRIGGEREDBY -1004
#define POPT_DUMP -1005
-#define POPT_SPECFILE -1006
#define POPT_QUERYBYPKGID -1007
#define POPT_QUERYBYHDRID -1008
#define POPT_QUERYBYFILEID -1009
@@ -59,11 +58,6 @@ static void rpmQVSourceArgCallback( poptContext con,
case POPT_QUERYBYTID: qva->qva_source |= RPMQV_TID;
qva->qva_sourceCount++; break;
-/* XXX SPECFILE is not verify sources */
- case POPT_SPECFILE:
- qva->qva_source |= RPMQV_SPECFILE;
- qva->qva_sourceCount++;
- break;
case POPT_QUERYBYNUMBER:
qva->qva_source |= RPMQV_DBOFFSET;
qva->qva_sourceCount++;
@@ -100,8 +94,6 @@ struct poptOption rpmQVSourcePoptTable[] = {
N_("rpm query mode"), NULL },
{ "querybynumber", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_QUERYBYNUMBER,
N_("query/verify a header instance"), "HDRNUM" },
- { "specfile", '\0', 0, 0, POPT_SPECFILE,
- N_("query a spec file"), N_("<spec>") },
{ "tid", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, POPT_QUERYBYTID,
N_("query/verify package(s) from install transaction"), "TID" },
{ "triggeredby", '\0', 0, 0, POPT_TRIGGEREDBY,
diff --git a/rpmpopt.in b/rpmpopt.in
index db553a8fa..bc9eac304 100644
--- a/rpmpopt.in
+++ b/rpmpopt.in
@@ -168,6 +168,7 @@ rpm exec --import @BINDIR@/rpmkeys --import
rpm exec --initdb @BINDIR@/rpmdb --initdb
rpm exec --rebuilddb @BINDIR@/rpmdb --rebuilddb
rpm exec --verifydb @BINDIR@/rpmdb --verifydb
+rpm exec --specfile @BINDIR@/rpmspec -q
#==============================================================================
rpmbuild alias --dbpath --define '_dbpath !#:+' \
diff --git a/rpmqv.c b/rpmqv.c
index 325449db1..212151b79 100644
--- a/rpmqv.c
+++ b/rpmqv.c
@@ -303,9 +303,7 @@ int main(int argc, char *argv[])
if (!poptPeekArg(optCon) && !(qva->qva_source == RPMQV_ALL))
argerror(_("no arguments given for query"));
- qva->qva_specQuery = rpmspecQuery;
ec = rpmcliQuery(ts, qva, (ARGV_const_t) poptGetArgs(optCon));
- qva->qva_specQuery = NULL;
break;
case MODE_VERIFY:
diff --git a/rpmspec.c b/rpmspec.c
new file mode 100644
index 000000000..bb73ad6c8
--- /dev/null
+++ b/rpmspec.c
@@ -0,0 +1,77 @@
+#include "system.h"
+const char *__progname;
+
+#include <rpm/rpmcli.h>
+#include <rpm/rpmbuild.h>
+#include <rpm/rpmlog.h>
+#include <rpm/rpmts.h>
+
+#include "cliutils.h"
+
+#include "debug.h"
+
+enum modes {
+ MODE_UNKNOWN = 0,
+ MODE_QUERY = (1 << 0),
+};
+
+static int mode = MODE_UNKNOWN;
+
+/* the structure describing the options we take and the defaults */
+static struct poptOption optionsTable[] = {
+ { "query", 'q', POPT_ARG_VAL, &mode, MODE_QUERY,
+ N_("Query spec file(s)"), NULL },
+
+ /* XXX FIXME: only queryformat is relevant for spec queries */
+ { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmQueryPoptTable, 0,
+ N_("Query options (with -q or --query):"), NULL },
+ { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmcliAllPoptTable, 0,
+ N_("Common options for all rpm modes and executables:"), NULL },
+
+ POPT_AUTOALIAS
+ POPT_AUTOHELP
+ POPT_TABLEEND
+};
+
+int main(int argc, char *argv[])
+{
+ rpmts ts = NULL;
+ QVA_t qva = &rpmQVKArgs;
+
+ poptContext optCon;
+ int ec = 0;
+
+ optCon = rpmcliInit(argc, argv, optionsTable);
+
+ if (rpmcliPipeOutput && initPipe())
+ exit(EXIT_FAILURE);
+
+ ts = rpmtsCreate();
+ switch (mode) {
+
+ case MODE_QUERY:
+ if (!poptPeekArg(optCon))
+ argerror(_("no arguments given for query"));
+
+ qva->qva_source = RPMQV_SPECFILE;
+ qva->qva_specQuery = rpmspecQuery;
+ ec = rpmcliQuery(ts, qva, (ARGV_const_t) poptGetArgs(optCon));
+ break;
+
+ case MODE_UNKNOWN:
+ if (poptPeekArg(optCon) != NULL || argc <= 1 || rpmIsVerbose()) {
+ printUsage(optCon, stderr, 0);
+ ec = argc;
+ }
+ break;
+ }
+
+ ts = rpmtsFree(ts);
+ finishPipe();
+
+ qva->qva_queryFormat = _free(qva->qva_queryFormat);
+
+ rpmcliFini(optCon);
+
+ return RETVAL(ec);
+}
diff --git a/tests/rpmquery.at b/tests/rpmquery.at
index 77668eb65..b7b800ac3 100644
--- a/tests/rpmquery.at
+++ b/tests/rpmquery.at
@@ -62,11 +62,11 @@ hello.spec
AT_CLEANUP
# ------------------------------
-AT_SETUP([rpm -q --specfile])
+AT_SETUP([rpmspec -q])
AT_KEYWORDS([query])
AT_CHECK([
-run rpm \
- -q --specfile --qf "%{name}" "${abs_srcdir}"/data/SPECS/hello.spec
+run rpmspec \
+ -q --qf "%{name}" "${abs_srcdir}"/data/SPECS/hello.spec
],
[0],
[hello],