mirror of
https://github.com/coreutils/coreutils.git
synced 2024-11-24 10:23:31 +08:00
maint: new syntax-check rule: prohibit empty lines at EOF
* cfg.mk (detect_empty_lines_at_EOF_): Define. (sc_prohibit_empty_lines_at_EOF): New rule. * .x-sc_prohibit_empty_lines_at_EOF: New file. Exempt pr test inputs. * Makefile.am (syntax_check_exceptions): Add it. Pádraig Brady suggested to parse the output of tail -n1.
This commit is contained in:
parent
ac6feeb9f2
commit
8c4b6ba09b
1
.x-sc_prohibit_empty_lines_at_EOF
Normal file
1
.x-sc_prohibit_empty_lines_at_EOF
Normal file
@ -0,0 +1 @@
|
||||
^tests/pr/
|
@ -47,6 +47,7 @@ syntax_check_exceptions = \
|
||||
.x-sc_po_check \
|
||||
.x-sc_program_name \
|
||||
.x-sc_prohibit_atoi_atof \
|
||||
.x-sc_prohibit_empty_lines_at_EOF \
|
||||
.x-sc_prohibit_fail_0 \
|
||||
.x-sc_prohibit_magic_number_exit \
|
||||
.x-sc_prohibit_stat_st_blocks \
|
||||
|
24
cfg.mk
24
cfg.mk
@ -315,6 +315,30 @@ sc_space_before_open_paren:
|
||||
else :; \
|
||||
fi
|
||||
|
||||
# The following tail+perl pipeline would be much more concise, and would
|
||||
# produce slightly better output (including counts) if written as
|
||||
# perl -ln -0777 -e '/\n(\n+)$/ and print "$ARGV: ".length $1' ...
|
||||
# but that would be far less efficient, reading the entire contents
|
||||
# of each file, rather than just the last few bytes of each.
|
||||
#
|
||||
# This is a perl script that operates on the output of
|
||||
# tail -n1 TWO_OR_MORE_FILES
|
||||
# Print the name of each file that ends in two or more newline bytes.
|
||||
# Exit nonzero if at least one such file is found, otherwise, exit 0.
|
||||
#
|
||||
# Use this if you want to remove trailing empty lines from selected files:
|
||||
# perl -pi -0777 -e 's/\n\n+$/\n/' files...
|
||||
#
|
||||
detect_empty_lines_at_EOF_ = \
|
||||
/^==> ([^\n]+) <==\n\n/m and (print "$$1\n"), $$fail = 1; \
|
||||
END { exit defined $$fail }
|
||||
|
||||
sc_prohibit_empty_lines_at_EOF:
|
||||
@tail -n1 $$($(VC_LIST_EXCEPT)) /dev/null \
|
||||
| perl -00 -ne '$(detect_empty_lines_at_EOF_)' \
|
||||
|| { echo '$(ME): the above files end with empty line(s)' \
|
||||
1>&2; exit 1; } || :; \
|
||||
|
||||
include $(srcdir)/dist-check.mk
|
||||
|
||||
update-copyright-env = \
|
||||
|
Loading…
Reference in New Issue
Block a user