| #!/bin/sh |
| |
| error () { |
| echo >&2 "error: $@" |
| exit 1 |
| } |
| |
| find_embedded_trash () { |
| while read -r line |
| do |
| case "$line" in |
| *Start\ of\ trash\ directory\ of\ \'t[0-9][0-9][0-9][0-9]-*\':*) |
| test_name="${line#*\'}" |
| test_name="${test_name%\'*}" |
| |
| return 0 |
| esac |
| done |
| |
| return 1 |
| } |
| |
| extract_embedded_trash () { |
| while read -r line |
| do |
| case "$line" in |
| *End\ of\ trash\ directory\ of\ \'$test_name\'*) |
| return |
| ;; |
| *) |
| printf '%s\n' "$line" |
| ;; |
| esac |
| done |
| |
| error "unexpected end of input" |
| } |
| |
| # Raw logs from Linux build jobs have CRLF line endings, while OSX |
| # build jobs mostly have CRCRLF, except an odd line every now and |
| # then that has CRCRCRLF. 'base64 -d' from 'coreutils' doesn't like |
| # CRs and complains about "invalid input", so remove all CRs at the |
| # end of lines. |
| sed -e 's/\r*$//' | \ |
| while find_embedded_trash |
| do |
| echo "Extracting trash directory of '$test_name'" |
| |
| extract_embedded_trash |base64 -d |tar xzp |
| done |