[PATCH v3] Print the target arch when using the %a format specifier
Jonathan Sköld
arch at skold.dev
Tue Sep 28 21:09:02 UTC 2021
Adds the %a format specifier to allow printing of a target's arch
when using --print-format.
Signed-off-by: Jonathan Sköld <arch at skold.dev>
---
Fixed my commit message now that I know how it works, thanks for
the heads up. Modified the man page. I opted to use the phrase 'arch'
to match the field used in PKGBUILDs. I hope this is not too ambiguous
for users. I also changed the comment in util.c to match this.
---
doc/pacman.8.asciidoc | 5 +++--
src/pacman/util.c | 10 ++++++++++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/doc/pacman.8.asciidoc b/doc/pacman.8.asciidoc
index bb205627..785844ce 100644
--- a/doc/pacman.8.asciidoc
+++ b/doc/pacman.8.asciidoc
@@ -235,8 +235,9 @@ Transaction Options (apply to '-S', '-R' and '-U')
*\--print-format* <format>::
Specify a printf-like format to control the output of the '\--print'
- operation. The possible attributes are: "%n" for pkgname, "%v" for pkgver,
- "%l" for location, "%r" for repository, and "%s" for size. Implies '\--print'.
+ operation. The possible attributes are: "%a" for arch, "%n" for pkgname,
+ "%v" for pkgver, "%l" for location, "%r" for repository, and "%s" for size.
+ Implies '\--print'.
Upgrade Options (apply to '-S' and '-U')[[UO]]
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 5486e7a5..2b2b27ca 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -1146,6 +1146,16 @@ void print_packages(const alpm_list_t *packages)
alpm_pkg_t *pkg = i->data;
char *string = strdup(config->print_format);
char *temp = string;
+ /* %a : arch */
+ if(strstr(temp, "%a")) {
+ const char *arch = alpm_pkg_get_arch(pkg);
+ if(arch == NULL) {
+ arch = "";
+ }
+ string = strreplace(temp, "%a", arch);
+ free(temp);
+ temp = string;
+ }
/* %n : pkgname */
if(strstr(temp, "%n")) {
string = strreplace(temp, "%n", alpm_pkg_get_name(pkg));
--
2.33.0
More information about the pacman-dev
mailing list