From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id 0E11MA4tQ2GpdwEAgWs5BA (envelope-from ) for ; Thu, 16 Sep 2021 13:39:58 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id oKgXLA4tQ2EVegAAbx9fmQ (envelope-from ) for ; Thu, 16 Sep 2021 11:39:58 +0000 Received: from mail.notmuchmail.org (nmbug.tethera.net [IPv6:2607:5300:201:3100::1657]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 27C9916AD1 for ; Thu, 16 Sep 2021 13:39:58 +0200 (CEST) Received: from nmbug.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id D904326C24; Thu, 16 Sep 2021 07:39:46 -0400 (EDT) Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by mail.notmuchmail.org (Postfix) with ESMTPS id 00EEF20646 for ; Thu, 16 Sep 2021 06:25:22 -0400 (EDT) Received: by mail-ed1-x530.google.com with SMTP id h17so14861721edj.6 for ; Thu, 16 Sep 2021 03:25:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rammhold-de.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2UlQlaNfacxf6o5jP04XzsYLvPRbdBjkjulWeqEaW3E=; b=TmMKMMPdYvsDSvdL1BYgJlMEMhE3424B66/cI37P6nkFV/ZJVKWfIH8JWQsvDGh1G/ 2wco25Br9h54G+RQTdBWod5x4swD+xmrCMzfv/t9PV4/pLG5k5S0GMGHCa0I0Ml/DIdR BiUypPSkJL8mvPXimABun1kjsaMBCzhhrJDA2MUpFp1/W9ljolX84X2+NP5COiMfoGLg veoWPiodFl2LxI9bET5BAgZCIsreKYN8kZ882g6zcaFKb4tXsEa0+kIZnb8cLgHXJmFc 8SbW5FV95j8WC/wLM27Ki5pGVWazW345rT7eD0ZTYLy4TDS1K5C1MjVYNYMsq1fWafv7 Siog== 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=2UlQlaNfacxf6o5jP04XzsYLvPRbdBjkjulWeqEaW3E=; b=QsgAGMP2XN2xccLKCD4TFEIukn9tieHVZYqFR7kxnm60eOBKZfXySOtyslywmdjhkc bB2UkYchSM59UtOrv0F0XgIcUsw8jli7zOyzng0GtEITBEQjOkU+GJJONxcLPNzzKsNI zYPBdcNY2KCSSXJHfYJ2w517ABEz7WYAo0gRerAUwlSYOeYdsbkGvDC5RvuJZo9b1J3o zdqU6HOecGZ21Gk6nk9MkYA+Nkfyn5MOOQWn/ZIxtmW8BKk+YLkExPGEtHSi6DEtNpmc RiH+1twedsewSx2fhyoOm1cXWz9Udn0SFazVl+yZYHcJf+CEJhx5EIhIgPPCABHucpI2 kW7g== X-Gm-Message-State: AOAM532Id/VhoU19jNt92VY2ccvY2bVo5HXPnC3ijKP11rMqcqoNp7mM C2yz8DOvsIT8mTVOrXOBC5TYLRW2alkTcA== X-Google-Smtp-Source: ABdhPJxrPHcODYFIiX1e4q6o7HEwqrN4nnUt17c8K69j1gNh6aztnXshMEV210k/w4wg/A9Buz7k8A== X-Received: by 2002:a17:906:aeda:: with SMTP id me26mr5507705ejb.83.1631787921226; Thu, 16 Sep 2021 03:25:21 -0700 (PDT) Received: from localhost ([2a00:e67:5c9:a:2e15:c474:2ef7:bc26]) by smtp.gmail.com with ESMTPSA id k6sm1185047edv.77.2021.09.16.03.25.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Sep 2021 03:25:20 -0700 (PDT) From: andreas@rammhold.de To: notmuch@notmuchmail.org Subject: [RFC 1/2] lib/config: introduce notmuch_config_values_from_string function Date: Thu, 16 Sep 2021 12:25:16 +0200 Message-Id: <20210916102517.1744389-2-andreas@rammhold.de> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210916102517.1744389-1-andreas@rammhold.de> References: <20210916102517.1744389-1-andreas@rammhold.de> MIME-Version: 1.0 X-MailFrom: andreas@rammhold.de X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0 Message-ID-Hash: LEQQSQJ6Q23VG6UKFOHBRNWMJFIOX552 X-Message-ID-Hash: LEQQSQJ6Q23VG6UKFOHBRNWMJFIOX552 X-Mailman-Approved-At: Thu, 16 Sep 2021 11:39:43 -0400 CC: Andreas Rammhold X-Mailman-Version: 3.2.1 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1631792398; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=42NcJc5IzmcN2DmVOTDwtsJ/qkQRzzI+VGLwMWDJCiY=; b=TCmAvJ2h5+xC8klWgISz/KBUYh73e6RX6mVDB0fj3YKkSnCOyWlMM3a1jAPoFbe8QMdXuN MbmQ8xKJEE85d9LY20QjwwHdKShcrbgrVe+hGocBMcDbw2KAgl6oBeAtfBHV8Gk0dRqkU6 0+Q0GW1vrFwt0bbnpGL37Z86//qQQTBYIEZF7tPTrqEts3KdEEcnFaPsad3IC1WpQg438W 7DuZQJ5zJWymp6JW8qZRceD83xTfHiWA64l3SjpT74OdsIMmG0+GeFiItHScyK3HGmri7Z dthCuov/y3oey1+w/GtDcDR2EAAR1Ua2vdKRlQLB0cQYd9gN6fsNwVYgGUK+3Q== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1631792398; a=rsa-sha256; cv=none; b=dIkMt8raM5CzcmWDP1YIOpxs/qctODJGkBrAKxhB8ZMgxUldt56nsZaocDIuzg1MYEVW7X ODlN7s3452wWx7UdFaL8ElqtFCsW2E8tQmU1+Ln6LvOqq21kQfrTR6TuXDyalv3TyHNb5R 9JlqcLmFVqlhF0j1UEV/Zcbd4E/n8ne+69QhXA3ZpGXBo7JXeUR2q1ycS6x8dEnoYAKoMo CskqgEvhc6mAPw7nwcGAH470l/AgHfotU70E4WzPD/JKfkK4d7POqtN2r8kNpd4tLYULmf ML0WCvvMWQawZqfBfUyf1OtwFbtHlApvtvI2gHlmPV+OKZO4hYab6KbbfDj3bQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=rammhold-de.20210112.gappssmtp.com header.s=20210112 header.b=TmMKMMPd; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2607:5300:201:3100::1657 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Spam-Score: 1.36 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=rammhold-de.20210112.gappssmtp.com header.s=20210112 header.b=TmMKMMPd; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2607:5300:201:3100::1657 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Queue-Id: 27C9916AD1 X-Spam-Score: 1.36 X-Migadu-Scanner: scn1.migadu.com X-TUID: 113AH34Cv0Es From: Andreas Rammhold This factors out the code required to initialize a notmuch_config_values_t from a string into a dedicated function. By exposing this function we can allow consumers (such as notmuch-new(1)) to customize certain configuration values via command line flags. --- lib/config.cc | 12 +++++++++++- lib/notmuch.h | 14 ++++++++++++++ test/T590-libconfig.sh | 22 ++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/lib/config.cc b/lib/config.cc index 8775b00a..195483a6 100644 --- a/lib/config.cc +++ b/lib/config.cc @@ -280,6 +280,16 @@ notmuch_config_get_values (notmuch_database_t *notmuch, notmuch_config_key_t key notmuch_config_values_t * notmuch_config_get_values_string (notmuch_database_t *notmuch, const char *key_str) +{ + const char * val = _notmuch_string_map_get (notmuch->config, key_str); + if (! val) + return NULL; + + return notmuch_config_values_from_string (notmuch, val); +} + +notmuch_config_values_t * +notmuch_config_values_from_string (notmuch_database_t *notmuch, const char *val) { notmuch_config_values_t *values = NULL; bool ok = false; @@ -290,7 +300,7 @@ notmuch_config_get_values_string (notmuch_database_t *notmuch, const char *key_s values->children = talloc_new (values); - values->string = _notmuch_string_map_get (notmuch->config, key_str); + values->string = val; if (! values->string) goto DONE; diff --git a/lib/notmuch.h b/lib/notmuch.h index 546643e8..59dc9dae 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -2608,6 +2608,20 @@ notmuch_config_get_values (notmuch_database_t *notmuch, notmuch_config_key_t key notmuch_config_values_t * notmuch_config_get_values_string (notmuch_database_t *notmuch, const char *key); + +/** + * Returns an iterator for a ';'-delimited list of configuration values + * + * @param[in] notmuch database + * @param[in] val configuration value + * + * @since libnotmuch FIXME (notmuch FIXME) + * + * @retval NULL in case of error. + */ +notmuch_config_values_t * +notmuch_config_values_from_string (notmuch_database_t *notmuch, const char* val); + /** * Is the given 'config_values' iterator pointing at a valid element. * diff --git a/test/T590-libconfig.sh b/test/T590-libconfig.sh index 59b82a6f..3df2ffec 100755 --- a/test/T590-libconfig.sh +++ b/test/T590-libconfig.sh @@ -295,6 +295,28 @@ EOF test_expect_equal_file EXPECTED OUTPUT restore_database +test_begin_subtest "notmuch_config_values_from_string" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} ${NOTMUCH_CONFIG} %NULL% +{ + notmuch_config_values_t *values = notmuch_config_values_from_string (db, "x;y;z"); + for (notmuch_config_values_start (values); + notmuch_config_values_valid (values); + notmuch_config_values_move_to_next (values)) + { + puts (notmuch_config_values_get (values)); + } +} +EOF +cat <<'EOF' >EXPECTED +== stdout == +x +y +z +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT +restore_database + test_begin_subtest "notmuch_config_get_values (restart)" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} ${NOTMUCH_CONFIG} %NULL% { -- 2.32.0