{"thread":{"id":"49130","subject":"[PATCH] rebase -i: fix numbering in squash message","startedAt":"2018-08-15T09:41:55Z","lastAt":"2018-08-16T08:42:40Z","messageCount":5,"participants":["Phillip Wood","Junio C Hamano","Johannes Schindelin"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"355683","messageId":"20180815094125.12530-1-phillip.wood@talktalk.net","threadId":"49130","inReplyTo":null,"subject":"[PATCH] rebase -i: fix numbering in squash message","fromName":"Phillip Wood","fromEmail":"phillip.wood@talktalk.net","sentAt":"2018-08-15T09:41:25Z","receivedAt":"2018-08-15T09:41:55Z","isPatch":true,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"From: Phillip Wood <phillip.wood@dunelm.org.uk>\n\nCommit e12a7ef597 (\"rebase -i: Handle \"combination of <n> commits\" with\nGETTEXT_POISON\", 2018-04-27) changed the way that individual commit\nmessages are labelled when squashing commits together. In doing so a\nregression was introduced where the numbering of the messages is off by\none. This commit fixes that and adds a test for the numbering.\n\nSigned-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>\n---\n sequencer.c                | 4 ++--\n t/t3418-rebase-continue.sh | 4 +++-\n 2 files changed, 5 insertions(+), 3 deletions(-)\n\ndiff --git a/sequencer.c b/sequencer.c\nindex 2eb5ec7227..77d3c2346f 100644\n--- a/sequencer.c\n+++ b/sequencer.c\n@@ -1387,13 +1387,13 @@ static int update_squash_messages(enum todo_command command,\n \t\tunlink(rebase_path_fixup_msg());\n \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n \t\tstrbuf_addf(&buf, _(\"This is the commit message #%d:\"),\n-\t\t\t    ++opts->current_fixup_count);\n+\t\t\t    ++opts->current_fixup_count + 1);\n \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n \t\tstrbuf_addstr(&buf, body);\n \t} else if (command == TODO_FIXUP) {\n \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n \t\tstrbuf_addf(&buf, _(\"The commit message #%d will be skipped:\"),\n-\t\t\t    ++opts->current_fixup_count);\n+\t\t\t    ++opts->current_fixup_count + 1);\n \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n \t\tstrbuf_add_commented_lines(&buf, body, strlen(body));\n \t} else\ndiff --git a/t/t3418-rebase-continue.sh b/t/t3418-rebase-continue.sh\nindex e9fd029160..ee871dd1bb 100755\n--- a/t/t3418-rebase-continue.sh\n+++ b/t/t3418-rebase-continue.sh\n@@ -128,13 +128,15 @@ test_expect_success '--skip after failed fixup cleans commit message' '\n \t: The first squash was skipped, therefore: &&\n \tgit show HEAD >out &&\n \ttest_i18ngrep \"# This is a combination of 2 commits\" out &&\n+\ttest_i18ngrep \"# This is the commit message #2:\" out &&\n \n \t(test_set_editor \"$PWD/copy-editor.sh\" && git rebase --skip) &&\n \tgit show HEAD >out &&\n \ttest_i18ngrep ! \"# This is a combination\" out &&\n \n \t: Final squash failed, but there was still a squash &&\n-\ttest_i18ngrep \"# This is a combination of 2 commits\" .git/copy.txt\n+\ttest_i18ngrep \"# This is a combination of 2 commits\" .git/copy.txt &&\n+\ttest_i18ngrep \"# This is the commit message #2:\" .git/copy.txt\n '\n \n test_expect_success 'setup rerere database' '\n-- \n2.18.0\n\n"},{"id":"355731","messageId":"xmqqbma3ijyq.fsf@gitster-ct.c.googlers.com","threadId":"49130","inReplyTo":"20180815094125.12530-1-phillip.wood@talktalk.net","subject":"Re: [PATCH] rebase -i: fix numbering in squash message","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-08-15T18:05:33Z","receivedAt":"2018-08-15T18:05:39Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Phillip Wood <phillip.wood@talktalk.net> writes:\n\n> From: Phillip Wood <phillip.wood@dunelm.org.uk>\n>\n> Commit e12a7ef597 (\"rebase -i: Handle \"combination of <n> commits\" with\n> GETTEXT_POISON\", 2018-04-27) changed the way that individual commit\n> messages are labelled when squashing commits together. In doing so a\n> regression was introduced where the numbering of the messages is off by\n> one. This commit fixes that and adds a test for the numbering.\n>\n> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>\n> ---\n>  sequencer.c                | 4 ++--\n>  t/t3418-rebase-continue.sh | 4 +++-\n>  2 files changed, 5 insertions(+), 3 deletions(-)\n>\n> diff --git a/sequencer.c b/sequencer.c\n> index 2eb5ec7227..77d3c2346f 100644\n> --- a/sequencer.c\n> +++ b/sequencer.c\n> @@ -1387,13 +1387,13 @@ static int update_squash_messages(enum todo_command command,\n>  \t\tunlink(rebase_path_fixup_msg());\n>  \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n>  \t\tstrbuf_addf(&buf, _(\"This is the commit message #%d:\"),\n> -\t\t\t    ++opts->current_fixup_count);\n> +\t\t\t    ++opts->current_fixup_count + 1);\n>  \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n>  \t\tstrbuf_addstr(&buf, body);\n>  \t} else if (command == TODO_FIXUP) {\n>  \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n>  \t\tstrbuf_addf(&buf, _(\"The commit message #%d will be skipped:\"),\n> -\t\t\t    ++opts->current_fixup_count);\n> +\t\t\t    ++opts->current_fixup_count + 1);\n>  \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n>  \t\tstrbuf_add_commented_lines(&buf, body, strlen(body));\n>  \t} else\n\nGood spotting.  When viewed in a wider context (e.g. \"git show -W\"\nafter applying this patch), the way opts->current_fixup_count is\nused is somewhat incoherent and adding 1 to pre-increment would make\nit even more painful to read.  Given that there already is\n\n\t\tstrbuf_addf(&header, _(\"This is a combination of %d commits.\"),\n\t\t\t    opts->current_fixup_count + 2);\n\nbefore this part, the code should make it clear these three places\nrefer to the same number for it to be readable.\n\nI wonder if it makes it easier to read, understand and maintain if\nthere were a local variable that gets opts->current_fixup_count+2 at\nthe beginning of the function, make these three places refer to that\nvariable, and move the increment of opts->current_fixup_count down\nin the function, after the \"if we are squashing, do this, if we are\nfixing up, do that, otherwise, we do not know what we are doing\"\ncascade.  And use the more common post-increment, as we no longer\ndepend on the returned value while at it.\n\nIOW, something like this (untested), on top of yours.\n\n sequencer.c | 10 ++++++----\n 1 file changed, 6 insertions(+), 4 deletions(-)\n\ndiff --git a/sequencer.c b/sequencer.c\nindex 77d3c2346f..f82c283a89 100644\n--- a/sequencer.c\n+++ b/sequencer.c\n@@ -1331,8 +1331,9 @@ static int update_squash_messages(enum todo_command command,\n \tstruct strbuf buf = STRBUF_INIT;\n \tint res;\n \tconst char *message, *body;\n+\tint fixup_count = opts->current_fixup_count + 2;\n \n-\tif (opts->current_fixup_count > 0) {\n+\tif (fixup_count > 2) {\n \t\tstruct strbuf header = STRBUF_INIT;\n \t\tchar *eol;\n \n@@ -1345,7 +1346,7 @@ static int update_squash_messages(enum todo_command command,\n \n \t\tstrbuf_addf(&header, \"%c \", comment_line_char);\n \t\tstrbuf_addf(&header, _(\"This is a combination of %d commits.\"),\n-\t\t\t    opts->current_fixup_count + 2);\n+\t\t\t    fixup_count);\n \t\tstrbuf_splice(&buf, 0, eol - buf.buf, header.buf, header.len);\n \t\tstrbuf_release(&header);\n \t} else {\n@@ -1387,18 +1388,19 @@ static int update_squash_messages(enum todo_command command,\n \t\tunlink(rebase_path_fixup_msg());\n \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n \t\tstrbuf_addf(&buf, _(\"This is the commit message #%d:\"),\n-\t\t\t    ++opts->current_fixup_count + 1);\n+\t\t\t    fixup_count);\n \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n \t\tstrbuf_addstr(&buf, body);\n \t} else if (command == TODO_FIXUP) {\n \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n \t\tstrbuf_addf(&buf, _(\"The commit message #%d will be skipped:\"),\n-\t\t\t    ++opts->current_fixup_count + 1);\n+\t\t\t    fixup_count);\n \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n \t\tstrbuf_add_commented_lines(&buf, body, strlen(body));\n \t} else\n \t\treturn error(_(\"unknown command: %d\"), command);\n \tunuse_commit_buffer(commit, message);\n+\topts->current_fixup_count++;\n \n \tres = write_message(buf.buf, buf.len, rebase_path_squash_msg(), 0);\n \tstrbuf_release(&buf);\n\n\n"},{"id":"355734","messageId":"27c91e67-7567-f820-c641-c7980965fcef@talktalk.net","threadId":"49130","inReplyTo":"xmqqbma3ijyq.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH] rebase -i: fix numbering in squash message","fromName":"Phillip Wood","fromEmail":"phillip.wood@talktalk.net","sentAt":"2018-08-15T18:33:31Z","receivedAt":"2018-08-15T18:33:46Z","isPatch":true,"sender":{"key":"phillip.wood@dunelm.org.uk","avatar":null},"body":"Hi Junio\n\nOn 15/08/2018 19:05, Junio C Hamano wrote:\n> \n> Phillip Wood <phillip.wood@talktalk.net> writes:\n> \n>> From: Phillip Wood <phillip.wood@dunelm.org.uk>\n>>\n>> Commit e12a7ef597 (\"rebase -i: Handle \"combination of <n> commits\" with\n>> GETTEXT_POISON\", 2018-04-27) changed the way that individual commit\n>> messages are labelled when squashing commits together. In doing so a\n>> regression was introduced where the numbering of the messages is off by\n>> one. This commit fixes that and adds a test for the numbering.\n>>\n>> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>\n>> ---\n>>  sequencer.c                | 4 ++--\n>>  t/t3418-rebase-continue.sh | 4 +++-\n>>  2 files changed, 5 insertions(+), 3 deletions(-)\n>>\n>> diff --git a/sequencer.c b/sequencer.c\n>> index 2eb5ec7227..77d3c2346f 100644\n>> --- a/sequencer.c\n>> +++ b/sequencer.c\n>> @@ -1387,13 +1387,13 @@ static int update_squash_messages(enum todo_command command,\n>>  \t\tunlink(rebase_path_fixup_msg());\n>>  \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n>>  \t\tstrbuf_addf(&buf, _(\"This is the commit message #%d:\"),\n>> -\t\t\t    ++opts->current_fixup_count);\n>> +\t\t\t    ++opts->current_fixup_count + 1);\n>>  \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n>>  \t\tstrbuf_addstr(&buf, body);\n>>  \t} else if (command == TODO_FIXUP) {\n>>  \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n>>  \t\tstrbuf_addf(&buf, _(\"The commit message #%d will be skipped:\"),\n>> -\t\t\t    ++opts->current_fixup_count);\n>> +\t\t\t    ++opts->current_fixup_count + 1);\n>>  \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n>>  \t\tstrbuf_add_commented_lines(&buf, body, strlen(body));\n>>  \t} else\n> \n> Good spotting.  When viewed in a wider context (e.g. \"git show -W\"\n> after applying this patch), the way opts->current_fixup_count is\n> used is somewhat incoherent and adding 1 to pre-increment would make\n> it even more painful to read.  Given that there already is\n> \n> \t\tstrbuf_addf(&header, _(\"This is a combination of %d commits.\"),\n> \t\t\t    opts->current_fixup_count + 2);\n> \n> before this part, the code should make it clear these three places\n> refer to the same number for it to be readable.\n> \n> I wonder if it makes it easier to read, understand and maintain if\n> there were a local variable that gets opts->current_fixup_count+2 at\n> the beginning of the function, make these three places refer to that\n> variable, and move the increment of opts->current_fixup_count down\n> in the function, after the \"if we are squashing, do this, if we are\n> fixing up, do that, otherwise, we do not know what we are doing\"\n> cascade.  And use the more common post-increment, as we no longer\n> depend on the returned value while at it.\n> \n> IOW, something like this (untested), on top of yours.\n\nI think you'd need to change commit_staged_changes() as well as it\nrelies on the current_fixup_count counting the number of fixups, not the\nnumber of fixups plus two. Having said that using 'current_fixup_count +\n2' to create the labels and incrementing the count at the end of\nupdate_squash_messages() would probably be clearer than my version. I'm\nabout to go away so it'll probably be the second week of September\nbefore I can re-roll this, will that be too late for getting it into 2.19?\n\nBest Wishes\n\nPhillip\n\n> \n>  sequencer.c | 10 ++++++----\n>  1 file changed, 6 insertions(+), 4 deletions(-)\n> \n> diff --git a/sequencer.c b/sequencer.c\n> index 77d3c2346f..f82c283a89 100644\n> --- a/sequencer.c\n> +++ b/sequencer.c\n> @@ -1331,8 +1331,9 @@ static int update_squash_messages(enum todo_command command,\n>  \tstruct strbuf buf = STRBUF_INIT;\n>  \tint res;\n>  \tconst char *message, *body;\n> +\tint fixup_count = opts->current_fixup_count + 2;\n>  \n> -\tif (opts->current_fixup_count > 0) {\n> +\tif (fixup_count > 2) {\n>  \t\tstruct strbuf header = STRBUF_INIT;\n>  \t\tchar *eol;\n>  \n> @@ -1345,7 +1346,7 @@ static int update_squash_messages(enum todo_command command,\n>  \n>  \t\tstrbuf_addf(&header, \"%c \", comment_line_char);\n>  \t\tstrbuf_addf(&header, _(\"This is a combination of %d commits.\"),\n> -\t\t\t    opts->current_fixup_count + 2);\n> +\t\t\t    fixup_count);\n>  \t\tstrbuf_splice(&buf, 0, eol - buf.buf, header.buf, header.len);\n>  \t\tstrbuf_release(&header);\n>  \t} else {\n> @@ -1387,18 +1388,19 @@ static int update_squash_messages(enum todo_command command,\n>  \t\tunlink(rebase_path_fixup_msg());\n>  \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n>  \t\tstrbuf_addf(&buf, _(\"This is the commit message #%d:\"),\n> -\t\t\t    ++opts->current_fixup_count + 1);\n> +\t\t\t    fixup_count);\n>  \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n>  \t\tstrbuf_addstr(&buf, body);\n>  \t} else if (command == TODO_FIXUP) {\n>  \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n>  \t\tstrbuf_addf(&buf, _(\"The commit message #%d will be skipped:\"),\n> -\t\t\t    ++opts->current_fixup_count + 1);\n> +\t\t\t    fixup_count);\n>  \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n>  \t\tstrbuf_add_commented_lines(&buf, body, strlen(body));\n>  \t} else\n>  \t\treturn error(_(\"unknown command: %d\"), command);\n>  \tunuse_commit_buffer(commit, message);\n> +\topts->current_fixup_count++;\n>  \n>  \tres = write_message(buf.buf, buf.len, rebase_path_squash_msg(), 0);\n>  \tstrbuf_release(&buf);\n> \n> \n\n"},{"id":"355745","messageId":"xmqqy3d7h21r.fsf@gitster-ct.c.googlers.com","threadId":"49130","inReplyTo":"27c91e67-7567-f820-c641-c7980965fcef@talktalk.net","subject":"Re: [PATCH] rebase -i: fix numbering in squash message","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2018-08-15T19:17:52Z","receivedAt":"2018-08-15T19:17:57Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Phillip Wood <phillip.wood@talktalk.net> writes:\n\n>> I wonder if it makes it easier to read, understand and maintain if\n>> there were a local variable that gets opts->current_fixup_count+2 at\n>> the beginning of the function, make these three places refer to that\n>> variable, and move the increment of opts->current_fixup_count down\n>> in the function, after the \"if we are squashing, do this, if we are\n>> fixing up, do that, otherwise, we do not know what we are doing\"\n>> cascade.  And use the more common post-increment, as we no longer\n>> depend on the returned value while at it.\n>> \n>> IOW, something like this (untested), on top of yours.\n>\n> I think you'd need to change commit_staged_changes() as well as it\n> relies on the current_fixup_count counting the number of fixups, not the\n> number of fixups plus two.\n\nI suspect you misread what I wrote (see below for the patch).  \n\nThe fixup_count is a new local variable in update_squash_messages()\nthat holds N+2; in other words, I am not suggesting to change what\nopts->current_fixup_count means.\n\n> Having said that using 'current_fixup_count +\n> 2' to create the labels and incrementing the count at the end of\n> update_squash_messages() would probably be clearer than my version. I'm\n> about to go away so it'll probably be the second week of September\n> before I can re-roll this, will that be too late for getting it into 2.19?\n\nI actually do not mind to go with what you originally sent, unless a\ncleaned up version is vastly more readable.  After all, a clean-up\ncan be done separately and safely.\n\nThanks.\n\n>>  sequencer.c | 10 ++++++----\n>>  1 file changed, 6 insertions(+), 4 deletions(-)\n>> \n>> diff --git a/sequencer.c b/sequencer.c\n>> index 77d3c2346f..f82c283a89 100644\n>> --- a/sequencer.c\n>> +++ b/sequencer.c\n>> @@ -1331,8 +1331,9 @@ static int update_squash_messages(enum todo_command command,\n>>  \tstruct strbuf buf = STRBUF_INIT;\n>>  \tint res;\n>>  \tconst char *message, *body;\n>> +\tint fixup_count = opts->current_fixup_count + 2;\n>>  \n>> -\tif (opts->current_fixup_count > 0) {\n>> +\tif (fixup_count > 2) {\n>>  \t\tstruct strbuf header = STRBUF_INIT;\n>>  \t\tchar *eol;\n>>  \n>> @@ -1345,7 +1346,7 @@ static int update_squash_messages(enum todo_command command,\n>>  \n>>  \t\tstrbuf_addf(&header, \"%c \", comment_line_char);\n>>  \t\tstrbuf_addf(&header, _(\"This is a combination of %d commits.\"),\n>> -\t\t\t    opts->current_fixup_count + 2);\n>> +\t\t\t    fixup_count);\n>>  \t\tstrbuf_splice(&buf, 0, eol - buf.buf, header.buf, header.len);\n>>  \t\tstrbuf_release(&header);\n>>  \t} else {\n>> @@ -1387,18 +1388,19 @@ static int update_squash_messages(enum todo_command command,\n>>  \t\tunlink(rebase_path_fixup_msg());\n>>  \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n>>  \t\tstrbuf_addf(&buf, _(\"This is the commit message #%d:\"),\n>> -\t\t\t    ++opts->current_fixup_count + 1);\n>> +\t\t\t    fixup_count);\n>>  \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n>>  \t\tstrbuf_addstr(&buf, body);\n>>  \t} else if (command == TODO_FIXUP) {\n>>  \t\tstrbuf_addf(&buf, \"\\n%c \", comment_line_char);\n>>  \t\tstrbuf_addf(&buf, _(\"The commit message #%d will be skipped:\"),\n>> -\t\t\t    ++opts->current_fixup_count + 1);\n>> +\t\t\t    fixup_count);\n>>  \t\tstrbuf_addstr(&buf, \"\\n\\n\");\n>>  \t\tstrbuf_add_commented_lines(&buf, body, strlen(body));\n>>  \t} else\n>>  \t\treturn error(_(\"unknown command: %d\"), command);\n>>  \tunuse_commit_buffer(commit, message);\n>> +\topts->current_fixup_count++;\n>>  \n>>  \tres = write_message(buf.buf, buf.len, rebase_path_squash_msg(), 0);\n>>  \tstrbuf_release(&buf);\n>> \n>> \n"},{"id":"355823","messageId":"nycvar.QRO.7.76.6.1808161039300.71@tvgsbejvaqbjf.bet","threadId":"49130","inReplyTo":"xmqqy3d7h21r.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH] rebase -i: fix numbering in squash message","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2018-08-16T08:42:30Z","receivedAt":"2018-08-16T08:42:40Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 15 Aug 2018, Junio C Hamano wrote:\n\n> Phillip Wood <phillip.wood@talktalk.net> writes:\n> \n> >> I wonder if it makes it easier to read, understand and maintain if\n> >> there were a local variable that gets opts->current_fixup_count+2 at\n> >> the beginning of the function, make these three places refer to that\n> >> variable, and move the increment of opts->current_fixup_count down\n> >> in the function, after the \"if we are squashing, do this, if we are\n> >> fixing up, do that, otherwise, we do not know what we are doing\"\n> >> cascade.  And use the more common post-increment, as we no longer\n> >> depend on the returned value while at it.\n> >> \n> >> IOW, something like this (untested), on top of yours.\n> >\n> > I think you'd need to change commit_staged_changes() as well as it\n> > relies on the current_fixup_count counting the number of fixups, not the\n> > number of fixups plus two.\n> \n> I suspect you misread what I wrote (see below for the patch).  \n\nI had the same reaction as Phillip: is your patch good enough, or does it\nonly touch one part, but not other that may need the same \"touch-upping\".\n\n> The fixup_count is a new local variable in update_squash_messages()\n> that holds N+2; in other words, I am not suggesting to change what\n> opts->current_fixup_count means.\n\nSure, and the better cleanup could possibly be to change the meaning of\nopts->current_fixup_count altogether.\n\n> > Having said that using 'current_fixup_count +\n> > 2' to create the labels and incrementing the count at the end of\n> > update_squash_messages() would probably be clearer than my version. I'm\n> > about to go away so it'll probably be the second week of September\n> > before I can re-roll this, will that be too late for getting it into 2.19?\n> \n> I actually do not mind to go with what you originally sent, unless a\n> cleaned up version is vastly more readable.  After all, a clean-up\n> can be done separately and safely.\n\nAt this point, I think Phillip's version would be safer, as it would make\nit easier to do a more complete cleanup without the pressure of having to\nfix a bug in one big hurry.\n\nSo: ACK on Phillip's patch from me.\n\nCiao,\nDscho\n"}]}