When passing a NULL status to android_fork_execvp the return
status will now be the return value of the child if it exited
properly, otherwise a non-0 value will be returned.
Change-Id: I13309c61b37b6b3f9d5507f7d6484e7b6baaf8d0
sigprocmask has undefined behavior when called from a thread.
Replacing with pthread_sigmask to ensure correct behavior if
logwrap() gets called from a thread.
Change-Id: I77b6959d345eac8d7b90039ed8144ead8c19a00c
- Wait for the child to exit before propagating SIGINT and SIGQUIT
to the parent
- Add ignore_int_quit argument to logwrap() that gives the caller the
option to ignore SIGINT and SIGQUIT while logwrap is running
Change-Id: If5c96cf23094917211310f00aa6aed515f110f5b
Always exit the child process with _exit() rather than exit() to ensure none
of the parent's atexit functions get called if the child needs to exit before
calling exec.
Change-Id: I6a75111ef1bb3468c114c98743565471cf82c9dd
Android allows all users to write to log.
The setuid/setgid call is unneeded and could cause unintended
side effects when called from daemons or programs that need
to run as root.
Change-Id: I3bdb26eaa4363ef037615e45a1a5cb1ceb4088f3
Switch to a signal handler to monitor SIGCHLD.
Also, clean up the exit path and log a warning when the
previous SIGCHLD sigaction is not default or ignore.
Change-Id: I7ef7daabee18d80e9e82fba3943cf1d03b504ae3
Sometimes the read on the PTY can wait indefinitely if the child
dies. By using a poll statement that monitors both the output
of the child and its state we prevent this from happening.
Change-Id: I51d5556c66f039bca673145ca72db262977e1689
Abstracting the functionality of logwrapper into a library and making
use of it for the logwrapper executable.
Change-Id: I2bcf722413f3a8454c6f52137dec86c4477fb8b5