blob: faaf62960c120135a1e5c31bcebc06cb558756ed [file] [log] [blame]
From 3bf20a6116ae3e1a5a3a6907bee7e881b17efb2f Mon Sep 17 00:00:00 2001
From: Peter Kjellerstedt <pkj@axis.com>
Date: Mon, 15 May 2017 11:23:26 +0200
Subject: [PATCH 13/13] Add a new option --alldeps to rpmdeps
This will send the output from rpmfcPrint() to stdout. This is an
alternative to using the --rpmfcdebug option, which will send the same
output to stderr. The two options have totally different use cases
though. While --alldeps is used when the output from rpmfcPrint() is
what is wanted, --rpmfcdebug can be used together with the other
output options, e.g., --requires, without affecting their output.
Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/220]
Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
---
build/rpmfc.c | 27 ++++++++++++++-------------
build/rpmfc.h | 1 -
tools/rpmdeps.c | 44 +++++++++++++++++++++++++-------------------
3 files changed, 39 insertions(+), 33 deletions(-)
diff --git a/build/rpmfc.c b/build/rpmfc.c
index c8e2f876a..44f1cdc9a 100644
--- a/build/rpmfc.c
+++ b/build/rpmfc.c
@@ -732,7 +732,6 @@ static rpm_color_t rpmfcColor(const char * fmstr)
void rpmfcPrint(const char * msg, rpmfc fc, FILE * fp)
{
- rpm_color_t fcolor;
int ndx;
int dx;
int fx;
@@ -744,21 +743,23 @@ void rpmfcPrint(const char * msg, rpmfc fc, FILE * fp)
if (fc)
for (fx = 0; fx < fc->nfiles; fx++) {
- rpmsid cx = fc->fcdictx[fx] + 1; /* id's are one off */
- fcolor = fc->fcolor[fx];
- ARGV_t fattrs = fc->fattrs[fx];
-
fprintf(fp, "%3d %s", fx, fc->fn[fx]);
- if (fcolor != RPMFC_BLACK)
+ if (_rpmfc_debug) {
+ rpmsid cx = fc->fcdictx[fx] + 1; /* id's are one off */
+ rpm_color_t fcolor = fc->fcolor[fx];
+ ARGV_t fattrs = fc->fattrs[fx];
+
+ if (fcolor != RPMFC_BLACK)
fprintf(fp, "\t0x%x", fc->fcolor[fx]);
- else
+ else
fprintf(fp, "\t%s", rpmstrPoolStr(fc->cdict, cx));
- if (fattrs) {
- char *attrs = argvJoin(fattrs, ",");
- fprintf(fp, " [%s]", attrs);
- free(attrs);
- } else {
- fprintf(fp, " [none]");
+ if (fattrs) {
+ char *attrs = argvJoin(fattrs, ",");
+ fprintf(fp, " [%s]", attrs);
+ free(attrs);
+ } else {
+ fprintf(fp, " [none]");
+ }
}
fprintf(fp, "\n");
diff --git a/build/rpmfc.h b/build/rpmfc.h
index dae8ea5b1..3d87b31cf 100644
--- a/build/rpmfc.h
+++ b/build/rpmfc.h
@@ -45,7 +45,6 @@ typedef const struct rpmfcTokens_s * rpmfcToken;
/** \ingroup rpmfc
* Print results of file classification.
- * @todo Remove debugging routine.
* @param msg message prefix (NULL for none)
* @param fc file classifier
* @param fp output file handle (NULL for stderr)
diff --git a/tools/rpmdeps.c b/tools/rpmdeps.c
index a414b6343..f260a38c4 100644
--- a/tools/rpmdeps.c
+++ b/tools/rpmdeps.c
@@ -23,6 +23,8 @@ static int print_conflicts;
static int print_obsoletes;
+static int print_alldeps;
+
static void rpmdsPrint(const char * msg, rpmds ds, FILE * fp)
{
if (fp == NULL) fp = stderr;
@@ -57,6 +59,8 @@ static struct poptOption optionsTable[] = {
NULL, NULL },
{ "obsoletes", '\0', POPT_ARG_VAL, &print_obsoletes, -1,
NULL, NULL },
+ { "alldeps", '\0', POPT_ARG_VAL, &print_alldeps, -1,
+ NULL, NULL },
POPT_AUTOALIAS
POPT_AUTOHELP
@@ -100,25 +104,27 @@ main(int argc, char *argv[])
if (rpmfcClassify(fc, av, NULL) || rpmfcApply(fc))
goto exit;
- if (_rpmfc_debug)
- rpmfcPrint(buf, fc, NULL);
-
- if (print_provides)
- rpmdsPrint(NULL, rpmfcProvides(fc), stdout);
- if (print_requires)
- rpmdsPrint(NULL, rpmfcRequires(fc), stdout);
- if (print_recommends)
- rpmdsPrint(NULL, rpmfcRecommends(fc), stdout);
- if (print_suggests)
- rpmdsPrint(NULL, rpmfcSuggests(fc), stdout);
- if (print_supplements)
- rpmdsPrint(NULL, rpmfcSupplements(fc), stdout);
- if (print_enhances)
- rpmdsPrint(NULL, rpmfcEnhances(fc), stdout);
- if (print_conflicts)
- rpmdsPrint(NULL, rpmfcConflicts(fc), stdout);
- if (print_obsoletes)
- rpmdsPrint(NULL, rpmfcObsoletes(fc), stdout);
+ if (print_alldeps || _rpmfc_debug)
+ rpmfcPrint(NULL, fc, print_alldeps ? stdout : NULL);
+
+ if (!print_alldeps) {
+ if (print_provides)
+ rpmdsPrint(NULL, rpmfcProvides(fc), stdout);
+ if (print_requires)
+ rpmdsPrint(NULL, rpmfcRequires(fc), stdout);
+ if (print_recommends)
+ rpmdsPrint(NULL, rpmfcRecommends(fc), stdout);
+ if (print_suggests)
+ rpmdsPrint(NULL, rpmfcSuggests(fc), stdout);
+ if (print_supplements)
+ rpmdsPrint(NULL, rpmfcSupplements(fc), stdout);
+ if (print_enhances)
+ rpmdsPrint(NULL, rpmfcEnhances(fc), stdout);
+ if (print_conflicts)
+ rpmdsPrint(NULL, rpmfcConflicts(fc), stdout);
+ if (print_obsoletes)
+ rpmdsPrint(NULL, rpmfcObsoletes(fc), stdout);
+ }
ec = 0;
--
2.12.0