Adds the %a format specifier to allow printing of a target's arch when using --print-format. Signed-off-by: Jonathan Sköld <arch@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