File kdump-preserve-white-space.patch of Package kdump.21348

From: Petr Tesarik <ptesarik@suse.com>
Date: Tue, Nov 12 2019 14:53:37 +0100
Subject: Preserve white space when removing kernel command line options
References: bsc#1117652
Upstream: merged
Git-commit: 23d593b54a9c97a204ea7412e53c60d3d3852cab

The function was originally designed to remove unwanted options
from the panic kernel command line. It is now also used to check
whether the current command line contains a fadump option or not,
but the check is broken, because remove_from_commandline() may
change the amount (and type) of white space. For example, it
always adds an extra space if the original string ends with a
space.

Modify the function to copy original separators verbatim, except
that any white space preceding the removed option is removed.

Fixes: a4718a2c7b714d0594903fc8dc5ae47252a9b9ba
Signed-off-by: Petr Tesarik <ptesarik@suse.com>

---
 init/load.sh |   12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

--- a/init/load.sh
+++ b/init/load.sh
@@ -17,15 +17,13 @@ function remove_from_commandline()
     awk 'BEGIN { ORS="" }
     {
         while(length()) {
-            sub(/^[[:space:]]+/,"");
-            pstart=match($0,/("[^"]*"?|[^"[:space:]])+/);
-            plength=RLENGTH;
-            param=substr($0,pstart,plength);
-            raw=param;
+            match($0,/^([[:space:]]*)(.*)/,w);
+            match(w[2],/(("[^"]*"?|[^"[:space:]])+)(.*)/,p);
+            raw=p[1];
             gsub(/"/,"",raw);
             if (raw !~ /^('"$option"')(=|$)/)
-                print param " ";
-            $0=substr($0,pstart+plength);
+                print w[1] p[1];
+            $0=p[3];
         }
         print "\n";
     }'
openSUSE Build Service is sponsored by