Как заставить отступ GNU поддерживать терминаторы CRLF?

Я попытался использовать отступ GNU (v 2.2.12) в исходном файле с ограничителями CRLF с неожиданными ошибками, которые я не мог понять из исходного кода. Выходной файл был как бы со случайным отступом.

Затем я преобразовал файл в обычный файл Unix только с терминаторами LF, и он удалил ошибки. Выходной файл имеет отступ, как и ожидалось.

Я ничего не смог найти об этом, так что знаете ли вы что-нибудь об обычном/ожидаемом поведении отступа GNU в отношении разделителей строк?

Знаете ли вы, как заставить отступ работать правильно с любым исходным файлом C?

Вот журнал терминала (с комментариями и отступами) того, что я видел:

      user@pc:~$ file main.c
    main.c: C source, ASCII text, with CRLF line terminators

user@pc:~$ indent main.c > output.c                     # ERRORS
    indent: main.c:1187: Error:Stmt nesting error.
    indent: main.c:1306: Error:Stmt nesting error.
    indent: main.c:1468: Error:Unmatched 'else'
    indent: main.c:1645: Error:Unexpected end of file

user@pc:~$ sed -i s.$'\r'..g main.c     # Changing CRLF to LF
user@pc:~$ file main.c
    main.c: C source, ASCII text

user@pc:~$ indent main.c > output.c     # NO ERROR

0 ответов

Другие вопросы по тегам