{"thread":{"id":"36119","subject":"[PATCH][GSoC] parse-options: Add OPT_SET_INT_NONEG.","startedAt":"2014-03-11T10:50:16Z","lastAt":"2014-03-12T19:02:10Z","messageCount":6,"participants":["Yuxuan Shui","Duy Nguyen","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"236493","messageId":"1394535016-9424-1-git-send-email-yshuiv7@gmail.com","threadId":"36119","inReplyTo":null,"subject":"[PATCH][GSoC] parse-options: Add OPT_SET_INT_NONEG.","fromName":"Yuxuan Shui","fromEmail":"yshuiv7@gmail.com","sentAt":"2014-03-11T10:50:16Z","receivedAt":"2014-03-11T10:50:16Z","isPatch":true,"sender":{"key":"yshuiv7@gmail.com","avatar":"https://avatars.githubusercontent.com/u/366851?v=4"},"body":"Reference: http://git.github.io/SoC-2014-Microprojects.html\nSigned-off-by: Yuxuan Shui <yshuiv7@gmail.com>\n---\n builtin/fetch.c        |  5 ++---\n builtin/merge.c        |  5 ++---\n builtin/notes.c        | 10 ++++------\n builtin/pack-objects.c | 15 ++++++---------\n builtin/update-index.c | 20 ++++++++------------\n parse-options.h        |  4 ++++\n 6 files changed, 26 insertions(+), 33 deletions(-)\n\ndiff --git a/builtin/fetch.c b/builtin/fetch.c\nindex 55f457c..37c2a9d 100644\n--- a/builtin/fetch.c\n+++ b/builtin/fetch.c\n@@ -97,9 +97,8 @@ static struct option builtin_fetch_options[] = {\n \tOPT_BOOL(0, \"progress\", &progress, N_(\"force progress reporting\")),\n \tOPT_STRING(0, \"depth\", &depth, N_(\"depth\"),\n \t\t   N_(\"deepen history of shallow clone\")),\n-\t{ OPTION_SET_INT, 0, \"unshallow\", &unshallow, NULL,\n-\t\t   N_(\"convert to a complete repository\"),\n-\t\t   PARSE_OPT_NONEG | PARSE_OPT_NOARG, NULL, 1 },\n+\tOPT_SET_INT_NONEG(0, \"unshallow\", &unshallow,\n+\t\t   N_(\"convert to a complete repository\"), 1),\n \t{ OPTION_STRING, 0, \"submodule-prefix\", &submodule_prefix, N_(\"dir\"),\n \t\t   N_(\"prepend this to submodule path output\"), PARSE_OPT_HIDDEN },\n \t{ OPTION_STRING, 0, \"recurse-submodules-default\",\ndiff --git a/builtin/merge.c b/builtin/merge.c\nindex f0cf120..cf9a157 100644\n--- a/builtin/merge.c\n+++ b/builtin/merge.c\n@@ -203,9 +203,8 @@ static struct option builtin_merge_options[] = {\n \tOPT_BOOL('e', \"edit\", &option_edit,\n \t\tN_(\"edit message before committing\")),\n \tOPT_SET_INT(0, \"ff\", &fast_forward, N_(\"allow fast-forward (default)\"), FF_ALLOW),\n-\t{ OPTION_SET_INT, 0, \"ff-only\", &fast_forward, NULL,\n-\t\tN_(\"abort if fast-forward is not possible\"),\n-\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, FF_ONLY },\n+\tOPT_SET_INT_NONEG(0, \"ff-only\", &fast_forward,\n+\t\tN_(\"abort if fast-forward is not possible\"), FF_ONLY),\n \tOPT_RERERE_AUTOUPDATE(&allow_rerere_auto),\n \tOPT_BOOL(0, \"verify-signatures\", &verify_signatures,\n \t\tN_(\"Verify that the named commit has a valid GPG signature\")),\ndiff --git a/builtin/notes.c b/builtin/notes.c\nindex 2b24d05..02a554d 100644\n--- a/builtin/notes.c\n+++ b/builtin/notes.c\n@@ -739,13 +739,11 @@ static int merge(int argc, const char **argv, const char *prefix)\n \t\t\t   N_(\"resolve notes conflicts using the given strategy \"\n \t\t\t      \"(manual/ours/theirs/union/cat_sort_uniq)\")),\n \t\tOPT_GROUP(N_(\"Committing unmerged notes\")),\n-\t\t{ OPTION_SET_INT, 0, \"commit\", &do_commit, NULL,\n-\t\t\tN_(\"finalize notes merge by committing unmerged notes\"),\n-\t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1},\n+\t\tOPT_SET_INT_NONEG(0, \"commit\", &do_commit,\n+\t\t\tN_(\"finalize notes merge by committing unmerged notes\"), 1),\n \t\tOPT_GROUP(N_(\"Aborting notes merge resolution\")),\n-\t\t{ OPTION_SET_INT, 0, \"abort\", &do_abort, NULL,\n-\t\t\tN_(\"abort notes merge\"),\n-\t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1},\n+\t\tOPT_SET_INT_NONEG(0, \"abort\", &do_abort,\n+\t\t\tN_(\"abort notes merge\"), 1),\n \t\tOPT_END()\n \t};\n \ndiff --git a/builtin/pack-objects.c b/builtin/pack-objects.c\nindex c733379..2e2b12a 100644\n--- a/builtin/pack-objects.c\n+++ b/builtin/pack-objects.c\n@@ -2579,15 +2579,12 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)\n \t\t\t N_(\"do not create an empty pack output\")),\n \t\tOPT_BOOL(0, \"revs\", &use_internal_rev_list,\n \t\t\t N_(\"read revision arguments from standard input\")),\n-\t\t{ OPTION_SET_INT, 0, \"unpacked\", &rev_list_unpacked, NULL,\n-\t\t  N_(\"limit the objects to those that are not yet packed\"),\n-\t\t  PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1 },\n-\t\t{ OPTION_SET_INT, 0, \"all\", &rev_list_all, NULL,\n-\t\t  N_(\"include objects reachable from any reference\"),\n-\t\t  PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1 },\n-\t\t{ OPTION_SET_INT, 0, \"reflog\", &rev_list_reflog, NULL,\n-\t\t  N_(\"include objects referred by reflog entries\"),\n-\t\t  PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1 },\n+\t\tOPT_SET_INT_NONEG(0, \"unpacked\", &rev_list_unpacked,\n+\t\t  N_(\"limit the objects to those that are not yet packed\"), 1),\n+\t\tOPT_SET_INT_NONEG(0, \"all\", &rev_list_all,\n+\t\t  N_(\"include objects reachable from any reference\"), 1),\n+\t\tOPT_SET_INT_NONEG(0, \"reflog\", &rev_list_reflog,\n+\t\t  N_(\"include objects referred by reflog entries\"), 1),\n \t\tOPT_BOOL(0, \"stdout\", &pack_to_stdout,\n \t\t\t N_(\"output pack to stdout\")),\n \t\tOPT_BOOL(0, \"include-tag\", &include_tag,\ndiff --git a/builtin/update-index.c b/builtin/update-index.c\nindex d12ad95..807e853 100644\n--- a/builtin/update-index.c\n+++ b/builtin/update-index.c\n@@ -749,18 +749,14 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)\n \t\t\tN_(\"override the executable bit of the listed files\"),\n \t\t\tPARSE_OPT_NONEG | PARSE_OPT_LITERAL_ARGHELP,\n \t\t\tchmod_callback},\n-\t\t{OPTION_SET_INT, 0, \"assume-unchanged\", &mark_valid_only, NULL,\n-\t\t\tN_(\"mark files as \\\"not changing\\\"\"),\n-\t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, MARK_FLAG},\n-\t\t{OPTION_SET_INT, 0, \"no-assume-unchanged\", &mark_valid_only, NULL,\n-\t\t\tN_(\"clear assumed-unchanged bit\"),\n-\t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, UNMARK_FLAG},\n-\t\t{OPTION_SET_INT, 0, \"skip-worktree\", &mark_skip_worktree_only, NULL,\n-\t\t\tN_(\"mark files as \\\"index-only\\\"\"),\n-\t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, MARK_FLAG},\n-\t\t{OPTION_SET_INT, 0, \"no-skip-worktree\", &mark_skip_worktree_only, NULL,\n-\t\t\tN_(\"clear skip-worktree bit\"),\n-\t\t\tPARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, UNMARK_FLAG},\n+\t\tOPT_SET_INT_NONEG(0, \"assume-unchanged\", &mark_valid_only,\n+\t\t\tN_(\"mark files as \\\"not changing\\\"\"), MARK_FLAG),\n+\t\tOPT_SET_INT_NONEG(0, \"no-assume-unchanged\", &mark_valid_only,\n+\t\t\tN_(\"clear assumed-unchanged bit\"), UNMARK_FLAG),\n+\t\tOPT_SET_INT_NONEG(0, \"skip-worktree\", &mark_skip_worktree_only,\n+\t\t\tN_(\"mark files as \\\"index-only\\\"\"), MARK_FLAG),\n+\t\tOPT_SET_INT_NONEG(0, \"no-skip-worktree\", &mark_skip_worktree_only,\n+\t\t\tN_(\"clear skip-worktree bit\"), UNMARK_FLAG),\n \t\tOPT_SET_INT(0, \"info-only\", &info_only,\n \t\t\tN_(\"add to index only; do not add content to object database\"), 1),\n \t\tOPT_SET_INT(0, \"force-remove\", &force_remove,\ndiff --git a/parse-options.h b/parse-options.h\nindex d670cb9..7d20cf9 100644\n--- a/parse-options.h\n+++ b/parse-options.h\n@@ -125,6 +125,10 @@ struct option {\n \t\t\t\t      (h), PARSE_OPT_NOARG }\n #define OPT_SET_INT(s, l, v, h, i)  { OPTION_SET_INT, (s), (l), (v), NULL, \\\n \t\t\t\t      (h), PARSE_OPT_NOARG, NULL, (i) }\n+#define OPT_SET_INT_NONEG(s, l, v, h, i)  \\\n+\t\t\t\t      { OPTION_SET_INT, (s), (l), (v), NULL, \\\n+\t\t\t\t      (h), PARSE_OPT_NOARG | PARSE_OPT_NONEG, \\\n+\t\t\t\t      NULL, (i) }\n #define OPT_BOOL(s, l, v, h)        OPT_SET_INT(s, l, v, h, 1)\n #define OPT_HIDDEN_BOOL(s, l, v, h) { OPTION_SET_INT, (s), (l), (v), NULL, \\\n \t\t\t\t      (h), PARSE_OPT_NOARG | PARSE_OPT_HIDDEN, NULL, 1}\n-- \n1.9.0\n"},{"id":"236570","messageId":"CACsJy8Dq5QyZdzCtew0qF37qThH8+05iTrD-ZOeBgbEukmCY5Q@mail.gmail.com","threadId":"36119","inReplyTo":"1394535016-9424-1-git-send-email-yshuiv7@gmail.com","subject":"Re: [PATCH][GSoC] parse-options: Add OPT_SET_INT_NONEG.","fromName":"Duy Nguyen","fromEmail":"pclouds@gmail.com","sentAt":"2014-03-12T10:47:19Z","receivedAt":"2014-03-12T10:47:19Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"By convention, no full stop in the subject line. The subject should\nsummarize your changes and \"add ..NONEG\" is just one part of it. The\nother is \"convert to use ...NONEG\". So I suggest \"parse-options:\nconvert to use new macro OPT_SET_INT_NONEG()\" or something like that.\n\nYou should also explain in the message body (before Signed-off-by:)\nwhy this is a good thing to do. My guess is better readability and\nharder to make mistakes in the future when you have to declare new\noptions with noneg.\n\nOn Tue, Mar 11, 2014 at 5:50 PM, Yuxuan Shui <yshuiv7@gmail.com> wrote:\n> Reference: http://git.github.io/SoC-2014-Microprojects.html\n\nI think this project is actually two: one is convert current\n{OPTION_SET_INT, ... _NONEG} to the new macro, which is truly a micro\nproject. The other is to find OPT_...(..) that should have NONEG but\ndoes not. This one may need more time because you need to check what\nthose options do and if it makes sense to have --no- form.\n\nI think we can focus on the {OPTION_..., _NONEG} conversion, which\nshould be enough get you familiar with git community.\n\n> diff --git a/parse-options.h b/parse-options.h\n> index d670cb9..7d20cf9 100644\n> --- a/parse-options.h\n> +++ b/parse-options.h\n> @@ -125,6 +125,10 @@ struct option {\n>                                       (h), PARSE_OPT_NOARG }\n>  #define OPT_SET_INT(s, l, v, h, i)  { OPTION_SET_INT, (s), (l), (v), NULL, \\\n>                                       (h), PARSE_OPT_NOARG, NULL, (i) }\n> +#define OPT_SET_INT_NONEG(s, l, v, h, i)  \\\n> +                                     { OPTION_SET_INT, (s), (l), (v), NULL, \\\n> +                                     (h), PARSE_OPT_NOARG | PARSE_OPT_NONEG, \\\n> +                                     NULL, (i) }\n>  #define OPT_BOOL(s, l, v, h)        OPT_SET_INT(s, l, v, h, 1)\n>  #define OPT_HIDDEN_BOOL(s, l, v, h) { OPTION_SET_INT, (s), (l), (v), NULL, \\\n>                                       (h), PARSE_OPT_NOARG | PARSE_OPT_HIDDEN, NULL, 1}\n\nTo avoid the proliferation of similar macros in future, I think we\nshould make a macro that takes any flags, e.g.\n\n#define OPT_SET_INT_X(s, l, v, h, i, flags) {  ....., PARSE_OPT_NOARG\n| PARSE_OPT_ ## flags, NULL, (i) }\n\nand we can use it for NONEG like \"OPT_SET_INT_X(...., NONEG)\". We\ncould even redefine OPT_SET_INT() to use OPT_SET_INT_X() to reduce\nduplication.\n\nWhile we're at NONEG, I see that builtin/grep.c has this construct \"{\nOPTION_INTEGER...NONEG}\" and builtin/read-tree.c has \"{\nOPTION_STRING..NONEG}\". It would be great if you could look at them\nand see if NONEG is really needed there, or simpler forms\nOPT_INTEGER(...) and OPT_STRING(...) are enough.\n\nYou might need to read parse-options.c to understand these options.\nDocumentation/technical/api-parse-options.txt should give you a good\noverview.\n\nYou could also think if we could transform \"{ OPTION_CALLBACK.... }\"\nto OPT_CALLBACK(...). But if you do and decide to do it, please make\nit a separate patch (one patch deals with one thing).\n\nThat remaining of your patch looks good.\n-- \nDuy\n"},{"id":"236587","messageId":"CAGqt0zxmRkz4Yjahof5QPAdUoG8M4wszk2UDPDJebZs-UDx_qQ@mail.gmail.com","threadId":"36119","inReplyTo":"CACsJy8Dq5QyZdzCtew0qF37qThH8+05iTrD-ZOeBgbEukmCY5Q@mail.gmail.com","subject":"Re: [PATCH][GSoC] parse-options: Add OPT_SET_INT_NONEG.","fromName":"Yuxuan Shui","fromEmail":"yshuiv7@gmail.com","sentAt":"2014-03-12T17:25:26Z","receivedAt":"2014-03-12T17:25:26Z","isPatch":true,"sender":{"key":"yshuiv7@gmail.com","avatar":"https://avatars.githubusercontent.com/u/366851?v=4"},"body":"On Wed, Mar 12, 2014 at 6:47 PM, Duy Nguyen <pclouds@gmail.com> wrote:\n> By convention, no full stop in the subject line. The subject should\n> summarize your changes and \"add ..NONEG\" is just one part of it. The\n> other is \"convert to use ...NONEG\". So I suggest \"parse-options:\n> convert to use new macro OPT_SET_INT_NONEG()\" or something like that.\n>\n> You should also explain in the message body (before Signed-off-by:)\n> why this is a good thing to do. My guess is better readability and\n> harder to make mistakes in the future when you have to declare new\n> options with noneg.\n\nThanks for pointing that out, I'll do as you suggested.\n\n>\n> On Tue, Mar 11, 2014 at 5:50 PM, Yuxuan Shui <yshuiv7@gmail.com> wrote:\n>> Reference: http://git.github.io/SoC-2014-Microprojects.html\n>\n> I think this project is actually two: one is convert current\n> {OPTION_SET_INT, ... _NONEG} to the new macro, which is truly a micro\n> project. The other is to find OPT_...(..) that should have NONEG but\n> does not. This one may need more time because you need to check what\n> those options do and if it makes sense to have --no- form.\n\nHmm, this microproject has been striked from the ideas page, maybe I\nshould switch to another one...\n\n>\n> I think we can focus on the {OPTION_..., _NONEG} conversion, which\n> should be enough get you familiar with git community.\n>\n>> diff --git a/parse-options.h b/parse-options.h\n>> index d670cb9..7d20cf9 100644\n>> --- a/parse-options.h\n>> +++ b/parse-options.h\n>> @@ -125,6 +125,10 @@ struct option {\n>>                                       (h), PARSE_OPT_NOARG }\n>>  #define OPT_SET_INT(s, l, v, h, i)  { OPTION_SET_INT, (s), (l), (v), NULL, \\\n>>                                       (h), PARSE_OPT_NOARG, NULL, (i) }\n>> +#define OPT_SET_INT_NONEG(s, l, v, h, i)  \\\n>> +                                     { OPTION_SET_INT, (s), (l), (v), NULL, \\\n>> +                                     (h), PARSE_OPT_NOARG | PARSE_OPT_NONEG, \\\n>> +                                     NULL, (i) }\n>>  #define OPT_BOOL(s, l, v, h)        OPT_SET_INT(s, l, v, h, 1)\n>>  #define OPT_HIDDEN_BOOL(s, l, v, h) { OPTION_SET_INT, (s), (l), (v), NULL, \\\n>>                                       (h), PARSE_OPT_NOARG | PARSE_OPT_HIDDEN, NULL, 1}\n>\n> To avoid the proliferation of similar macros in future, I think we\n> should make a macro that takes any flags, e.g.\n>\n> #define OPT_SET_INT_X(s, l, v, h, i, flags) {  ....., PARSE_OPT_NOARG\n> | PARSE_OPT_ ## flags, NULL, (i) }\n>\n> and we can use it for NONEG like \"OPT_SET_INT_X(...., NONEG)\". We\n> could even redefine OPT_SET_INT() to use OPT_SET_INT_X() to reduce\n> duplication.\n\nI could do that, but it seems only the NONEG flag is used in the code.\n\n>\n> While we're at NONEG, I see that builtin/grep.c has this construct \"{\n> OPTION_INTEGER...NONEG}\" and builtin/read-tree.c has \"{\n> OPTION_STRING..NONEG}\". It would be great if you could look at them\n> and see if NONEG is really needed there, or simpler forms\n> OPT_INTEGER(...) and OPT_STRING(...) are enough.\n\nI've grep'd through the source code, and most of the manually filled\noption structures don't seems to have a pattern. And I think writing a\noverly generalized macro won't help much.\n\n>\n> You might need to read parse-options.c to understand these options.\n> Documentation/technical/api-parse-options.txt should give you a good\n> overview.\n>\n> You could also think if we could transform \"{ OPTION_CALLBACK.... }\"\n> to OPT_CALLBACK(...). But if you do and decide to do it, please make\n> it a separate patch (one patch deals with one thing).\n>\n> That remaining of your patch looks good.\n\nThanks for reviewing my patch.\n\n> --\n> Duy\n-- \n\nRegards\nYuxuan Shui\n"},{"id":"236594","messageId":"xmqqr467mfrg.fsf@gitster.dls.corp.google.com","threadId":"36119","inReplyTo":"CACsJy8Dq5QyZdzCtew0qF37qThH8+05iTrD-ZOeBgbEukmCY5Q@mail.gmail.com","subject":"Re: [PATCH][GSoC] parse-options: Add OPT_SET_INT_NONEG.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-03-12T18:30:11Z","receivedAt":"2014-03-12T18:30:11Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Duy Nguyen <pclouds@gmail.com> writes:\n\n> By convention, no full stop in the subject line. The subject should\n> summarize your changes and \"add ..NONEG\" is just one part of it. The\n> other is \"convert to use ...NONEG\". So I suggest \"parse-options:\n> convert to use new macro OPT_SET_INT_NONEG()\" or something like that.\n>\n> You should also explain in the message body (before Signed-off-by:)\n> why this is a good thing to do. My guess is better readability and\n> harder to make mistakes in the future when you have to declare new\n> options with noneg.\n\nAs I said elsewhere, I am not sure if doubling the number of\nOPT_<type> macros as your micro suggestion proposes is the right\nsolution to the problem.\n\nWhat are we trying to solve?\n"},{"id":"236597","messageId":"CAGqt0zyPOGY18EhWPMTGdtU54NDYS0ppRHhemhDArX7oE-0LGw@mail.gmail.com","threadId":"36119","inReplyTo":"xmqqr467mfrg.fsf@gitster.dls.corp.google.com","subject":"Re: [PATCH][GSoC] parse-options: Add OPT_SET_INT_NONEG.","fromName":"Yuxuan Shui","fromEmail":"yshuiv7@gmail.com","sentAt":"2014-03-12T18:33:02Z","receivedAt":"2014-03-12T18:33:02Z","isPatch":true,"sender":{"key":"yshuiv7@gmail.com","avatar":"https://avatars.githubusercontent.com/u/366851?v=4"},"body":"Hi,\n\nOn Thu, Mar 13, 2014 at 2:30 AM, Junio C Hamano <gitster@pobox.com> wrote:\n> Duy Nguyen <pclouds@gmail.com> writes:\n>\n>> By convention, no full stop in the subject line. The subject should\n>> summarize your changes and \"add ..NONEG\" is just one part of it. The\n>> other is \"convert to use ...NONEG\". So I suggest \"parse-options:\n>> convert to use new macro OPT_SET_INT_NONEG()\" or something like that.\n>>\n>> You should also explain in the message body (before Signed-off-by:)\n>> why this is a good thing to do. My guess is better readability and\n>> harder to make mistakes in the future when you have to declare new\n>> options with noneg.\n>\n> As I said elsewhere, I am not sure if doubling the number of\n> OPT_<type> macros as your micro suggestion proposes is the right\n> solution to the problem.\n>\n> What are we trying to solve?\n\nOK, I'll switch to another micro project.\n\n-- \n\nRegards\nYuxuan Shui\n"},{"id":"236603","messageId":"xmqq61njmea5.fsf@gitster.dls.corp.google.com","threadId":"36119","inReplyTo":"CAGqt0zyPOGY18EhWPMTGdtU54NDYS0ppRHhemhDArX7oE-0LGw@mail.gmail.com","subject":"Re: [PATCH][GSoC] parse-options: Add OPT_SET_INT_NONEG.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-03-12T19:02:10Z","receivedAt":"2014-03-12T19:02:10Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Yuxuan Shui <yshuiv7@gmail.com> writes:\n\n> On Thu, Mar 13, 2014 at 2:30 AM, Junio C Hamano <gitster@pobox.com> wrote:\n>> Duy Nguyen <pclouds@gmail.com> writes:\n>>\n>>> By convention, no full stop in the subject line. The subject should\n>>> summarize your changes and \"add ..NONEG\" is just one part of it. The\n>>> other is \"convert to use ...NONEG\". So I suggest \"parse-options:\n>>> convert to use new macro OPT_SET_INT_NONEG()\" or something like that.\n>>>\n>>> You should also explain in the message body (before Signed-off-by:)\n>>> why this is a good thing to do. My guess is better readability and\n>>> harder to make mistakes in the future when you have to declare new\n>>> options with noneg.\n>>\n>> As I said elsewhere, I am not sure if doubling the number of\n>> OPT_<type> macros as your micro suggestion proposes is the right\n>> solution to the problem.\n>>\n>> What are we trying to solve?\n>\n> OK, I'll switch to another micro project.\n\nThat is fine, but note that it was not an objection but was a pure\nquestion. I was asking you to explain why this is a good change.\n"}]}