diff options
author | Johan Herland <johan@herland.net> | 2010-02-25 01:48:11 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-02-24 19:12:48 -0800 |
commit | 43a61b841d261fe51ac64b55d654677b0cd93ad9 (patch) | |
tree | f38eb3bdbc4cbaa8896090c156923bdd3ac209cd | |
parent | e73bbd96c6e9ce11a101dac03402d0f718a1bd23 (diff) | |
download | git-43a61b841d261fe51ac64b55d654677b0cd93ad9.tar.gz git-43a61b841d261fe51ac64b55d654677b0cd93ad9.tar.xz |
builtin-notes: Minor (mostly parse_options-related) fixes
Use PARSE_OPT_NONEG to disallow --no-<option> for message, file,
reedit-message and reuse-message. for which --no-<option> does not make
sense. This also simplifies the code in the option-handling callbacks.
Also, use strbuf_addch(... '\n') instead of strbuf_addstr(... "\n") in
couple of places.
Finally, improve the short-help by dividing the options into two
OPT_GROUPs.
Suggested-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Acked-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin-notes.c | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/builtin-notes.c b/builtin-notes.c index 123ecad83..feb710ac4 100644 --- a/builtin-notes.c +++ b/builtin-notes.c @@ -171,12 +171,9 @@ static int parse_msg_arg(const struct option *opt, const char *arg, int unset) { struct msg_arg *msg = opt->value; - if (!arg) - return -1; - strbuf_grow(&(msg->buf), strlen(arg) + 2); if (msg->buf.len) - strbuf_addstr(&(msg->buf), "\n"); + strbuf_addch(&(msg->buf), '\n'); strbuf_addstr(&(msg->buf), arg); stripspace(&(msg->buf), 0); @@ -188,11 +185,8 @@ static int parse_file_arg(const struct option *opt, const char *arg, int unset) { struct msg_arg *msg = opt->value; - if (!arg) - return -1; - if (msg->buf.len) - strbuf_addstr(&(msg->buf), "\n"); + strbuf_addch(&(msg->buf), '\n'); if (!strcmp(arg, "-")) { if (strbuf_read(&(msg->buf), 0, 1024) < 0) die_errno("cannot read '%s'", arg); @@ -212,11 +206,8 @@ static int parse_reuse_arg(const struct option *opt, const char *arg, int unset) enum object_type type; unsigned long len; - if (!arg) - return -1; - if (msg->buf.len) - strbuf_addstr(&(msg->buf), "\n"); + strbuf_addch(&(msg->buf), '\n'); if (get_sha1(arg, object)) die("Failed to resolve '%s' as a valid ref.", arg); @@ -291,15 +282,20 @@ int cmd_notes(int argc, const char **argv, const char *prefix) int given_object = 0, i = 1, retval = 0; struct msg_arg msg = { 0, 0, STRBUF_INIT }; struct option options[] = { - OPT_GROUP("Notes options"), - OPT_CALLBACK('m', "message", &msg, "MSG", - "note contents as a string", parse_msg_arg), - OPT_CALLBACK('F', "file", &msg, "FILE", - "note contents in a file", parse_file_arg), - OPT_CALLBACK('c', "reedit-message", &msg, "OBJECT", - "reuse and edit specified note object", parse_reedit_arg), - OPT_CALLBACK('C', "reuse-message", &msg, "OBJECT", - "reuse specified note object", parse_reuse_arg), + OPT_GROUP("Notes contents options"), + { OPTION_CALLBACK, 'm', "message", &msg, "MSG", + "note contents as a string", PARSE_OPT_NONEG, + parse_msg_arg}, + { OPTION_CALLBACK, 'F', "file", &msg, "FILE", + "note contents in a file", PARSE_OPT_NONEG, + parse_file_arg}, + { OPTION_CALLBACK, 'c', "reedit-message", &msg, "OBJECT", + "reuse and edit specified note object", PARSE_OPT_NONEG, + parse_reedit_arg}, + { OPTION_CALLBACK, 'C', "reuse-message", &msg, "OBJECT", + "reuse specified note object", PARSE_OPT_NONEG, + parse_reuse_arg}, + OPT_GROUP("Other options"), OPT_BOOLEAN('f', "force", &force, "replace existing notes"), OPT_END() }; |