From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2 autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 20400 invoked from network); 9 Feb 2023 20:44:01 -0000 Received: from second.openwall.net (193.110.157.125) by inbox.vuxu.org with ESMTPUTF8; 9 Feb 2023 20:44:01 -0000 Received: (qmail 17997 invoked by uid 550); 9 Feb 2023 20:43:58 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 17948 invoked from network); 9 Feb 2023 20:43:57 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=4hX0z0AwmEXut1t67XxnRbHJn3KZi2eyoNjD/R3O0uA=; b=s15V4iznGPYCTG8TMERlyNNIvkOk6XcFq7zbIctojlaAX5LjkBXX8F6YHfLZEiZNmX iyLkXRiuGx/O3kiG0m/wZD2/3KrYmXz4qIWr4oVvEqefK7/+c2ZnznVU/WV9GsoumI9f 6j+41Hu5rc8Ug6yIw/bP1vkhcvxYXesY72nkwew4uAkgZGqrZSQhPHQJegi6B93H0i68 tOCdQ6teOUMg8Vfz8YRrE02LxMdmb9VxL81fZvpoxlBmNu5Sy3E/XM8mfE0jTyc/nhZT e1DRT6V0dtTx8c1iFJXI0/jOPoktDJ7Jd4FDaMgDnt93B137rYyhVJMf2AnghRwAgLp4 HriQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4hX0z0AwmEXut1t67XxnRbHJn3KZi2eyoNjD/R3O0uA=; b=3SYn0FTz+odGkzTLADds+g7Ei2ItvRbkO3Ka//RBMxa2lkFv1iQTUxuekAyGNV9pR8 MFaTS1n2Z52q0vcPouWqiPd/NSh1k4l6OcXtKpvdxUkNQoCSOGRxgygFgGWOW4dKT0SB 6VVCUE9rXw8Arlh/CKpFT2N+K6Ahwm+Xpqa3aZqIiICZ/cjC/J1df9rH7Mx/Kc1MSydh nC7flkPWnjO4vU4galBpEv8XtTHEpDF7URGWrMYAA0bRYFjvw8CRQOKVCKTjaykYhHRL DT8LJ2W7tbLV2GYi3mt8PqQe5WbgZCStYHnANPYjKou+6ULrNkdBfwRGx0elRsuIH+XF zORA== X-Gm-Message-State: AO0yUKV8wrfVvmev10YcNR3Ge2N0UxbVjnqQsKoQU1iK9hHk9xmGYgtD 7/l0v3NOfYOP6g15dGyKUm1iLw== X-Google-Smtp-Source: AK7set9JA06K9hDpX9pKL0wroTRNGMP1I8tB1ymMS/24aeFs74v0F4/bPVsnY9YCCVxZ5pRNdmNCKw== X-Received: by 2002:a05:6000:104:b0:2bf:ae3c:e963 with SMTP id o4-20020a056000010400b002bfae3ce963mr11772462wrx.9.1675975425929; Thu, 09 Feb 2023 12:43:45 -0800 (PST) From: Bartosz Golaszewski To: Rich Felker Cc: musl@lists.openwall.com, Bartosz Golaszewski Date: Thu, 9 Feb 2023 21:43:42 +0100 Message-Id: <20230209204342.643785-1-brgl@bgdev.pl> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [musl] [PATCH] search: provide twalk_r() From: Bartosz Golaszewski Provide a variant of twalk() that allows callers to pass custom user data to it without resorting to global variables. Signed-off-by: Bartosz Golaszewski --- include/search.h | 1 + src/search/twalk_r.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 src/search/twalk_r.c diff --git a/include/search.h b/include/search.h index 02e407e3..95b4cdc2 100644 --- a/include/search.h +++ b/include/search.h @@ -53,6 +53,7 @@ struct qelem { char q_data[1]; }; +void twalk_r(const void *, void (*)(const void *, VISIT, void *), void *); void tdestroy(void *, void (*)(void *)); #endif diff --git a/src/search/twalk_r.c b/src/search/twalk_r.c new file mode 100644 index 00000000..9497273f --- /dev/null +++ b/src/search/twalk_r.c @@ -0,0 +1,24 @@ +#include +#include "tsearch.h" + +static void +walk(const struct node *r, void (*action)(const void *, VISIT, void *), void *data) +{ + if (!r) + return; + + if (r->h == 1) { + action(r, leaf, data); + } else { + action(r, preorder, data); + walk(r->a[0], action, data); + action(r, postorder, data); + walk(r->a[1], action, data); + action(r, endorder, data); + } +} + +void twalk_r(const void *root, void (*action)(const void *, VISIT, void *), void *data) +{ + walk(root, action, data); +} -- 2.37.2