| 
									
										
										
										
											2018-12-14 10:33:22 +01:00
										 |  |  | #! /bin/sh
 | 
					
						
							|  |  |  | # | 
					
						
							| 
									
										
										
										
											2021-02-23 09:59:31 +00:00
										 |  |  | # Fix multiline comments to match docs/devel/style.rst | 
					
						
							| 
									
										
										
										
											2018-12-14 10:33:22 +01:00
										 |  |  | # | 
					
						
							|  |  |  | # 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 | 
					
						
							|  |  |  | }' "$@" |