#!/system/bin/sh

# Specify e.g. /proc/self/fd/1 to send output to stdout
OUT=${1:-/tmp/state}

echo "DUMPING STATE TO $OUT"
echo "------ SYSTEM LOG ------" > $OUT
logcat -v time -d '*:v' >> $OUT
echo "------ EVENT LOG ------" >> $OUT
logcat -b events -v time -d '*:v' >> $OUT
echo "------ KERNEL LOG ------" >> $OUT
dmesg >> $OUT
echo "------ KERNEL WAKELOCKS ------" >> $OUT
cat /proc/wakelocks >> $OUT
echo "------ PROCESSES ------" >> $OUT
ps >> $OUT
echo "------ MEMORY INFO ------" >> $OUT
cat /proc/meminfo >> $OUT
echo "------ VIRTUAL MEMORY STATS ------" >> $OUT
cat /proc/vmstat >> $OUT
echo "------ FILESYSTEMS ------" >> $OUT
df >> $OUT
echo "------ VERSION INFO ------" >> $OUT
echo "currenttime=`date`" >> $OUT
echo "kernel.version=`cat /proc/version`" >> $OUT
echo "kernel.cmdline=`cat /proc/cmdline`" >> $OUT
cat /system/build.prop >> $OUT
echo "gsm.version.ril-impl=`getprop gsm.version.ril-impl`" >> $OUT
echo "gsm.version.baseband=`getprop gsm.version.baseband`" >> $OUT
echo "gsm.imei=`getprop gsm.imei`" >> $OUT
echo "gsm.sim.operator.numeric=`getprop gsm.sim.operator.numeric`" >> $OUT
echo "gsm.operator.alpha=`getprop gsm.operator.alpha`" >> $OUT
echo "------ END ------" >> $OUT
echo "STATE DUMPED TO $OUT"

exit 0
