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>