Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jun 2012 21:27:55 +0000
From:      tzabal@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r238508 - soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport
Message-ID:  <20120628212755.2C6621065674@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tzabal
Date: Thu Jun 28 21:27:54 2012
New Revision: 238508
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238508

Log:
  Code for forming an XML report in the case of a textdump.

Modified:
  soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport/crashreport.sh

Modified: soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport/crashreport.sh
==============================================================================
--- soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport/crashreport.sh	Thu Jun 28 20:48:24 2012	(r238507)
+++ soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport/crashreport.sh	Thu Jun 28 21:27:54 2012	(r238508)
@@ -227,7 +227,7 @@
 	echo "</result>" >> ${data}
 	echo "</command>" >> ${data}
 
-	# From ps -axl until END
+	# From ps -axl until end
 	for cmd in $commands2; do
 		echo "<command>" >> ${data}
 		echo "<name>" >> ${data}
@@ -243,8 +243,89 @@
 		echo "</command>" >> ${data}	
 	done
 else
-	# Code for textdump....
+	# A temporary directory for the contents of the textdump
+	tmp_dir=`mktemp -d /tmp/crashreport.XXXXXX`
+	tar -xvf "${_dumpdir}/${_file}" -C "${tmp_dir}"
 	
+	# A valid textdump can contain up to 5 files with the following names:
+	# ddb.txt, config.txt, msgbuf.txt, panic.txt and version.txt
+
+	if [ -f "${tmp_dir}/ddb.txt" ]; then
+		flag='false'
+		while read line; do
+			echo "${line}" | egrep '^.+>  [a-z ]+$' > /dev/null
+			if [ $? -eq 0 ]; then
+				if [ ${flag} == false ]; then
+					flag='true'
+					echo "<command>" >> ${data}
+					echo "<name>" >> ${data}
+					echo "${line}" | \
+					 sed -E 's/^.+>  ([a-z ]+)$/\1/' >> ${data}
+					echo "</name>" >> ${data}
+					echo "<result>" >> ${data}
+				else
+					echo "</result>" >> ${data}
+					echo "</command>" >> ${data}
+					echo "<command>" >> ${data}
+					echo "<name>" >> ${data}
+					echo "${line}" | \
+					 sed -E 's/^.+>  ([a-z ]+)$/\1/' >> ${data}
+					echo "</name>" >> ${data}
+					echo "<result>" >> ${data}
+				fi
+			else
+				echo "${line}" >> ${data}
+			fi
+		done < ${orig_file}
+		echo "</result>" >> ${data}
+		echo "</command>" >> ${data}
+	fi
+
+	if [ -f "${tmp_dir}/config.txt" ]; then
+		echo "<command>" >> ${data}
+		echo "<name>" >> ${data}
+		echo "kernel config" >> ${data}
+		echo "</name>" >> ${data}
+		echo "<result>" >> ${data}
+		cat "${tmp_dir}/config.txt" >> ${data}
+		echo "</result>" >> ${data}
+		echo "</command>" >> ${data}
+	fi
+
+	if [ -f "${tmp_dir}/msgbuf.txt" ]; then
+		echo "<command>" >> ${data}
+		echo "<name>" >> ${data}
+		echo "dmesg" >> ${data}
+		echo "</name>" >> ${data}
+		echo "<result>" >> ${data}
+		cat "${tmp_dir}/msgbuf.txt" >> ${data}
+		echo "</result>" >> ${data}
+		echo "</command>" >> ${data}
+	fi
+
+	if [ -f "${tmp_dir}/panic.txt" ]; then
+		echo "<command>" >> ${data}
+		echo "<name>" >> ${data}
+		echo "panic" >> ${data}
+		echo "</name>" >> ${data}
+		echo "<result>" >> ${data}
+		cat "${tmp_dir}/panic.txt" >> ${data}
+		echo "</result>" >> ${data}
+		echo "</command>" >> ${data}
+	fi
+
+	if [ -f "${tmp_dir}/version.txt" ]; then
+		echo "<command>" >> ${data}
+		echo "<name>" >> ${data}
+		echo "version" >> ${data}
+		echo "</name>" >> ${data}
+		echo "<result>" >> ${data}
+		cat "${tmp_dir}/version.txt" >> ${data}
+		echo "</result>" >> ${data}
+		echo "</command>" >> ${data}
+	fi
+	
+	rm -r "${tmp_dir}"
 fi
 
 IFS="${orig_IFS}"
@@ -255,6 +336,8 @@
 
 ## Bundle the report
 report="${data##*/}.tar.gz"
+mv "${data}" "${data}.xml"
+data="${data}.xml"
 
 tar -czf ${report} -C ${data%/*} ${data##*/}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120628212755.2C6621065674>