socsvn commit: r238508 -
soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport
tzabal at FreeBSD.org
tzabal at FreeBSD.org
Thu Jun 28 21:27:56 UTC 2012
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##*/}
More information about the svn-soc-all
mailing list