Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 63C80429E28 for ; Sat, 26 May 2012 08:55:18 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 0.201 X-Spam-Level: X-Spam-Status: No, score=0.201 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_ENVFROM_END_DIGIT=1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 61sNvWWrWFcE for ; Sat, 26 May 2012 08:55:17 -0700 (PDT) Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id 1725D429E3A for ; Sat, 26 May 2012 08:55:07 -0700 (PDT) Received: by wibhj6 with SMTP id hj6so356882wib.2 for ; Sat, 26 May 2012 08:55:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=Vp6YHrhfdMs2BCMDzGGIScZqEe17XVCJObHCqKDujxI=; b=0qqiO9m4ZZikjTB0pkhTi3tR7mUM0/o2qu+DQc9sgWdkW6svNHBXJmNuIpnckhA51O YuC7NT21BJHcG68ot1BByQs/2c144s3K0nL+mnHOckoW93BcOPXd7LtFfmpTokciqTef UGHfcSqy4MP4gxr7UqfLHJpzSxJE8GaiUzDsP0VUP+XUo7T2TKGtXTCwpQsGz3AbiiXA 7OxviXgiUlXzlO3mEWT/TfMigw/fL3qsdI+YM2kk3TgJfsfWnHi/POJyxx7eH/CqS0Zs 1fTO++nqspZuuRsdjC8mEB4aumejHPJFRVmBwpAH6kTFjXvbZSDBw/bQtgiUkyxDhxlo n18A== Received: by 10.180.97.66 with SMTP id dy2mr4245117wib.0.1338047705504; Sat, 26 May 2012 08:55:05 -0700 (PDT) Received: from localhost (94-192-233-223.zone6.bethere.co.uk. [94.192.233.223]) by mx.google.com with ESMTPS id dg2sm9281682wib.4.2012.05.26.08.55.04 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 26 May 2012 08:55:04 -0700 (PDT) From: Mark Walters To: notmuch@notmuchmail.org Subject: [PATCH v5 1/5] cli: command line parsing: allow default for keyword options Date: Sat, 26 May 2012 16:54:50 +0100 Message-Id: <1338047694-32548-2-git-send-email-markwalters1009@gmail.com> X-Mailer: git-send-email 1.7.9.1 In-Reply-To: <1338047694-32548-1-git-send-email-markwalters1009@gmail.com> References: <1338047694-32548-1-git-send-email-markwalters1009@gmail.com> X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 May 2012 15:55:19 -0000 This changes the parsing for "keyword" options so that if the option is specified with no argument the first possible argument is chosen. This make it easier to add options to existing boolean arguments (the existing --option can default to TRUE). --- command-line-arguments.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/command-line-arguments.c b/command-line-arguments.c index 76b185f..d40c7e6 100644 --- a/command-line-arguments.c +++ b/command-line-arguments.c @@ -11,10 +11,16 @@ */ static notmuch_bool_t -_process_keyword_arg (const notmuch_opt_desc_t *arg_desc, const char *arg_str) { +_process_keyword_arg (const notmuch_opt_desc_t *arg_desc, char next, const char *arg_str) { const notmuch_keyword_t *keywords = arg_desc->keywords; + if (next == 0) { +/* No keyword given so return first option as default */ + *((int *)arg_desc->output_var) = keywords->value; + return TRUE; + } + while (keywords->name) { if (strcmp (arg_str, keywords->name) == 0) { if (arg_desc->output_var) { @@ -99,7 +105,8 @@ parse_option (const char *arg, */ if (next != '=' && next != ':' && next != 0) return FALSE; if (next == 0) { - if (try->opt_type != NOTMUCH_OPT_BOOLEAN) + if (try->opt_type != NOTMUCH_OPT_BOOLEAN && + try->opt_type != NOTMUCH_OPT_KEYWORD) return FALSE; } else { if (value[0] == 0) return FALSE; @@ -110,7 +117,7 @@ parse_option (const char *arg, switch (try->opt_type) { case NOTMUCH_OPT_KEYWORD: - return _process_keyword_arg (try, value); + return _process_keyword_arg (try, next, value); break; case NOTMUCH_OPT_BOOLEAN: return _process_boolean_arg (try, next, value); -- 1.7.9.1