From 302c648042ae1d7f8e0e95305dd50a9ed025e7e5 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 2 Oct 2018 00:40:30 -0400 Subject: distcc-tool: Simplify - I'm pretty sure the "& trap 'jobs -p | xargs kill' EXIT; wait" bit is 100% superstition. - Sprinkle `exec` in there to use fewer PIDs - Don't bother with variables for short constant values, just hard-code them - Use `sleep infinity` instead of a dumb socat if we need to sleep forever without doing anything. --- src/chroot-tools/distcc-tool | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/chroot-tools/distcc-tool b/src/chroot-tools/distcc-tool index 5bb4f7b..7d9c283 100755 --- a/src/chroot-tools/distcc-tool +++ b/src/chroot-tools/distcc-tool @@ -24,6 +24,7 @@ # This program has very few dependencies: # - bash: 4.4 or newer (for @Q escaping) # - socat +# - sleep: must accept "infinity" # - cat: any version # - rm: any version # - sed: any version @@ -173,9 +174,7 @@ parse_DISTCC_HOSTS() { done if $forward_ports; then if [[ $newport == 8000 ]]; then - # listen on port 8000, but immediatly close, just so that we are - # listening on something - socat TCP-LISTEN:${newport},reuseaddr,fork SYSTEM:true & + exec sleep infinity fi trap "jobs -p | xargs -r kill --" EXIT wait @@ -195,7 +194,7 @@ server() { [[ $# -eq 0 ]] || panic local host port read -r host port - socat STDIO TCP:"$host:$port" + exec socat STDIO TCP:"$host:$port" } # Usage: client HOST PORT @@ -204,8 +203,7 @@ server() { # socket. client() { [[ $# -eq 2 ]] || panic - local file=/socket - { printf '%s\n' "$*"; cat; } | socat UNIX-CONNECT:"$file" STDIO + { printf '%s\n' "$*"; exec cat; } | exec socat UNIX-CONNECT:'/socket' STDIO } ################################################################################ @@ -220,9 +218,7 @@ odaemon() { cd "$chrootpath" umask 111 - socat UNIX-LISTEN:"./socket",fork SYSTEM:"${0@Q} server" & - trap "jobs -p | xargs -r kill --; rm -f -- ./socket" EXIT - wait + exec socat UNIX-LISTEN:'./socket',fork SYSTEM:"${0@Q} server" } # Usage: idaemon DISTCC_HOSTS -- cgit v1.2.2