Skip to content

Commit 6307041

Browse files
dschogitster
authored andcommitted
sequencer: strip CR from the todo script
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.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 004fefa commit 6307041

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

sequencer.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,6 +776,9 @@ static int parse_insn_buffer(char *buf, struct todo_list *todo_list)
776776

777777
next_p = *eol ? eol + 1 /* skip LF */ : eol;
778778

779+
if (p != eol && eol[-1] == '\r')
780+
eol--; /* strip Carriage Return */
781+
779782
item = append_new_todo(todo_list);
780783
item->offset_in_buf = p - todo_list->buf.buf;
781784
if (parse_insn_line(item, p, eol)) {

0 commit comments

Comments
 (0)