From owner-svn-soc-all@FreeBSD.ORG Thu Jun 28 21:27:56 2012 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from socsvn.FreeBSD.org (unknown [IPv6:2001:4f8:fff6::2f]) by hub.freebsd.org (Postfix) with SMTP id 2C6621065674 for ; Thu, 28 Jun 2012 21:27:55 +0000 (UTC) (envelope-from tzabal@FreeBSD.org) Received: by socsvn.FreeBSD.org (sSMTP sendmail emulation); Thu, 28 Jun 2012 21:27:55 +0000 Date: Thu, 28 Jun 2012 21:27:55 +0000 From: tzabal@FreeBSD.org To: svn-soc-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-Id: <20120628212755.2C6621065674@hub.freebsd.org> Cc: Subject: socsvn commit: r238508 - soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jun 2012 21:27:56 -0000 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 "" >> ${data} echo "" >> ${data} - # From ps -axl until END + # From ps -axl until end for cmd in $commands2; do echo "" >> ${data} echo "" >> ${data} @@ -243,8 +243,89 @@ echo "" >> ${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 "" >> ${data} + echo "" >> ${data} + echo "${line}" | \ + sed -E 's/^.+> ([a-z ]+)$/\1/' >> ${data} + echo "" >> ${data} + echo "" >> ${data} + else + echo "" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + echo "${line}" | \ + sed -E 's/^.+> ([a-z ]+)$/\1/' >> ${data} + echo "" >> ${data} + echo "" >> ${data} + fi + else + echo "${line}" >> ${data} + fi + done < ${orig_file} + echo "" >> ${data} + echo "" >> ${data} + fi + + if [ -f "${tmp_dir}/config.txt" ]; then + echo "" >> ${data} + echo "" >> ${data} + echo "kernel config" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + cat "${tmp_dir}/config.txt" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + fi + + if [ -f "${tmp_dir}/msgbuf.txt" ]; then + echo "" >> ${data} + echo "" >> ${data} + echo "dmesg" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + cat "${tmp_dir}/msgbuf.txt" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + fi + + if [ -f "${tmp_dir}/panic.txt" ]; then + echo "" >> ${data} + echo "" >> ${data} + echo "panic" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + cat "${tmp_dir}/panic.txt" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + fi + + if [ -f "${tmp_dir}/version.txt" ]; then + echo "" >> ${data} + echo "" >> ${data} + echo "version" >> ${data} + echo "" >> ${data} + echo "" >> ${data} + cat "${tmp_dir}/version.txt" >> ${data} + echo "" >> ${data} + echo "" >> ${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##*/}