Skip to content

Commit 7d460e0

Browse files
authored
[check] Terminate sed commands with semicolons (#4538)
even before a closing }, to improve compatibility with BSD-based implementations.
1 parent aa08a75 commit 7d460e0

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

tools/check-source.sh

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,18 @@ grep -n -A1 '\\end{\(example\|note\)}' $texfiles | grep -- '- *\(\\\\\|&\)' |
9898

9999
# Blank line between "begin example" and "begin codeblock"
100100
for f in $texfiles; do
101-
sed -n '/\\begin{example}/{N;N;/\n\n\\begin{codeblock}$/{=;p}}' $f |
101+
sed -n '/\\begin{example}/{N;N;/\n\n\\begin{codeblock}$/{=;p;};}' $f |
102102
# prefix output with filename and line
103-
sed '/^[0-9]\+$/{N;s/\n/:/}' | sed "s/.*/$f:&/"
103+
sed '/^[0-9]\+$/{N;s/\n/:/;}' | sed "s/.*/$f:&/"
104104
done |
105105
fail 'blank line between "begin example" and "begin codeblock"' || failed=1
106-
# Fixup: sed '/\\begin{example}/{N;s/\n$//}'
106+
# Fixup: sed '/\\begin{example}/{N;s/\n$//;}'
107107

108108
# Comment not aligned to multiple of four. (Ignore lines with "@".)
109109
for f in $texfiles; do
110-
sed -n '/begin{codeblock\(tu\)\?}/,/end{codeblock\(tu\)\?}/{/^[^@]*[^ @][^@]*\/\//{=;p}}' $f |
110+
sed -n '/begin{codeblock\(tu\)\?}/,/end{codeblock\(tu\)\?}/{/^[^@]*[^ @][^@]*\/\//{=;p;};}' $f |
111111
# prefix output with filename and line
112-
sed '/^[0-9]\+$/{N;s/\n/:/}' | sed "s/.*/$f:&/" |
112+
sed '/^[0-9]\+$/{N;s/\n/:/;}' | sed "s/.*/$f:&/" |
113113
awk '{ match($0,"^[-a-z0-9]*[.]tex:[0-9]*:"); n=match(substr($0,RLENGTH+1),"[ ;]//"); if (n % 4 != 0) print "comment starts in column " n ": " $0; }'
114114
done |
115115
fail "comment not aligned" || failed=1
@@ -125,26 +125,26 @@ grep -n '^\\rSec.\[[^]]*[^-a-z.0-9][^]]*\]{' $texfiles |
125125

126126
# "shall", "may", or "should" inside a note
127127
for f in $texfiles; do
128-
sed -n '/begin{\(note\|footnote\)}/,/end{\(note\|footnote\)}/{/\(shall\|may\|should\)[^a-zA-Z]/{=;p}}' $f |
128+
sed -n '/begin{\(note\|footnote\)}/,/end{\(note\|footnote\)}/{/\(shall\|may\|should\)[^a-zA-Z]/{=;p;};}' $f |
129129
# prefix output with filename and line
130-
sed '/^[0-9]\+$/{N;s/\n/:/}' | sed "s/.*/$f:&/"
130+
sed '/^[0-9]\+$/{N;s/\n/:/;}' | sed "s/.*/$f:&/"
131131
done |
132132
fail '"shall", "should", or "may" inside a note' || failed=1
133133

134134
# Hanging paragraphs
135135
for f in $texfiles; do
136-
sed -n '/^\\rSec/{=;p};/^\\pnum/{s/^.*$/x/;=;p}' $f |
136+
sed -n '/^\\rSec/{=;p;};/^\\pnum/{s/^.*$/x/;=;p;}' $f |
137137
# prefix output with filename and line
138-
sed '/^[0-9]\+$/{N;s/\n/:/}' | sed "s/.*/$f:&/" |
138+
sed '/^[0-9]\+$/{N;s/\n/:/;}' | sed "s/.*/$f:&/" |
139139
awk -F: 'BEGIN { prevlevel = 0 } $3 ~ /^\\rSec./ { match($3, "[0-9]"); level=substr($3, RSTART, 1); if (text && level > prevlevel) { print prevsec " <-- Hanging paragraph follows" } prevlevel = level; prevsec = $3; text = 0 } $3 == "x" { text = 1 }'
140140
done |
141141
fail 'hanging paragraph' || failed=1
142142

143143
# Subclauses without siblings
144144
for f in $texfiles; do
145-
sed -n '/^\\rSec/{=;p}' $f |
145+
sed -n '/^\\rSec/{=;p;}' $f |
146146
# prefix output with filename and line
147-
sed '/^[0-9]\+$/{N;s/\n/:/}' | sed "s/.*/$f:&/" |
147+
sed '/^[0-9]\+$/{N;s/\n/:/;}' | sed "s/.*/$f:&/" |
148148
awk -F: 'BEGIN { prevlevel = 0 }
149149
{
150150
match($3, "[0-9]");
@@ -160,16 +160,16 @@ done | fail 'subclause without siblings' || failed=1
160160

161161
# Library descriptive macros not immediately preceded by \pnum.
162162
for f in $texlibdesc; do
163-
sed -n '/^\\pnum/{h;:x;n;/^\\index/b x;/^\\\(constraints\|mandates\|expects\|effects\|sync\|ensures\|returns\|throws\|complexity\|remarks\|errors\)/{x;/\n/{x;=;p};d};/^\\pnum/D;H;b x}' $f |
163+
sed -n '/^\\pnum/{h;:x;n;/^\\index/b x;/^\\\(constraints\|mandates\|expects\|effects\|sync\|ensures\|returns\|throws\|complexity\|remarks\|errors\)/{x;/\n/{x;=;p;};d;};/^\\pnum/D;H;b x;}' $f |
164164
# prefix output with filename and line
165165
sed '/^[0-9]\+$/{N;s/\n/:/}' | sed "s/.*/$f:&/"
166166
done |
167167
fail '\\pnum missing' || failed=1
168168

169169
# Cross-references pointing to their own section.
170170
for f in $texfiles; do
171-
sed -n '/^\\rSec/{s/^.rSec.\[/S /;s/\].*$//;=;p};/\\iref{/{s/^.*\\.\?ref{\([-a-z.0-9]\+\)}.*/R \1/g;=;p}' $f |
172-
sed '/^[0-9]\+$/{N;s/\n/: /}' | sed "s/.*/$f:&/" |
171+
sed -n '/^\\rSec/{s/^.rSec.\[/S /;s/\].*$//;=;p;};/\\iref{/{s/^.*\\.\?ref{\([-a-z.0-9]\+\)}.*/R \1/g;=;p;}' $f |
172+
sed '/^[0-9]\+$/{N;s/\n/: /;}' | sed "s/.*/$f:&/" |
173173
awk '$2 == "S" { seclabel = $3 } $2 == "R" && $3 == seclabel { print $1 " section self-reference to [" $3 "]" }'
174174
done |
175175
fail "cross-reference to its own section" || failed=1

0 commit comments

Comments
 (0)