From patchwork Thu Feb 8 08:36:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans Dedecker X-Patchwork-Id: 870775 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=65.50.211.133; helo=bombadil.infradead.org; envelope-from=lede-dev-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="EfrW6Coq"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="cWpKNcQq"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zcWm83Vf4z9sNx for ; Thu, 8 Feb 2018 19:37:44 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Subject:Message-Id: Date:To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=OQI34QwUF06H5rmHCyv8JMr/15DAsbRl0bQyUQGI0VE=; b=EfrW6CoqdJsM4/ swKtwXQnbdtTNGn5dSbqgmEPbN+kcLrwd5Sg3+hEIZ5e7PhX7PmwRAxBJM4RSb2AlzGjS+a4Rx3Jz zt+YHJ98XjfJVYqDC/nmn3U6UixuebBQPVE9IJktJKaAWkVSIRp1Xyjx97QuX6P7WAKY9xpMjA+UC ac5OdP0nZ6+WccjMm+aR2Rc4RQkWHV3gQwC/LkFcqFDr2MRB6ddSVg2T+UEhgTOe3FaQREHQelG9d 1tcjESkk8EZAHBToasH8pnKioway22Lu7/hYv0fU/IOW5R6zr3kp22Jhvmy2RtM9+2s6z0ChTxv++ My15n0gh3BGQyPvXkrjQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.89 #1 (Red Hat Linux)) id 1ejhi6-0005x8-U8; Thu, 08 Feb 2018 08:37:38 +0000 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1ejhi1-0005wE-Ib for lede-dev@lists.infradead.org; Thu, 08 Feb 2018 08:37:35 +0000 Received: by mail-wm0-x244.google.com with SMTP id t74so7922015wme.3 for ; Thu, 08 Feb 2018 00:37:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=ODhZWQDYO5e87zU7Dws1HXF70zgilUKcoaF5m1d3rgg=; b=cWpKNcQq6VvqZn/k0pPrO0wPQoQBnAKk/t05zPlDYk0P4U9lwSZRXSmrrrw909pqPL ehCrnrisilQ3pOKmIdN3iajJM/ipKPeTFgatmXvzqdwaahruTX4SQQMYa2eTZqVpRmq1 xsHFiJyt3JjQ2dMBK0QHtLM4AJ3xv8CR+hUUaN+LU08mEmbcj4phfsSWtujZkv5+VrXo Iun5bIX6H45oYwM3JxCBPhU55V1OS9o6AjRiDFfkfXrABb9fGepndHIc70abmu6INZCZ cSJe2hZ5F7c7/Jzv5m+eoHyRM+7+aq7TlGnSHivn3s/m3adwEmKrRa1zf0K50E0fXdmb aEwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ODhZWQDYO5e87zU7Dws1HXF70zgilUKcoaF5m1d3rgg=; b=EhyfJaooW0AvfHNc+oD0x6vzUrQojJgVpO8KYi1UsxSrSdXSBG8bLgyGqmjwxX4++Y Elytvp48Cp1++oDjpMoRdCXPkXlSySrabmrNnd2YW57KAitjrBuaQd9Um93AcqQmCDYf Rwp/3xt6Hc0SQjsiP/Gqume70BkJHTybPbZpK2ILQY2Y3s9VCVr3Wr26/v5gqi/J2Su7 DHxLVI5Uuu0vRIP92iSXD4HSr4D3+h29+AY9qv6SCmM+iYtpX92Ok/XW8eEYIXa/n96s gcCqGk4psBCXRZfqhI371jMVKz6qFnsnIqeRgRG1KQXXkdlpZBzo/WRt+mYz4MWgPoDn PFIg== X-Gm-Message-State: APf1xPD+ltX7sWcBVErP/3S1WRt5FWaR8lDed6XR7/Zm7vzpLEz7xate f3YoNe+7humgnMbBhkbLQ/w= X-Google-Smtp-Source: AH8x226xILV3hUSRxC0IBi97mNzrO/acKgPQA0axaU45p+ZFrdwUOqBQ638DPf215FWyjsk/Jjuxew== X-Received: by 10.80.184.77 with SMTP id k13mr429291ede.187.1518079041199; Thu, 08 Feb 2018 00:37:21 -0800 (PST) Received: from linux-5g1g.lan (ptr-fvl7vteb6vjd542m2s0.18120a2.ip6.access.telenet.be. [2a02:1812:1128:fb00:ffc7:aef4:4f01:1990]) by smtp.gmail.com with ESMTPSA id k11sm2325929eda.22.2018.02.08.00.37.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 08 Feb 2018 00:37:20 -0800 (PST) From: Hans Dedecker To: nbd@nbd.name, jo@mein.io, lede-dev@lists.infradead.org Date: Thu, 8 Feb 2018 09:36:45 +0100 Message-Id: <20180208083645.14364-1-dedeckeh@gmail.com> X-Mailer: git-send-email 2.16.1 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -2.0 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2a00:1450:400c:c09:0:0:0:244 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (dedeckeh[at]gmail.com) -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain Subject: [LEDE-DEV] [PATCH libubox v2] sh/jshn.sh: add json_for_each_item() X-BeenThere: lede-dev@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Hans Dedecker MIME-Version: 1.0 Sender: "Lede-dev" Errors-To: lede-dev-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Function usefull to iterate through the different elements of an array or object; the provided callback function is called for each element which is passed the value, key and user provided arguments. For field types different from array or object the callback is called with the retrieved value. Signed-off-by: Hans Dedecker --- v2 : Pass the key as well to the callback function sh/jshn.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/sh/jshn.sh b/sh/jshn.sh index bf76edb..a7b9b0c 100644 --- a/sh/jshn.sh +++ b/sh/jshn.sh @@ -278,3 +278,28 @@ json_is_a() { json_get_type type "$1" [ "$type" = "$2" ] } + +json_for_each_item() { + [ "$#" -ge 2 ] || return 0 + local function="$1"; shift + local target="$1"; shift + local type val + + json_get_type type "$target" + case "$type" in + object|array) + local keys key + json_select "$target" + json_get_keys keys + for key in $keys; do + json_get_var val "$key" + eval "$function \"\$val\" \"\$key\" \"\$@\"" + done + json_select .. + ;; + *) + json_get_var val "$target" + eval "$function \"\$val\" \"\" \"\$@\"" + ;; + esac +}