1*598139dcSAndroid Build Coastguard Worker#! /system/bin/sh 2*598139dcSAndroid Build Coastguard Worker 3*598139dcSAndroid Build Coastguard Worker# This is primarily meant to be used by logpersist. This script is run as an init service, which 4*598139dcSAndroid Build Coastguard Worker# first reads the 'last' logcat to persistent storage with `-L` then run logcat again without 5*598139dcSAndroid Build Coastguard Worker# `-L` to read the current logcat buffers to persistent storage. 6*598139dcSAndroid Build Coastguard Worker 7*598139dcSAndroid Build Coastguard Worker# init sets the umask to 077 for forked processes. logpersist needs to create files that are group 8*598139dcSAndroid Build Coastguard Worker# readable. So relax the umask to only disallow group wx and world rwx. 9*598139dcSAndroid Build Coastguard Workerumask 037 10*598139dcSAndroid Build Coastguard Worker 11*598139dcSAndroid Build Coastguard Workerhas_last="false" 12*598139dcSAndroid Build Coastguard Workerfor arg in "$@"; do 13*598139dcSAndroid Build Coastguard Worker if [ "$arg" == "-L" -o "$arg" == "--last" ]; then 14*598139dcSAndroid Build Coastguard Worker has_last="true" 15*598139dcSAndroid Build Coastguard Worker fi 16*598139dcSAndroid Build Coastguard Workerdone 17*598139dcSAndroid Build Coastguard Worker 18*598139dcSAndroid Build Coastguard Workerif [ "$has_last" == "true" ]; then 19*598139dcSAndroid Build Coastguard Worker logcat "$@" 20*598139dcSAndroid Build Coastguard Workerfi 21*598139dcSAndroid Build Coastguard Worker 22*598139dcSAndroid Build Coastguard Workerargs_without_last=() 23*598139dcSAndroid Build Coastguard Workerfor arg in "$@"; do 24*598139dcSAndroid Build Coastguard Worker if [ "$arg" != "-L" -a "$arg" != "--last" ]; then 25*598139dcSAndroid Build Coastguard Worker ARGS+=("$arg") 26*598139dcSAndroid Build Coastguard Worker fi 27*598139dcSAndroid Build Coastguard Workerdone 28*598139dcSAndroid Build Coastguard Worker 29*598139dcSAndroid Build Coastguard Workerexec logcat "${ARGS[@]}" 30