diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-10-25 15:46:42 -0400 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-10-26 00:46:25 -0400 |
commit | 18a7244ee5d47b083bc3653a8d97ac6ef8bad5bc (patch) | |
tree | 4dbd0bc4f5b13113295d32cf50382f2c00ae436d /src/chroot-tools/librechroot | |
parent | 0d673eadca425d63c7367372575058324e9ecc91 (diff) |
librechroot+indent: Add in a bunch of extra '\r's to work-around the systemd bug
Diffstat (limited to 'src/chroot-tools/librechroot')
-rwxr-xr-x | src/chroot-tools/librechroot | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/chroot-tools/librechroot b/src/chroot-tools/librechroot index 4941b95..65977ea 100755 --- a/src/chroot-tools/librechroot +++ b/src/chroot-tools/librechroot @@ -178,10 +178,22 @@ arch_nspawn_flags=() sysd_nspawn_flags=() arch-nspawn() { local copydir=$1; shift + # XXX: SYSTEMD-STDOUT HACK if [[ -t 1 ]]; then cmd=("$@") else - cmd=(bash --noprofile --norc -c "set -o pipefail; $(printf '%q ' "$@") |&cat") + # This perl script is equivalent to `sed -s 's|\n|\r\n|g', but + # it doesn't line-buffer. + local perlcmd=' +my $size; +my $buffer; +while(1) { + $size=sysread(STDIN, $buffer, 40); + last if ($size < 1); + $buffer =~ s/\n/\r\n/g; + syswrite(STDOUT, $buffer); +}' + cmd=(bash --noprofile --norc -c "set -o pipefail; $(printf '%q ' "$@") |& perl -e $(printf '%q' "$perlcmd")") fi set +u # if an array is empty, it counts as unbound |