Something went wrong. Try again.
Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980#!/usr/bin/awk -f# SPDX-License-Identifier: GPL-2.0## Use #line directives to preserve original __LINE__ numbers across patches to# avoid unwanted compilation changes.
BEGIN { in_hunk = 0 skip = 0}
/^--- / { skip = $2 !~ /\.(c|h)$/ print next}
/^@@/ { if (skip) { print next }
in_hunk = 1
# @@ -1,3 +1,4 @@: # 1: line number in old file # 3: how many lines the hunk covers in old file # 1: line number in new file # 4: how many lines the hunk covers in new file
match($0, /^@@ -([0-9]+)(,([0-9]+))? \+([0-9]+)(,([0-9]+))? @@/, m)
# Set 'cur' to the old file's line number at the start of the hunk. It # gets incremented for every context line and every line removal, so # that it always represents the old file's current line number. cur = m[1]
# last = last line number of current hunk last = cur + (m[3] ? m[3] : 1) - 1
need_line_directive = 0
print next}
{ if (skip || !in_hunk || $0 ~ /^\\ No newline at end of file/) { print next }
# change line if ($0 ~ /^[+-]/) { # inject #line after this group of changes need_line_directive = 1
if ($0 ~ /^-/) cur++
print next }
# If this is the first context line after a group of changes, inject # the #line directive to force the compiler to correct the line # numbering to match the original file. if (need_line_directive) { print "+#line " cur need_line_directive = 0 }
if (cur == last) in_hunk = 0
cur++ print}