From patchwork Sat Mar 26 15:54:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jelle van der Waa X-Patchwork-Id: 2054 Return-Path: Delivered-To: patchwork@archlinux.org Received: from mail.archlinux.org [95.216.189.61] by patchwork.archlinux.org with IMAP (fetchmail-6.4.29) for (single-drop); Sat, 26 Mar 2022 15:54:42 +0000 (UTC) Received: from mail.archlinux.org by mail.archlinux.org with LMTP id uGrJCUI3P2JWkgEAK+/4rw (envelope-from ) for ; Sat, 26 Mar 2022 15:54:42 +0000 Received: from lists.archlinux.org (lists.archlinux.org [IPv6:2a01:4f9:c010:9eb4::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail.archlinux.org (Postfix) with ESMTPS id 707A1E61E0F; Sat, 26 Mar 2022 15:54:41 +0000 (UTC) Received: from lists.archlinux.org (localhost [IPv6:::1]) by lists.archlinux.org (Postfix) with ESMTP id 92B05E9AB8B; Sat, 26 Mar 2022 15:54:32 +0000 (UTC) X-Original-To: pacman-dev@lists.archlinux.org Delivered-To: pacman-dev@lists.archlinux.org Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by lists.archlinux.org (Postfix) with ESMTPS id 8858AE9AB52 for ; Sat, 26 Mar 2022 15:54:30 +0000 (UTC) Received: by mail-ej1-x62f.google.com with SMTP id lr4so12265568ejb.11 for ; Sat, 26 Mar 2022 08:54:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vdwaa-nl.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Jvmfu0fskuGv8PxtOj3bDZ8S88pktI+GrQ+HLpqchX4=; b=vHHiax/APjeZWe0vof9tOxhAqRgcqwyEZcdL/rWyzItp9pKWCz1g7yqwiMZI187kWp fTEYjwiFkyba8xnpAQ4R90wBUbneqzvDVPXzvbPg5lmVwvQGiw8UcfADhl10Q95XL/WV 7A7p/i8sjgwuTPtRPjI4cTMZ3pwxmc+lLZ7xFjjp8rXqgE2p6pYYJny6R4jQO7e5ETHB zmtOy9tyEE00EpgGzcqpVs8okv9/fAp/HhLECtMj/0yY60YnIesbYD7ueZ5XGYNL5PC9 VAiFJ3Ofh2RWTPoSdz34EnIUNsT8GkSYmxcGEfNgxXlJdIkv1aU+SDZEfPocTtJUbv1s OLgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Jvmfu0fskuGv8PxtOj3bDZ8S88pktI+GrQ+HLpqchX4=; b=tXAh3uXA7WlX+pT5a2L6jHyAQPwauonkoK7CC359SXbxOohQbCXYCmQQzV3vZMwL58 HxwHAodOW+bL5GqsO0KO79k5oDViuX5Ki9BqZQpuvAnEbKfH3G3rLxSGSzJ+mlzdDbCw AZEHAjf08XG4YUONh5F/mxTEz6vADSXZ6xZXuVJx7FtAyQ9uHtPWZ52XYnx+xZOR9l0O WhORYtilYE3LaqyzmNs7qlBff/QCOunfYYuPlOx3n4j5d889hKOp3I4htn0RoUkoLEq9 86h4shslc69KnTCnzUqd/zD88HPGapf0GzGM9dW5FkJysOCSyq0s+O7oWmiIyNs6Mo4H 5YXQ== X-Gm-Message-State: AOAM532TuCMJIKcJViE3nHwG9MMTGAQmBz7nMbte1+6p5CjRwPmkjqt7 qhfnT6G9iaMjJHG1TMIxPW7mNeDFNd5NB5H//RE= X-Google-Smtp-Source: ABdhPJxgq9VZ+FA+46ZDLv8N64IObX83M8JZCwngcAOKPY7zRKsnXZ2dcn0GdJBoc/zKxwWm3rI8vw== X-Received: by 2002:a17:906:9b95:b0:6e0:6f6b:997 with SMTP id dd21-20020a1709069b9500b006e06f6b0997mr17070780ejc.367.1648310069756; Sat, 26 Mar 2022 08:54:29 -0700 (PDT) Received: from localhost.localdomain (83-84-17-34.cable.dynamic.v4.ziggo.nl. [83.84.17.34]) by smtp.gmail.com with ESMTPSA id q16-20020a170906145000b006bdaf981589sm3641463ejc.81.2022.03.26.08.54.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Mar 2022 08:54:29 -0700 (PDT) From: Jelle van der Waa X-Google-Original-From: Jelle van der Waa To: pacman-dev@lists.archlinux.org Cc: Jelle van der Waa Subject: [PATCH 3/3] util.c: extend --print-format with %C, %D, %M Date: Sat, 26 Mar 2022 16:54:22 +0100 Message-Id: <20220326155422.28555-4-jelle@archlinux.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220326155422.28555-1-jelle@archlinux.org> References: <20220326155422.28555-1-jelle@archlinux.org> MIME-Version: 1.0 X-BeenThere: pacman-dev@lists.archlinux.org X-Mailman-Version: 2.1.39 Precedence: list List-Id: Discussion list for pacman development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: pacman-dev-bounces@lists.archlinux.org Sender: "pacman-dev" Authentication-Results: mail.archlinux.org; dkim=pass header.d=vdwaa-nl.20210112.gappssmtp.com header.s=20210112 header.b="vHHiax/A"; dmarc=none; spf=pass (mail.archlinux.org: domain of pacman-dev-bounces@lists.archlinux.org designates 2a01:4f9:c010:9eb4::1 as permitted sender) smtp.mailfrom=pacman-dev-bounces@lists.archlinux.org X-Rspamd-Queue-Id: 707A1E61E0F X-Spamd-Result: default: False [-0.91 / 15.00]; RCVD_DKIM_ARC_DNSWL_MED(-0.50)[]; R_MISSING_CHARSET(0.50)[]; MAILLIST(-0.20)[mailman]; R_DKIM_ALLOW(-0.20)[vdwaa-nl.20210112.gappssmtp.com:s=20210112]; RCVD_IN_DNSWL_MED(-0.20)[2a01:4f9:c010:9eb4::1:from]; R_SPF_ALLOW(-0.20)[+ip6:2a01:4f9:c010:9eb4::1:c]; MIME_GOOD(-0.10)[text/plain]; HAS_LIST_UNSUB(-0.01)[]; FROM_HAS_DN(0.00)[]; RCVD_COUNT_FIVE(0.00)[5]; RCVD_VIA_SMTP_AUTH(0.00)[]; DMARC_NA(0.00)[vdwaa.nl]; PREVIOUSLY_DELIVERED(0.00)[pacman-dev@lists.archlinux.org]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::62f:received]; ARC_NA(0.00)[]; ASN(0.00)[asn:24940, ipnet:2a01:4f9::/32, country:DE]; NEURAL_HAM(-0.00)[-1.000]; DKIM_TRACE(0.00)[vdwaa-nl.20210112.gappssmtp.com:+]; TO_DN_SOME(0.00)[]; FROM_NEQ_ENVFROM(0.00)[jelle@vdwaa.nl,pacman-dev-bounces@lists.archlinux.org]; RCPT_COUNT_TWO(0.00)[2]; MIME_TRACE(0.00)[0:+]; RECEIVED_SPAMHAUS_PBL(0.00)[83.84.17.34:received]; RCVD_TLS_LAST(0.00)[]; FORGED_SENDER_MAILLIST(0.00)[] X-Rspamd-Server: mail.archlinux.org From: Jelle van der Waa Extend print-format with checkdepends, depends and makedepends. Signed-off-by: Jelle van der Waa --- doc/pacman.8.asciidoc | 3 ++- src/pacman/util.c | 49 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/doc/pacman.8.asciidoc b/doc/pacman.8.asciidoc index 8a9294fc..2040f98d 100644 --- a/doc/pacman.8.asciidoc +++ b/doc/pacman.8.asciidoc @@ -239,7 +239,8 @@ Transaction Options (apply to '-S', '-R' and '-U') builddate, "%d" for description, "%e" for pkgbase, "%f" for filename, "%g" for base64 encoded PGP signature, "%h" for sha256sum, "%n" for pkgname, "%p" for packager, "%v" for pkgver, "%l" for location, "%r" - for repository, and "%s" for size. + for repository, "%s" for size, "%C" for checkdepends, "%D" for depends + and "%M" for makedepends. Implies '\--print'. diff --git a/src/pacman/util.c b/src/pacman/util.c index 519765f1..cae024e4 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -405,6 +405,28 @@ char *strreplace(const char *str, const char *needle, const char *replace) return newstr; } +static char *concat_alpm_depends(alpm_list_t *lst) +{ + char *depends = NULL; + char *tmp = NULL; + for(alpm_list_t *i = lst; i; i = alpm_list_next(i)) { + alpm_depend_t *dep = i->data; + char *depstring = alpm_dep_compute_string(dep); + if(tmp) { + asprintf(&depends, "%s %s", tmp, depstring); + free(tmp); + } else { + asprintf(&depends, "%s", depstring); + } + tmp = depends; + free(depstring); + } + if(!depends) { + asprintf(&depends, "%s", ""); + } + return depends; +} + static size_t string_length(const char *s) { int len; @@ -1219,6 +1241,33 @@ void print_packages(const alpm_list_t *packages) } /* %u : url */ VAL_FROM_FORMAT_STR(temp, "%u", alpm_pkg_get_url) + /* %C : checkdepends */ + if(strstr(temp, "%C")) { + alpm_list_t *lst = alpm_pkg_get_checkdepends(pkg); + char *depends = concat_alpm_depends(lst); + string = strreplace(temp, "%C", lst ? depends : ""); + free(depends); + free(temp); + temp = string; + } + /* %D : depends */ + if(strstr(temp, "%D")) { + alpm_list_t *lst = alpm_pkg_get_depends(pkg); + char *depends = concat_alpm_depends(lst); + string = strreplace(temp, "%D", depends); + free(depends); + free(temp); + temp = string; + } + /* %M : makedepends */ + if(strstr(temp, "%M")) { + alpm_list_t *lst = alpm_pkg_get_makedepends(pkg); + char *depends = concat_alpm_depends(lst); + string = strreplace(temp, "%M", depends); + free(depends); + free(temp); + temp = string; + } printf("%s\n", string); free(string); }