From e641bb026b814a3743571956fc8af68b39afd66b Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sat, 18 Oct 2014 17:39:04 +0000
Subject: [PATCH] mac80211: add a maintenance script for upstream backport
 commits

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 42953
---
 .../mac80211/scripts/import-backports.sh      | 109 ++++++++++++++++++
 1 file changed, 109 insertions(+)
 create mode 100755 package/kernel/mac80211/scripts/import-backports.sh

diff --git a/package/kernel/mac80211/scripts/import-backports.sh b/package/kernel/mac80211/scripts/import-backports.sh
new file mode 100755
index 0000000000..d056eb6d04
--- /dev/null
+++ b/package/kernel/mac80211/scripts/import-backports.sh
@@ -0,0 +1,109 @@
+#!/usr/bin/env bash
+BASE=$1; shift
+
+usage() {
+	echo "Usage: $0 NNN <file>..."
+	exit 1
+}
+
+check_number() {
+	case "$1" in
+		[0-9][0-9][0-9]) return 0;;
+	esac
+	return 1;
+}
+
+patch_header()
+{
+	awk '
+	/^(---|\*\*\*|Index:)[ \t][^ \t]|^diff -/ \
+		{ exit }
+		{ print }
+	'
+}
+
+strip_diffstat()
+{
+	awk '
+	/#? .* \| / \
+		{ eat = eat $0 "\n"
+		  next }
+	/^#? .* files? changed(, .* insertions?\(\+\))?(, .* deletions?\(-\))?/ \
+		{ eat = ""
+		  next }
+		{ print eat $0
+		  eat = "" }
+	'
+}
+
+strip_trailing_whitespace() {
+	sed -e 's:[ '$'\t'']*$::'
+}
+
+fixup_header() {
+	awk '
+		/^From / { next }
+		/^Subject: / {
+			sub("Subject: \\[[^\]]*\\]", "Subject: [PATCH]")
+		}
+		{ print }
+	'
+}
+
+check_number "$BASE" || usage
+
+quilt series > /dev/null || {
+	echo "Not in quilt directory"
+	exit 2
+}
+
+get_next() {
+	NEW=$BASE
+	quilt series | while read CUR; do
+		[ -n "$CUR" ] || break
+		CUR=${CUR%%-*}
+		check_number "$CUR" || continue
+		[ "$CUR" -lt "$NEW" ] && continue
+		[ "$CUR" -ge "$(($BASE + 100))" ] && continue
+		NEW="$(($CUR + 1))"
+		echo $NEW
+	done | tail -n1
+}
+
+CUR=`get_next`
+CUR="${CUR:-$BASE}"
+
+while [ -n "$1" ]; do
+	FILE="$1"; shift
+	NAME="$(basename $FILE)"
+	NAME="${NAME#[0-9]*-}"
+	echo -n "Processing patch $NAME: "
+
+	[ -e "$FILE" ] || {
+		echo "file $FILE not found"
+		exit 1
+	}
+
+	grep -qE "$NAME$" patches/series && {
+		echo "already applied"
+		continue
+	}
+
+	quilt new "$CUR-$NAME" || exit 1
+	patch_header < "$FILE" |
+		strip_diffstat |
+		strip_trailing_whitespace |
+		fixup_header > "patches/$CUR-$NAME"
+
+	quilt fold < "$FILE" || {
+		cp "$FILE" ./cur_patch
+		echo "patch $FILE failed to apply, copied to ./cur_patch"
+		exit 1
+	}
+
+	quilt refresh -p ab --no-index --no-timestamps
+
+	CUR="$(($CUR + 1))"
+done
+
+exit 0
-- 
GitLab