xemu/scripts/fix-multiline-comments.sh
Alex Bennée 93a1100768 docs: move CODING_STYLE into the developer documentation
There is no particular reason to keep this on it's own in the root of
the tree. Move it into the rest of the fine developer manual and fixup
any links to it. The only tweak I've made is to fix the code-block
annotations to mention the language C.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Claudio Fontana <cfontana@suse.de>
Message-Id: <20210223095931.16908-1-alex.bennee@linaro.org>
2021-02-24 11:05:21 +00:00

63 lines
1.7 KiB
Bash
Executable File

#! /bin/sh
#
# Fix multiline comments to match docs/devel/style.rst
#
# Copyright (C) 2018 Red Hat, Inc.
#
# Author: Paolo Bonzini
#
# Usage: scripts/fix-multiline-comments.sh [-i] FILE...
#
# -i edits the file in place (requires gawk 4.1.0).
#
# Set the AWK environment variable to choose the awk interpreter to use
# (default 'awk')
if test "$1" = -i; then
# gawk extension
inplace="-i inplace"
shift
fi
${AWK-awk} $inplace 'BEGIN { indent = -1 }
{
line = $0
# apply a star to the indent on lines after the first
if (indent != -1) {
if (line == "") {
line = sp " *"
} else if (substr(line, 1, indent + 2) == sp " ") {
line = sp " *" substr(line, indent + 3)
}
}
is_lead = (line ~ /^[ \t]*\/\*/)
is_trail = (line ~ /\*\//)
if (is_lead && !is_trail) {
# grab the indent at the start of a comment, but not for
# single-line comments
match(line, /^[ \t]*\/\*/)
indent = RLENGTH - 2
sp = substr(line, 1, indent)
}
# the regular expression filters out lone /*, /**, or */
if (indent != -1 && !(line ~ /^[ \t]*(\/\*+|\*\/)[ \t]*$/)) {
if (is_lead) {
# split the leading /* or /** on a separate line
match(line, /^[ \t]*\/\*+/)
lead = substr(line, 1, RLENGTH)
match(line, /^[ \t]*\/\*+[ \t]*/)
line = lead "\n" sp " *" substr(line, RLENGTH)
}
if (is_trail) {
# split the trailing */ on a separate line
match(line, /[ \t]*\*\//)
line = substr(line, 1, RSTART - 1) "\n" sp " */"
}
}
if (is_trail) {
indent = -1
}
print line
}' "$@"