{"thread":{"id":"25242","subject":"[PATCH v5 0/4] rev-parse: allow --flags to output rev-parse-like flags","startedAt":"2010-09-25T16:18:31Z","lastAt":"2010-09-26T01:24:20Z","messageCount":7,"participants":["Jon Seymour"],"isPatch":true,"patchVersion":5,"patchTotal":4},"messages":[{"id":"151649","messageId":"1285431515-21321-1-git-send-email-jon.seymour@gmail.com","threadId":"25242","inReplyTo":null,"subject":"[PATCH v5 0/4] rev-parse: allow --flags to output rev-parse-like flags","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2010-09-25T16:18:31Z","receivedAt":"2010-09-25T16:18:31Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"This series allows git rev-parse --flags to output remaining flag-like arguments\neven if such arguments are valid options to git rev-parse itself.\n\nPreviously:\n  $ git rev-parse --flags -q -X --no-flags -- Y -Z\n  -X\n  $\n\nNow:\n  $ git rev-parse --flags -q -X --no-flags -- Y -Z\n  -q -X --no-flags\n  $\n\nThis series also changes the interpretation of --flags so that\nspecification of this option implies --no-revs.\n\nPreviously:\n  $ git rev-parse --flags HEAD\n  HEAD\n  $\n\nNow:\n  $ git rev-parse --flags HEAD\n  $\n\nReviewers attention is drawn to the following behaviour which, while\nunchanged from current behaviour, differs from the behaviour specified\nby the documentation. Specifically:\n\n  $ git rev-parse -X --no-flags\n  -X\n  $ git rev-parse --no-flags -X\n  $\n\nIn other words, a git rev-parse option only ever affects the \ninterpretation of succeeding options, never preceding options.\n\nAevar's feedback on v2 and v4 of this series has been incorporated.\n\nv5 fixes a breakage in support of --no-revs option introduced by v4\nand updates the test to add tests that would have prevented that breakage\nbeing introduced.\n\nJon Seymour (4):\n  rev-parse: stop interpreting flags as options to rev-parse once\n    --flags is specified\n  rev-parse: add tests for git rev-parse --flags.\n  rev-parse: update documentation of --flags and --no-flags options\n  rev-parse: make --flags imply --no-revs for remaining arguments.\n\n Documentation/git-rev-parse.txt |   12 ++++\n builtin/rev-parse.c             |   14 ++++-\n t/t1510-rev-parse-flags.sh      |  127 +++++++++++++++++++++++++++++++++++++++\n 3 files changed, 152 insertions(+), 1 deletions(-)\n create mode 100755 t/t1510-rev-parse-flags.sh\n\n-- \n1.7.3.4.g9eb38\n"},{"id":"151650","messageId":"1285431515-21321-2-git-send-email-jon.seymour@gmail.com","threadId":"25242","inReplyTo":"1285431515-21321-1-git-send-email-jon.seymour@gmail.com","subject":"[PATCH v5 1/4] rev-parse: stop interpreting flags as options to rev-parse once --flags is specified","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2010-09-25T16:18:32Z","receivedAt":"2010-09-25T16:18:32Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"Current git rev-parse behaviour makes --flags hard to use if the remaining\narguments to git rev-parse contain an option that would otherwise be interpreted\nas an option by git rev-parse itself.\n\nSo, for example:\n\n  $> git rev-parse --flags -q -X\n  -X\n\nNormally one might expect to use -- to prevent -q being interpreted:\n\n  $> git rev-parse --flags -- -q -X\n  -q -X\n\nBut we can't really use -- in this way, because commands that use\ngit rev-parse might reasonably expect:\n\n  $> git rev-parse --flags -Y -- -q -X\n  -Y\n\nThat is, -Y to be regarded as a flag but everything after -- to be uninterpreted.\n\nThis proposed change modifies git rev-parse so that git rev-parse stops\ninterpreting flag arguments as options to git rev-parse once --flags is\ninterpreted. We also exit early once -- is found.\n\nSigned-off-by: Jon Seymour <jon.seymour@gmail.com>\n---\n builtin/rev-parse.c |    8 ++++++++\n 1 files changed, 8 insertions(+), 0 deletions(-)\n\ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex a5a1c86..2ad269a 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -497,8 +497,16 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)\n \t\t\t\t/* Pass on the \"--\" if we show anything but files.. */\n \t\t\t\tif (filter & (DO_FLAGS | DO_REVS))\n \t\t\t\t\tshow_file(arg);\n+\t\t\t\tif (!(filter & DO_NONFLAGS)) {\n+\t\t\t\t\treturn 0;\n+\t\t\t\t}\n \t\t\t\tcontinue;\n \t\t\t}\n+\t\t\tif (!(filter & DO_NONFLAGS)) {\n+\t\t\t\t/* once we see --flags, we stop interpreting other flags */\n+\t\t\t\t show_flag(arg);\n+\t\t\t\t continue;\n+\t\t\t}\n \t\t\tif (!strcmp(arg, \"--default\")) {\n \t\t\t\tdef = argv[i+1];\n \t\t\t\ti++;\n-- \n1.7.3.4.g73371.dirty\n"},{"id":"151653","messageId":"1285431515-21321-3-git-send-email-jon.seymour@gmail.com","threadId":"25242","inReplyTo":"1285431515-21321-1-git-send-email-jon.seymour@gmail.com","subject":"[PATCH v5 2/4] rev-parse: add tests for git rev-parse --flags.","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2010-09-25T16:18:33Z","receivedAt":"2010-09-25T16:18:33Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"Signed-off-by: Jon Seymour <jon.seymour@gmail.com>\n---\n t/t1510-rev-parse-flags.sh |  109 ++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 109 insertions(+), 0 deletions(-)\n create mode 100755 t/t1510-rev-parse-flags.sh\n\ndiff --git a/t/t1510-rev-parse-flags.sh b/t/t1510-rev-parse-flags.sh\nnew file mode 100755\nindex 0000000..ef0b4ad\n--- /dev/null\n+++ b/t/t1510-rev-parse-flags.sh\n@@ -0,0 +1,109 @@\n+#!/bin/sh\n+#\n+# Copyright (c) 2010 Jon Seymour\n+#\n+\n+test_description='test git rev-parse --flags'\n+. ./test-lib.sh\n+\n+test_commit \"A\"\n+\n+test_expect_success 'git rev-parse --flags -> \"\"' \\\n+'\n+\t>expected &&\n+\tgit rev-parse --flags >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags X -> \"\"' \\\n+'\n+\t>expected &&\n+\tgit rev-parse --flags X >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --no-revs --flags HEAD -> \"\"' \\\n+'\n+\t>expected &&\n+\tgit rev-parse --no-revs --flags HEAD >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --symbolic --flags HEAD -> \"HEAD\"' \\\n+'\n+\techo HEAD > expected &&\n+\tgit rev-parse --symbolic --flags HEAD >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags -- -> \"\"' \\\n+'\n+\t>expected &&\n+\tgit rev-parse --flags -- >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags -- X -> \"\"' \\\n+'\n+\t>expected &&\n+\tgit rev-parse --flags -- X >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags -- -X -> \"\"' \\\n+'\n+\t>expected &&\n+\tgit rev-parse --flags -- -X >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags -- -q --> \"\"' \\\n+'\n+\t>expected &&\n+\tgit rev-parse --flags -- -q >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags -X -> \"-X\"' \\\n+'\n+\tprintf \"%s\\n\" -X > expected &&\n+\tgit rev-parse --flags -X >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags -q -> \"-q\"' \\\n+'\n+\tprintf \"%s\\n\" -q > expected &&\n+\tgit rev-parse --flags -q >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags -X -- Y -Z -> \"-X\"' \\\n+'\n+\tprintf \"%s\\n\" -X > expected &&\n+\tgit rev-parse --flags -X -- Y -Z >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --flags --no-flags -> \"--no-flags\"' \\\n+'\n+\tprintf \"%s\\n\" --no-flags > expected &&\n+\tgit rev-parse --flags --no-flags >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --no-flags --flags -X -> \"\"' \\\n+'\n+\t>expected &&\n+\tgit rev-parse --no-flags --flags -X >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --symbolic --no-flags --flags HEAD -> \"HEAD\"' \\\n+'\n+\techo HEAD >expected &&\n+\tgit rev-parse --symbolic --no-flags --flags HEAD >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_done\n-- \n1.7.3.4.g73371.dirty\n"},{"id":"151652","messageId":"1285431515-21321-4-git-send-email-jon.seymour@gmail.com","threadId":"25242","inReplyTo":"1285431515-21321-1-git-send-email-jon.seymour@gmail.com","subject":"[PATCH v5 3/4] rev-parse: update documentation of --flags and --no-flags options","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2010-09-25T16:18:34Z","receivedAt":"2010-09-25T16:18:34Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"Signed-off-by: Jon Seymour <jon.seymour@gmail.com>\n---\n Documentation/git-rev-parse.txt |   12 +++++++++++-\n 1 files changed, 11 insertions(+), 1 deletions(-)\n\ndiff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt\nindex 341ca90..f5e6637 100644\n--- a/Documentation/git-rev-parse.txt\n+++ b/Documentation/git-rev-parse.txt\n@@ -49,10 +49,20 @@ OPTIONS\n \t'git rev-list' command.\n \n --flags::\n-\tDo not output non-flag parameters.\n+\tDo not output non-flag parameters which are not also revisions.\n+\t+\n+\tIf specified, this option causes 'git rev-parse' to stop\n+\tinterpreting remaining arguments as options for its own\n+\tconsumption. As such, this option should be specified\n+\tafter all other options that 'git rev-parse' is expected\n+\tto interpret.\n \n --no-flags::\n \tDo not output flag parameters.\n+\t+\n+\tIf both `--flags` and `--no-flags` are specified, the first\n+\toption specified wins and the other option is treated like\n+\ta non-option argument.\n \n --default <arg>::\n \tIf there is no parameter given by the user, use `<arg>`\n-- \n1.7.3.4.g73371.dirty\n"},{"id":"151651","messageId":"1285431515-21321-5-git-send-email-jon.seymour@gmail.com","threadId":"25242","inReplyTo":"1285431515-21321-1-git-send-email-jon.seymour@gmail.com","subject":"[PATCH v5 4/4] rev-parse: make --flags imply --no-revs for remaining arguments.","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2010-09-25T16:18:35Z","receivedAt":"2010-09-25T16:18:35Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"This change ensures that git rev-parse --flags complies with its documentation,\nnamely:\n\n   \"Do not output non-flag parameters\".\n\nPreviously:\n   $ git rev-parse --flags HEAD\n   <sha1 hash of HEAD>\n   $\n\nNow:\n   $ git rev-parse --flags HEAD\n   $\n\nSigned-off-by: Jon Seymour <jon.seymour@gmail.com>\n---\n Documentation/git-rev-parse.txt |   24 +++++++++++++-----------\n builtin/rev-parse.c             |    6 +++++-\n t/t1510-rev-parse-flags.sh      |   24 +++++++++++++++++++++---\n 3 files changed, 39 insertions(+), 15 deletions(-)\n\ndiff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt\nindex f5e6637..f26fc7b 100644\n--- a/Documentation/git-rev-parse.txt\n+++ b/Documentation/git-rev-parse.txt\n@@ -49,20 +49,22 @@ OPTIONS\n \t'git rev-list' command.\n \n --flags::\n-\tDo not output non-flag parameters which are not also revisions.\n-\t+\n-\tIf specified, this option causes 'git rev-parse' to stop\n-\tinterpreting remaining arguments as options for its own\n-\tconsumption. As such, this option should be specified\n-\tafter all other options that 'git rev-parse' is expected\n-\tto interpret.\n+\tDo not output non-flag parameters.\n++\n+If specified, this option causes 'git rev-parse' to stop\n+interpreting remaining arguments as options for its own\n+consumption. As such, this option should be specified\n+after all other options that 'git rev-parse' is expected\n+to interpret.\n++\n+If `--flags` is specified, `--no-revs` is implied.\n \n --no-flags::\n \tDo not output flag parameters.\n-\t+\n-\tIf both `--flags` and `--no-flags` are specified, the first\n-\toption specified wins and the other option is treated like\n-\ta non-option argument.\n++\n+If both `--flags` and `--no-flags` are specified, the first\n+option specified wins and the other option is treated like\n+a non-option argument.\n \n --default <arg>::\n \tIf there is no parameter given by the user, use `<arg>`\ndiff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\nindex 2ad269a..0655424 100644\n--- a/builtin/rev-parse.c\n+++ b/builtin/rev-parse.c\n@@ -521,7 +521,11 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)\n \t\t\t\tcontinue;\n \t\t\t}\n \t\t\tif (!strcmp(arg, \"--flags\")) {\n-\t\t\t\tfilter &= ~DO_NONFLAGS;\n+\t\t\t\tif (!(filter & DO_FLAGS)) {\n+\t\t\t\t\t/* prevent --flags being interpreted if --no-flags has been seen */\n+\t\t\t\t\tcontinue;\n+\t\t\t\t}\n+\t\t\t\tfilter &= ~(DO_NONFLAGS|DO_REVS);\n \t\t\t\tcontinue;\n \t\t\t}\n \t\t\tif (!strcmp(arg, \"--no-flags\")) {\ndiff --git a/t/t1510-rev-parse-flags.sh b/t/t1510-rev-parse-flags.sh\nindex ef0b4ad..7df2081 100755\n--- a/t/t1510-rev-parse-flags.sh\n+++ b/t/t1510-rev-parse-flags.sh\n@@ -29,10 +29,10 @@ test_expect_success 'git rev-parse --no-revs --flags HEAD -> \"\"' \\\n \ttest_cmp expected actual\n '\n \n-test_expect_success 'git rev-parse --symbolic --flags HEAD -> \"HEAD\"' \\\n+test_expect_success 'git rev-parse --flags HEAD -> \"\"' \\\n '\n-\techo HEAD > expected &&\n-\tgit rev-parse --symbolic --flags HEAD >actual &&\n+\t: > expected &&\n+\tgit rev-parse --flags HEAD >actual &&\n \ttest_cmp expected actual\n '\n \n@@ -106,4 +106,22 @@ test_expect_success 'git rev-parse --symbolic --no-flags --flags HEAD -> \"HEAD\"'\n \ttest_cmp expected actual\n '\n \n+test_expect_success 'git rev-parse --no-revs file -> \"file\"' \\\n+'\n+\techo foo >file &&\n+\techo file >expected &&\n+\tgit rev-parse --no-revs file >actual &&\n+\ttest_cmp expected actual\n+'\n+\n+test_expect_success 'git rev-parse --no-revs -- not-a-file -> \"-- not-a-file\"' \\\n+'\n+\tcat >expected <<-EOF &&\n+--\n+not-a-file\n+\tEOF\n+\tgit rev-parse --no-revs -- not-a-file >actual &&\n+\ttest_cmp expected actual\n+'\n+\n test_done\n-- \n1.7.3.4.g73371.dirty\n"},{"id":"151655","messageId":"AANLkTi=BuHRVQwTdpkdLNDPS7VKdy6s7VW+S85U5Mz7z@mail.gmail.com","threadId":"25242","inReplyTo":"1285431515-21321-5-git-send-email-jon.seymour@gmail.com","subject":"Re: [PATCH v5 4/4] rev-parse: make --flags imply --no-revs for remaining arguments.","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2010-09-25T16:21:11Z","receivedAt":"2010-09-25T16:21:11Z","isPatch":true,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"Apologies - it appears I missed on : > case. Will fix in next iteration...\n\njon.\n\nOn Sun, Sep 26, 2010 at 2:18 AM, Jon Seymour <jon.seymour@gmail.com> wrote:\n> This change ensures that git rev-parse --flags complies with its documentation,\n> namely:\n>\n>   \"Do not output non-flag parameters\".\n>\n> Previously:\n>   $ git rev-parse --flags HEAD\n>   <sha1 hash of HEAD>\n>   $\n>\n> Now:\n>   $ git rev-parse --flags HEAD\n>   $\n>\n> Signed-off-by: Jon Seymour <jon.seymour@gmail.com>\n> ---\n>  Documentation/git-rev-parse.txt |   24 +++++++++++++-----------\n>  builtin/rev-parse.c             |    6 +++++-\n>  t/t1510-rev-parse-flags.sh      |   24 +++++++++++++++++++++---\n>  3 files changed, 39 insertions(+), 15 deletions(-)\n>\n> diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt\n> index f5e6637..f26fc7b 100644\n> --- a/Documentation/git-rev-parse.txt\n> +++ b/Documentation/git-rev-parse.txt\n> @@ -49,20 +49,22 @@ OPTIONS\n>        'git rev-list' command.\n>\n>  --flags::\n> -       Do not output non-flag parameters which are not also revisions.\n> -       +\n> -       If specified, this option causes 'git rev-parse' to stop\n> -       interpreting remaining arguments as options for its own\n> -       consumption. As such, this option should be specified\n> -       after all other options that 'git rev-parse' is expected\n> -       to interpret.\n> +       Do not output non-flag parameters.\n> ++\n> +If specified, this option causes 'git rev-parse' to stop\n> +interpreting remaining arguments as options for its own\n> +consumption. As such, this option should be specified\n> +after all other options that 'git rev-parse' is expected\n> +to interpret.\n> ++\n> +If `--flags` is specified, `--no-revs` is implied.\n>\n>  --no-flags::\n>        Do not output flag parameters.\n> -       +\n> -       If both `--flags` and `--no-flags` are specified, the first\n> -       option specified wins and the other option is treated like\n> -       a non-option argument.\n> ++\n> +If both `--flags` and `--no-flags` are specified, the first\n> +option specified wins and the other option is treated like\n> +a non-option argument.\n>\n>  --default <arg>::\n>        If there is no parameter given by the user, use `<arg>`\n> diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c\n> index 2ad269a..0655424 100644\n> --- a/builtin/rev-parse.c\n> +++ b/builtin/rev-parse.c\n> @@ -521,7 +521,11 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)\n>                                continue;\n>                        }\n>                        if (!strcmp(arg, \"--flags\")) {\n> -                               filter &= ~DO_NONFLAGS;\n> +                               if (!(filter & DO_FLAGS)) {\n> +                                       /* prevent --flags being interpreted if --no-flags has been seen */\n> +                                       continue;\n> +                               }\n> +                               filter &= ~(DO_NONFLAGS|DO_REVS);\n>                                continue;\n>                        }\n>                        if (!strcmp(arg, \"--no-flags\")) {\n> diff --git a/t/t1510-rev-parse-flags.sh b/t/t1510-rev-parse-flags.sh\n> index ef0b4ad..7df2081 100755\n> --- a/t/t1510-rev-parse-flags.sh\n> +++ b/t/t1510-rev-parse-flags.sh\n> @@ -29,10 +29,10 @@ test_expect_success 'git rev-parse --no-revs --flags HEAD -> \"\"' \\\n>        test_cmp expected actual\n>  '\n>\n> -test_expect_success 'git rev-parse --symbolic --flags HEAD -> \"HEAD\"' \\\n> +test_expect_success 'git rev-parse --flags HEAD -> \"\"' \\\n>  '\n> -       echo HEAD > expected &&\n> -       git rev-parse --symbolic --flags HEAD >actual &&\n> +       : > expected &&\n> +       git rev-parse --flags HEAD >actual &&\n>        test_cmp expected actual\n>  '\n>\n> @@ -106,4 +106,22 @@ test_expect_success 'git rev-parse --symbolic --no-flags --flags HEAD -> \"HEAD\"'\n>        test_cmp expected actual\n>  '\n>\n> +test_expect_success 'git rev-parse --no-revs file -> \"file\"' \\\n> +'\n> +       echo foo >file &&\n> +       echo file >expected &&\n> +       git rev-parse --no-revs file >actual &&\n> +       test_cmp expected actual\n> +'\n> +\n> +test_expect_success 'git rev-parse --no-revs -- not-a-file -> \"-- not-a-file\"' \\\n> +'\n> +       cat >expected <<-EOF &&\n> +--\n> +not-a-file\n> +       EOF\n> +       git rev-parse --no-revs -- not-a-file >actual &&\n> +       test_cmp expected actual\n> +'\n> +\n>  test_done\n> --\n> 1.7.3.4.g73371.dirty\n>\n>\n"},{"id":"151697","messageId":"AANLkTinuM=TiNC-AhcnNyQdh+AFij4jNU=bBqjJ0HXbC@mail.gmail.com","threadId":"25242","inReplyTo":"1285431515-21321-1-git-send-email-jon.seymour@gmail.com","subject":"[RE: v6 0/4] rev-parse: allow --flags to output rev-parse-like flags","fromName":"Jon Seymour","fromEmail":"jon.seymour@gmail.com","sentAt":"2010-09-26T01:24:20Z","receivedAt":"2010-09-26T01:24:20Z","isPatch":false,"sender":{"key":"jon.seymour@gmail.com","avatar":"https://avatars.githubusercontent.com/u/207131?v=4"},"body":"Those interested in the latest version of this series can poll\nthe stop-interpreting-after-flags branch on git://github.com/jonseymour/git.git\n\nI have tagged v6 which is re-organized slightly w.r.t v5 so that tests\nand documentation of existing behaviour are cleanly separated from\nproposed changes.\n\nI will post another version of this series to the list if/when I\nreceive additional\nfeedback or a final ack.\n\nRegards,\n\njon seymour.\n"}]}