|
@@ -0,0 +1,62 @@
|
|
|
+#! /bin/sh
|
|
|
+#
|
|
|
+# Fix multiline comments to match CODING_STYLE
|
|
|
+#
|
|
|
+# 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
|
|
|
+}' "$@"
|