xref: /aosp_15_r20/system/logging/logcat/logcatd.sh (revision 598139dc91b21518d67c408eaea2644226490971)
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