* [gentoo-commits] proj/portage-utils:master commit in: tests/qatom/, /, libq/
@ 2019-06-13 18:15 Fabian Groffen
0 siblings, 0 replies; only message in thread
From: Fabian Groffen @ 2019-06-13 18:15 UTC (permalink / raw
To: gentoo-commits
commit: b2418b1406551ce5b540aaf8d332ec53ddd52e01
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 13 18:13:57 2019 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Jun 13 18:13:57 2019 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=b2418b14
libq/atom: make atom_format smarter to unbreak Puppet
The default portage provider in Puppet uses qatom in a rather clumpsy
way. The newer formatting broke it because they don't use explicit
formatting. Make atom_format somewhat smarter to unbreak Puppet's
usage.
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
libq/atom.c | 38 ++++++++++++++++++++++----------------
libq/atom.h | 4 ++--
qatom.c | 2 +-
qcheck.c | 6 +++---
qdepends.c | 6 +++---
qfile.c | 4 ++--
qgrep.c | 2 +-
qlist.c | 4 ++--
qlop.c | 24 ++++++++++++------------
qmerge.c | 2 +-
qsearch.c | 2 +-
qsize.c | 2 +-
quse.c | 6 +++---
tests/qatom/dotest | 12 +++++++++---
14 files changed, 63 insertions(+), 51 deletions(-)
diff --git a/libq/atom.c b/libq/atom.c
index 12a393a..8ce7f18 100644
--- a/libq/atom.c
+++ b/libq/atom.c
@@ -683,7 +683,7 @@ atom_to_string_r(char *buf, size_t buflen, depend_atom *a)
/**
* Run printf on an atom. The format field takes the form:
* %{keyword}: Always display the field that matches "keyword" or <unset>
- * %[keyword]: Only display the field when it's set (or pverbose)
+ * %[keyword]: Only display the field when it's set
* The possible "keywords" are:
* CATEGORY P PN PV PVR PF PR SLOT SUBSLOT REPO USE
* - these are all the standard portage variables (so see ebuild(5))
@@ -695,14 +695,14 @@ atom_format_r(
char *buf,
size_t buflen,
const char *format,
- const depend_atom *atom,
- int pverbose)
+ const depend_atom *atom)
{
char bracket;
const char *fmt;
const char *p;
size_t len;
bool showit;
+ bool connected;
char *ret;
if (!atom) {
@@ -725,21 +725,25 @@ atom_format_r(
return ret;
} else if (fmt != p) {
append_buf(buf, buflen, "%.*s", (int)(fmt - p), p);
+ connected = false;
+ } else {
+ connected = true;
}
bracket = fmt[1];
if (bracket == '{' || bracket == '[') {
+ connected &= bracket == '[';
fmt += 2;
- p = strchr(fmt, bracket == '{' ? '}' : ']');
- if (p) {
+ if ((p = strchr(fmt, bracket == '{' ? '}' : ']')) != NULL) {
len = p - fmt;
- showit = (bracket == '{') || pverbose;
+ showit = bracket == '{';
#define HN(X) (X ? X : "<unset>")
if (!strncmp("CATEGORY", fmt, len)) {
+ connected = (p[1] == '%') & (bracket == '[');
if (showit || atom->CATEGORY)
append_buf(buf, buflen, "%s%s%s%s",
BOLD, HN(atom->CATEGORY),
- bracket == '[' ? "/" : "", NORM);
+ connected ? "/" : "", NORM);
} else if (!strncmp("P", fmt, len)) {
if (showit || atom->P)
append_buf(buf, buflen, "%s%s%s",
@@ -772,21 +776,21 @@ atom_format_r(
if (showit || atom->SLOT)
append_buf(buf, buflen, "%s%s%s%s",
YELLOW,
- bracket == '[' ? ":" : "",
+ connected ? ":" : "",
atom->SLOT ? atom->SLOT : "<unset>",
NORM);
} else if (!strncmp("SUBSLOT", fmt, len)) {
if (showit || atom->SUBSLOT)
append_buf(buf, buflen, "%s%s%s%s%s",
YELLOW,
- bracket == '[' ? "/" : "",
+ connected ? "/" : "",
atom->SUBSLOT ? atom->SUBSLOT : "",
atom_slotdep_str[atom->slotdep],
NORM);
} else if (!strncmp("REPO", fmt, len)) {
if (showit || atom->REPO)
append_buf(buf, buflen, "%s%s%s%s",
- GREEN, bracket == '[' ? "::" : "",
+ GREEN, connected ? "::" : "",
HN(atom->REPO), NORM);
} else if (!strncmp("pfx", fmt, len)) {
if (showit || atom->pfx_op != ATOM_OP_NONE)
@@ -810,12 +814,14 @@ atom_format_r(
}
} else
append_buf(buf, buflen, "<BAD:%.*s>", (int)len, fmt);
- ++p;
+ p++;
#undef HN
- } else
+ } else {
p = fmt + 1;
- } else
- ++p;
+ }
+ } else {
+ p++;
+ }
}
#undef append_buf
@@ -832,7 +838,7 @@ atom_to_string(depend_atom *a)
}
char *
-atom_format(const char *format, const depend_atom *atom, int pverbose)
+atom_format(const char *format, const depend_atom *atom)
{
- return atom_format_r(_atom_buf, sizeof(_atom_buf), format, atom, pverbose);
+ return atom_format_r(_atom_buf, sizeof(_atom_buf), format, atom);
}
diff --git a/libq/atom.h b/libq/atom.h
index b24783d..72266d5 100644
--- a/libq/atom.h
+++ b/libq/atom.h
@@ -95,8 +95,8 @@ int atom_compare(const depend_atom *a1, const depend_atom *a2);
int atom_compare_str(const char * const s1, const char * const s2);
char *atom_to_string_r(char *buf, size_t buflen, depend_atom *a);
char *atom_format_r(char *buf, size_t buflen,
- const char *format, const depend_atom *atom, int pverbose);
+ const char *format, const depend_atom *atom);
char *atom_to_string(depend_atom *a);
-char *atom_format(const char *format, const depend_atom *atom, int pverbose);
+char *atom_format(const char *format, const depend_atom *atom);
#endif
diff --git a/qatom.c b/qatom.c
index 6228cbc..4ad6116 100644
--- a/qatom.c
+++ b/qatom.c
@@ -96,7 +96,7 @@ int qatom_main(int argc, char **argv)
break;
}
case _EXPLODE:
- printf("%s\n", atom_format(format, atom, verbose));
+ printf("%s\n", atom_format(format, atom));
break;
case _PRINT:
printf("%s\n", atom_to_string(atom));
diff --git a/qcheck.c b/qcheck.c
index efbb191..8eb1f08 100644
--- a/qcheck.c
+++ b/qcheck.c
@@ -98,7 +98,7 @@ qcheck_process_contents(tree_pkg_ctx *pkg_ctx, struct qcheck_opt_state *state)
num_files = num_files_ok = num_files_unknown = num_files_ignored = 0;
qcprintf("%sing %s ...\n",
(state->qc_update ? "Updat" : "Check"),
- atom_format("%[CATEGORY]%[PF]", atom, 0));
+ atom_format("%[CATEGORY]%[PF]", atom));
if (state->qc_update) {
fp_contents_update = tree_pkg_vdb_fopenat_rw(pkg_ctx, "CONTENTS~");
if (fp_contents_update == NULL) {
@@ -331,9 +331,9 @@ qcheck_process_contents(tree_pkg_ctx *pkg_ctx, struct qcheck_opt_state *state)
}
if (state->bad_only && num_files_ok != num_files) {
if (verbose)
- printf("%s\n", atom_format("%[CATEGORY]%[PF]", atom, 0));
+ printf("%s\n", atom_format("%[CATEGORY]%[PF]", atom));
else {
- printf("%s\n", atom_format("%[CATEGORY]%[PN]", atom, 0));
+ printf("%s\n", atom_format("%[CATEGORY]%[PN]", atom));
}
}
qcprintf(" %2$s*%1$s %3$s%4$zu%1$s out of %3$s%5$zu%1$s file%6$s are good",
diff --git a/qdepends.c b/qdepends.c
index f560c31..f5aa5a5 100644
--- a/qdepends.c
+++ b/qdepends.c
@@ -149,7 +149,7 @@ qdepends_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
ret = 1;
datom = tree_get_atom(pkg_ctx, true);
- printf("%s:", atom_format(state->format, datom, 0));
+ printf("%s:", atom_format(state->format, datom));
}
xarrayfree_int(state->deps);
@@ -222,7 +222,7 @@ qdepends_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
if (!firstmatch) {
datom = tree_get_atom(pkg_ctx, true);
- printf("%s:", atom_format(state->format, datom, 0));
+ printf("%s:", atom_format(state->format, datom));
}
firstmatch = true;
@@ -251,7 +251,7 @@ qdepends_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
if (!firstmatch) {
datom = tree_get_atom(pkg_ctx, true);
- printf("%s:", atom_format(state->format, datom, 0));
+ printf("%s:", atom_format(state->format, datom));
}
firstmatch = true;
diff --git a/qfile.c b/qfile.c
index 1480789..1a6b470 100644
--- a/qfile.c
+++ b/qfile.c
@@ -175,7 +175,7 @@ static int qfile_cb(tree_pkg_ctx *pkg_ctx, void *priv)
atom = tree_get_atom(pkg_ctx, false);
warnp("Could not read real path of \"%s\" (from %s)",
fullpath,
- atom_format("%[CATEGORY]%[PF]", atom, false));
+ atom_format("%[CATEGORY]%[PF]", atom));
warn("We'll never know whether \"%s\" was a result "
"for your query...", e->name);
}
@@ -232,7 +232,7 @@ static int qfile_cb(tree_pkg_ctx *pkg_ctx, void *priv)
fmt = "%[CATEGORY]%[PN]";
}
}
- printf("%s", atom_format(fmt, atom, false));
+ printf("%s", atom_format(fmt, atom));
if (quiet)
puts("");
else
diff --git a/qgrep.c b/qgrep.c
index 058026e..003ead2 100644
--- a/qgrep.c
+++ b/qgrep.c
@@ -424,7 +424,7 @@ qgrep_cache_cb(tree_pkg_ctx *pkg_ctx, void *priv)
if (data->show_name) {
if (data->show_repo)
patom = tree_get_atom(pkg_ctx, true);
- atom_format_r(name, sizeof(name), "%[CATEGORY]%[P]%[REPO]", patom, 0);
+ atom_format_r(name, sizeof(name), "%[CATEGORY]%[P]%[REPO]", patom);
label = name;
} else if (data->show_filename) {
label = buf;
diff --git a/qlist.c b/qlist.c
index 0299d54..ab3fb4f 100644
--- a/qlist.c
+++ b/qlist.c
@@ -364,7 +364,7 @@ qlist_cb(tree_pkg_ctx *pkg_ctx, void *priv)
state->show_repo ? "%[REPO]" : "");
}
printf("%s%s\n",
- atom_format(qfmt, atom, 0),
+ atom_format(qfmt, atom),
umapstr(state->show_umap, pkg_ctx));
}
@@ -374,7 +374,7 @@ qlist_cb(tree_pkg_ctx *pkg_ctx, void *priv)
if (verbose)
printf("%s %sCONTENTS%s:\n",
- atom_format("%[CATEGORY]%[PF]", atom, 0), DKBLUE, NORM);
+ atom_format("%[CATEGORY]%[PF]", atom), DKBLUE, NORM);
fp = tree_pkg_vdb_fopenat_ro(pkg_ctx, "CONTENTS");
if (fp == NULL)
diff --git a/qlop.c b/qlop.c
index 2aa14a5..bd16018 100644
--- a/qlop.c
+++ b/qlop.c
@@ -621,19 +621,19 @@ static int do_emerge_log(
}
if (quiet && !flags->do_average) {
printf("%s%s%s\n",
- atom_format(afmt, pkgw->atom, 0),
+ atom_format(afmt, pkgw->atom),
flags->do_time ? ": " : "",
flags->do_time ?
fmt_elapsedtime(flags, elapsed) : "");
} else if (flags->do_time) {
printf("%s >>> %s: %s\n",
fmt_date(flags, pkgw->tbegin, tstart),
- atom_format(afmt, pkgw->atom, 0),
+ atom_format(afmt, pkgw->atom),
fmt_elapsedtime(flags, elapsed));
} else if (!flags->do_average) {
printf("%s >>> %s\n",
fmt_date(flags, pkgw->tbegin, tstart),
- atom_format(afmt, pkgw->atom, 0));
+ atom_format(afmt, pkgw->atom));
}
atom_implode(pkgw->atom);
xarraydelete(merge_matches, i);
@@ -726,19 +726,19 @@ static int do_emerge_log(
}
if (quiet && !flags->do_average) {
printf("%s%s%s\n",
- atom_format(afmt, pkgw->atom, 0),
+ atom_format(afmt, pkgw->atom),
flags->do_time ? ": " : "",
flags->do_time ?
fmt_elapsedtime(flags, elapsed) : "");
} else if (flags->do_time) {
printf("%s <<< %s: %s\n",
fmt_date(flags, pkgw->tbegin, tstart),
- atom_format(afmt, pkgw->atom, 0),
+ atom_format(afmt, pkgw->atom),
fmt_elapsedtime(flags, elapsed));
} else if (!flags->do_average) {
printf("%s <<< %s\n",
fmt_date(flags, pkgw->tbegin, tstart),
- atom_format(afmt, pkgw->atom, 0));
+ atom_format(afmt, pkgw->atom));
}
atom_implode(pkgw->atom);
xarraydelete(unmerge_matches, i);
@@ -800,7 +800,7 @@ static int do_emerge_log(
if (flags->do_time) {
printf("%s >>> %s: %s...%s ETA: %s\n",
fmt_date(flags, pkgw->tbegin, 0),
- atom_format(afmt, pkgw->atom, 0),
+ atom_format(afmt, pkgw->atom),
fmt_elapsedtime(flags, elapsed),
p == NULL ? "" : p,
maxtime == 0 ? "unknown" :
@@ -808,7 +808,7 @@ static int do_emerge_log(
} else {
printf("%s >>> %s...%s ETA: %s\n",
fmt_date(flags, pkgw->tbegin, 0),
- atom_format(afmt, pkgw->atom, 0),
+ atom_format(afmt, pkgw->atom),
p == NULL ? "" : p,
maxtime == 0 ? "unknown" :
fmt_elapsedtime(flags, maxtime - elapsed));
@@ -833,14 +833,14 @@ static int do_emerge_log(
if (flags->do_time) {
printf("%s <<< %s: %s... ETA: %s\n",
fmt_date(flags, pkgw->tbegin, 0),
- atom_format(afmt, pkgw->atom, 0),
+ atom_format(afmt, pkgw->atom),
fmt_elapsedtime(flags, elapsed),
maxtime == 0 ? "unknown" :
fmt_elapsedtime(flags, maxtime - elapsed));
} else {
printf("%s <<< %s... ETA: %s\n",
fmt_date(flags, pkgw->tbegin, 0),
- atom_format(afmt, pkgw->atom, 0),
+ atom_format(afmt, pkgw->atom),
maxtime == 0 ? "unknown" :
fmt_elapsedtime(flags, maxtime - elapsed));
}
@@ -852,7 +852,7 @@ static int do_emerge_log(
array_for_each(merge_averages, i, pkg) {
printf("%s: %s average for %s%zd%s merge%s\n",
- atom_format(afmt, pkg->atom, 0),
+ atom_format(afmt, pkg->atom),
fmt_elapsedtime(flags, pkg->time / pkg->cnt),
GREEN, pkg->cnt, NORM, pkg->cnt == 1 ? "" : "s");
total_merges += pkg->cnt;
@@ -860,7 +860,7 @@ static int do_emerge_log(
}
array_for_each(unmerge_averages, i, pkg) {
printf("%s: %s average for %s%zd%s unmerge%s\n",
- atom_format(afmt, pkg->atom, 0),
+ atom_format(afmt, pkg->atom),
fmt_elapsedtime(flags, pkg->time / pkg->cnt),
GREEN, pkg->cnt, NORM, pkg->cnt == 1 ? "" : "s");
total_unmerges += pkg->cnt;
diff --git a/qmerge.c b/qmerge.c
index c48ecd2..47a6e9b 100644
--- a/qmerge.c
+++ b/qmerge.c
@@ -1465,7 +1465,7 @@ pkg_unmerge(tree_pkg_ctx *pkg_ctx, set *keep,
T = "${PWD}/temp";
printf("%s<<<%s %s\n", YELLOW, NORM,
- atom_format("%[CATEGORY]%[PF]", tree_get_atom(pkg_ctx, false), 0));
+ atom_format("%[CATEGORY]%[PF]", tree_get_atom(pkg_ctx, false)));
if (pretend == 100)
return 0;
diff --git a/qsearch.c b/qsearch.c
index 1b953ac..db220c7 100644
--- a/qsearch.c
+++ b/qsearch.c
@@ -107,7 +107,7 @@ qsearch_cb(tree_pkg_ctx *pkg_ctx, void *priv)
qfmt = "%[CATEGORY]%[PN]";
}
printf("%s%s%s\n",
- atom_format(qfmt, atom, 0),
+ atom_format(qfmt, atom),
(state->show_name ? "" : " "),
(state->show_name ? "" : desc ? desc : ""));
}
diff --git a/qsize.c b/qsize.c
index 5e9daaa..ce4acc1 100644
--- a/qsize.c
+++ b/qsize.c
@@ -162,7 +162,7 @@ qsize_cb(tree_pkg_ctx *pkg_ctx, void *priv)
if (!state->summary_only) {
atom = tree_get_atom(pkg_ctx, 0);
printf("%s: %'zu files, %'zu non-files, ",
- atom_format("%[CATEGORY]%[PF]", atom, 0),
+ atom_format("%[CATEGORY]%[PF]", atom),
num_files, num_nonfiles);
if (num_ignored)
printf("%'zu names-ignored, ", num_ignored);
diff --git a/quse.c b/quse.c
index 8a9f78a..bc99c3b 100644
--- a/quse.c
+++ b/quse.c
@@ -556,7 +556,7 @@ quse_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
}
if (quiet) {
- printf("%s\n", atom_format(qfmt, atom, 0));
+ printf("%s\n", atom_format(qfmt, atom));
} else if (verbose && !state->do_licence) {
/* multi-line result, printing USE-flags with their descs */
size_t desclen;
@@ -571,7 +571,7 @@ quse_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
.overlay = NULL,
};
- printf("%s\n", atom_format(qfmt, atom, 0));
+ printf("%s\n", atom_format(qfmt, atom));
q = p = meta->IUSE;
buf[0] = '\0';
@@ -654,7 +654,7 @@ quse_results_cb(tree_pkg_ctx *pkg_ctx, void *priv)
free(us.retv);
free(us.argv);
} else {
- printf("%s: %s\n", atom_format(qfmt, atom, 0), v);
+ printf("%s: %s\n", atom_format(qfmt, atom), v);
}
}
diff --git a/tests/qatom/dotest b/tests/qatom/dotest
index d6b4943..0d04f40 100755
--- a/tests/qatom/dotest
+++ b/tests/qatom/dotest
@@ -23,14 +23,14 @@ test l01 "<unset> pkg <unset>" "pkg"
test l02 "cat pkg <unset>" "cat/pkg"
test l03 "cat pkg 123" "cat/pkg-123"
test l04 "cat pkg 123 r4" "cat/pkg-123-r4"
-test l05 "cat pkg 123 r4 :5" "cat/pkg-123-r4:5"
-test l06 "cat pkg 123 :5" "cat/pkg-123:5"
+test l05 "cat pkg 123 r4 5" "cat/pkg-123-r4:5"
+test l06 "cat pkg 123 5" "cat/pkg-123:5"
test l07 "cat pkg 123 >=" ">=cat/pkg-123"
test l07 "cat pkg 123 = *" "=cat/pkg-123*"
# Explicit format.
test f01 "cat" -F '%{CATEGORY}' "cat/pkg"
-test f19 "cat/" -F '%[CATEGORY]' "cat/pkg"
+test f19 "cat" -F '%[CATEGORY]' "cat/pkg"
test f02 "<unset>" -F '%{CATEGORY}' "pkg"
test f03 "" -F '%[CATEGORY]' "pkg"
test f04 "cat" -F '%{CATEGORY}' "cat/pkg-123-r4:5"
@@ -58,6 +58,12 @@ test f17 "games-rpg eschalon-book-1-demo 106 r1" \
"games-rpg/eschalon-book-1-demo-106-r1"
test f18 "bla" -F 'bla' "cat/pkg-c" # bug #687416
test f19 ":pkg-c-1.4" -F ':%{PN}-1.4' "cat/pkg-c" # bug #687416
+# Joining format.
+test f20 "cat/pkg" -F '%[CATEGORY]%[PF]' \
+ "cat/pkg"
+test f21 "pkg-123-r4:5::repo" \
+ -F '%[PF]%[SLOT]%[REPO]' \
+ "cat/pkg-123-r4:5::repo"
# Comparison tests
test c01 "cat/pkg-123-r3 == pkg" \
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2019-06-13 18:15 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-13 18:15 [gentoo-commits] proj/portage-utils:master commit in: tests/qatom/, /, libq/ Fabian Groffen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox