From: Mark Walters <markwalters1009@gmail.com>
To: notmuch@notmuchmail.org
Subject: [Patch v8 1/6] cli: command line parsing: allow default for keyword options
Date: Sat, 16 Jun 2012 11:21:42 +0100 [thread overview]
Message-ID: <1339842107-10632-2-git-send-email-markwalters1009@gmail.com> (raw)
In-Reply-To: <1339842107-10632-1-git-send-email-markwalters1009@gmail.com>
This changes the parsing for "keyword" options so that if the option
is specified with no argument the argument is parsed as if it were
passed an empty string. This make it easier to add options to existing
boolean arguments (the existing --option can default to TRUE).
---
command-line-arguments.c | 17 +++++++++++++----
1 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/command-line-arguments.c b/command-line-arguments.c
index 76b185f..b0a0dab 100644
--- a/command-line-arguments.c
+++ b/command-line-arguments.c
@@ -11,10 +11,15 @@
*/
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 */
+ arg_str = "";
+ }
+
while (keywords->name) {
if (strcmp (arg_str, keywords->name) == 0) {
if (arg_desc->output_var) {
@@ -24,7 +29,10 @@ _process_keyword_arg (const notmuch_opt_desc_t *arg_desc, const char *arg_str) {
}
keywords++;
}
- fprintf (stderr, "unknown keyword: %s\n", arg_str);
+ if (next != 0)
+ fprintf (stderr, "unknown keyword: %s\n", arg_str);
+ else
+ fprintf (stderr, "option %s needs a keyword\n", arg_desc->name);
return FALSE;
}
@@ -99,7 +107,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 +119,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
next prev parent reply other threads:[~2012-06-16 10:22 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-16 10:21 [Patch v8 0/6] Allow JSON to use non-entire thread, and use for elide Mark Walters
2012-06-16 10:21 ` Mark Walters [this message]
2012-06-16 10:21 ` [Patch v8 2/6] cli: Let json output "null" messages for non --entire-thread Mark Walters
2012-06-23 15:19 ` Austin Clements
2012-06-16 10:21 ` [Patch v8 3/6] cli: make --entire-thread=false work for format=json Mark Walters
2012-06-16 10:21 ` [Patch v8 4/6] Update devel/schemata for --entire-thread=false Mark Walters
2012-06-23 15:20 ` Austin Clements
2012-06-30 9:26 ` [PATCH] Minor correction to devel/schemata Mark Walters
2012-06-30 11:14 ` [Patch v2] " Mark Walters
2012-06-30 18:43 ` Austin Clements
2012-06-16 10:21 ` [Patch v8 5/6] emacs: make elide messages use notmuch-show for omitting messages Mark Walters
2012-06-16 10:21 ` [Patch v8 6/6] cli: notmuch-show.c fix whitespace error Mark Walters
2012-06-24 18:02 ` [Patch v8 0/6] Allow JSON to use non-entire thread, and use for elide David Bremner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1339842107-10632-2-git-send-email-markwalters1009@gmail.com \
--to=markwalters1009@gmail.com \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).