[LEDE-DEV] [PATCH v2] ct-bugcheck: fix globbing, word splitting and formatting

Jan-Tarek Butt tarek at ring0.de
Wed Oct 5 06:37:53 PDT 2016


Double quote to prevent globbing and word splitting.
{ cmd1; cmd2; } >> file instead of individual redirects.
simplifying syntax

Signed-off-by: Jan-Tarek Butt <tarek at ring0.de>
---
 package/utils/ct-bugcheck/src/bugcheck.sh | 177 ++++++++++++++----------------
 1 file changed, 83 insertions(+), 94 deletions(-)

diff --git a/package/utils/ct-bugcheck/src/bugcheck.sh b/package/utils/ct-bugcheck/src/bugcheck.sh
index 85f70c5..1737ed5 100755
--- a/package/utils/ct-bugcheck/src/bugcheck.sh
+++ b/package/utils/ct-bugcheck/src/bugcheck.sh
@@ -9,107 +9,96 @@ FOUND_BUG=0
 
 # set -x
 
-bugcheck_generic()
-{
-    echo "LEDE crashlog report" > $CRASHDIR/info.txt
-    date >> $CRASHDIR/info.txt
-    echo >> $CRASHDIR/info.txt
-    echo "uname" >> $CRASHDIR/info.txt
-    uname -a >> $CRASHDIR/info.txt
-    echo >> $CRASHDIR/info.txt
-    echo "os-release" >> $CRASHDIR/info.txt
-    cat /etc/os-release >> $CRASHDIR/info.txt
-    echo >> $CRASHDIR/info.txt
-    echo "os-release" >> $CRASHDIR/info.txt
-    cat /etc/os-release >> $CRASHDIR/info.txt
-    echo >> $CRASHDIR/info.txt
-    echo "dmesg output" >> $CRASHDIR/info.txt
-    dmesg >> $CRASHDIR/info.txt
-    if [ -x /usr/bin/lspci ]
-	then
-	echo >> $CRASHDIR/info.txt
-	echo "lspci" >> $CRASHDIR/info.txt
-	lspci >> $CRASHDIR/info.txt
-    fi
-    echo >> $CRASHDIR/info.txt
-    echo "cpuinfo" >> $CRASHDIR/info.txt
-    cat /proc/cpuinfo >> $CRASHDIR/info.txt
-    echo >> $CRASHDIR/info.txt
-    echo "meminfo" >> $CRASHDIR/info.txt
-    cat /proc/cpuinfo >> $CRASHDIR/info.txt
-    echo >> $CRASHDIR/info.txt
-    echo "cmdline" >> $CRASHDIR/info.txt
-    cat /proc/cmdline >> $CRASHDIR/info.txt
-    echo >> $CRASHDIR/info.txt
-    echo "lsmod" >> $CRASHDIR/info.txt
-    lsmod >> $CRASHDIR/info.txt
+bugcheck_generic() {
+	{
+		echo "LEDE crashlog report"
+		date
+		echo
+		echo "uname"
+		uname -a
+		echo
+		echo "os-release"
+		cat /etc/os-release
+		echo
+		echo "os-release"
+		cat /etc/os-release
+		echo
+		echo "dmesg output"
+		dmesg
+	} > $CRASHDIR/info.txt
+	[ -x /usr/bin/lspci ] && {
+		echo
+		echo "lspci"
+		lspci
+	} >> $CRASHDIR/info.txt
+	{
+		echo
+		echo "cpuinfo"
+		cat /proc/cpuinfo
+		echo
+		echo "meminfo"
+		cat /proc/cpuinfo
+		echo
+		echo "cmdline"
+		cat /proc/cmdline
+		echo
+		echo "lsmod"
+		lsmod
+	} >> $CRASHDIR/info.txt
 }
 
-roll_crashes()
-{
-    # Roll any existing crashes
-    if [ -d $CRASHDIR ]
-	then
-	if [ -d $CRASHDIR.1 ]
-	    then
-	    rm -fr $CRASHDIR.1
-	fi
-	mv $CRASHDIR $CRASHDIR.1
-    fi
+roll_crashes() {
+	# Roll any existing crashes
+	[ -d $CRASHDIR.1 ] && rm -fr $CRASHDIR.1
+	[ -d $CRASHDIR ] && mv $CRASHDIR $CRASHDIR.1
 
-    # Prepare location
-    mkdir -p $CRASHDIR
+	# Prepare location
+	mkdir -p $CRASHDIR
 }
 
 # ath10k, check debugfs entries.
-for i in /sys/kernel/debug/ieee80211/*/ath10k/fw_crash_dump
-do
-  #echo "Checking $i"
-  if cat $i > $TMPLOC/ath10k_crash.bin 2>&1
-      then
-      FOUND_BUG=1
-
-      #echo "Found ath10k crash data in $i"
-      roll_crashes
-
-      ADIR=${i/fw_crash_dump/}
-
-      CTFW=0
-      if grep -- -ct- $TMPLOC/ath10k_crash.bin > /dev/null 2>&1
-	  then
-	  CTFW=1
-      fi
-
-      echo "Send bug reports to:" > $CRASHDIR/report_to.txt
-      if [ -f $ADIR/ct_special -o $CTFW == "1" ]
-	  then
-	  # Looks like this is CT firmware or driver...
-	  echo "greearb at candelatech.com" >> $CRASHDIR/report_to.txt
-	  echo "and/or report or check for duplicates here:" >> $CRASHDIR/report_to.txt
-	  echo "https://github.com/greearb/ath10k-ct/issues" >> $CRASHDIR/report_to.txt
-      else
-	  # Not sure who would want these bug reports for upstream...
-	  echo "https://www.lede-project.org/" >> $CRASHDIR/report_to.txt
-      fi
-      echo >> $CRASHDIR/report_to.txt
-      echo "Please attach all files in this directory to bug reports." >> $CRASHDIR/report_to.txt
-
-      mv $TMPLOC/ath10k_crash.bin $CRASHDIR
-
-      # Add any more ath10k specific stuff here.
-
-      # And call generic bug reporting logic
-      bugcheck_generic
-  fi
+for i in /sys/kernel/debug/ieee80211/*/ath10k/fw_crash_dump; do
+	#echo "Checking $i"
+	cat "$i" > $TMPLOC/ath10k_crash.bin 2>&1 || continue
+	FOUND_BUG=1
+
+	#echo "Found ath10k crash data in $i"
+	roll_crashes
+
+	ADIR=${i/fw_crash_dump/}
+
+	CTFW=0
+	grep -q -- -ct- $TMPLOC/ath10k_crash.bin && CTFW=1
+
+	echo "Send bug reports to:" > $CRASHDIR/report_to.txt
+	if [ -f "$ADIR"/ct_special ] || [ $CTFW = "1" ]; then
+		# Looks like this is CT firmware or driver...
+		{
+			echo "greearb at candelatech.com"
+			echo "and/or report or check for duplicates here:"
+			echo "https://github.com/greearb/ath10k-ct/issues"
+		} >> $CRASHDIR/report_to.txt
+	else
+		# Not sure who would want these bug reports for upstream...
+		echo "https://www.lede-project.org/" >> $CRASHDIR/report_to.txt
+	fi
+	echo >> $CRASHDIR/report_to.txt
+	echo "Please attach all files in this directory to bug reports." >> $CRASHDIR/report_to.txt
+
+	mv $TMPLOC/ath10k_crash.bin $CRASHDIR
+
+	# Add any more ath10k specific stuff here.
+
+	# And call generic bug reporting logic
+	bugcheck_generic
 done
 
-if [ $FOUND_BUG == "1" ]
-    then
-    # Notify LUCI somehow?
-    echo "bugcheck.sh found an issue to be reported" > /dev/kmsg
-    echo "See $CRASHDIR for details on how to report this" > /dev/kmsg
-    # Let calling code know something was wrong.
-    exit 1
-fi
+[ "$FOUND_BUG" -eq "1" ] && {
+	# Notify LUCI somehow?
+	echo "bugcheck.sh found an issue to be reported" > /dev/kmsg
+	echo "See $CRASHDIR for details on how to report this" > /dev/kmsg
+	# Let calling code know something was wrong.
+	exit 1
+}
 
 exit 0
-- 
2.10.0




More information about the Lede-dev mailing list