Johannes Schindelin <johannes.schinde...@gmx.de> writes:

> It is not unheard of that editors on Windows write CR/LF even if the
> file originally had only LF. This is particularly awkward for exec lines
> of a rebase -i todo sheet. Take for example the insn "exec echo": The
> shell script parser splits at the LF and leaves the CR attached to
> "echo", which leads to the unknown command "echo\r".
>
> Work around that by stripping CR when reading the todo commands, as we
> already do for LF.
>
> This happens to fix t9903.14 and .15 in MSYS1 environments (with the
> rebase--helper patches based on this patch series): the todo script
> constructed in such a setup contains CR/LF thanks to MSYS1 runtime's
> cleverness.
>
> Based on a report and a patch by Johannes Sixt.
>
> Signed-off-by: Johannes Schindelin <johannes.schinde...@gmx.de>
> ---
>  sequencer.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/sequencer.c b/sequencer.c
> index 678fdf3..cee7e50 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -774,6 +774,9 @@ static int parse_insn_buffer(char *buf, struct todo_list 
> *todo_list)
>  
>               next_p = *eol ? eol + 1 /* skip LF */ : eol;
>  
> +             if (p != eol && eol[-1] == '\r')
> +                     eol--; /* skip Carriage Return */

micronit: s/skip/strip/ ;-)

> +
>               item = append_new_todo(todo_list);
>               item->offset_in_buf = p - todo_list->buf.buf;
>               if (parse_insn_line(item, p, eol)) {

Reply via email to