| 1 | #!/usr/bin/env bash
|
| 2 | #
|
| 3 | # Copied from hard-coded-descriptors/ in oilshell/blog-code, which was copied
|
| 4 | # from Nix setup.sh. See issue #26.
|
| 5 |
|
| 6 | set -o nounset
|
| 7 | set -o pipefail
|
| 8 | set -o errexit
|
| 9 |
|
| 10 | # My simpler rewrite.
|
| 11 | isElfSimple() {
|
| 12 | local path=$1 # double quotes never necessary on RHS
|
| 13 | local magic
|
| 14 |
|
| 15 | # read 4 bytes from $path, without escaping, into $magic var
|
| 16 | read -r -n 4 magic < "$path"
|
| 17 |
|
| 18 | # Return the exit code of [[
|
| 19 | [[ "$magic" =~ ELF ]]
|
| 20 | }
|
| 21 |
|
| 22 | isElfSimpleWithStdin() {
|
| 23 | seq 3 > /tmp/3.txt
|
| 24 | while read line; do
|
| 25 | echo $line
|
| 26 | isElfSimple /bin/true && echo YES
|
| 27 | isElfSimple $0 || echo NO
|
| 28 | echo
|
| 29 | done < /tmp/3.txt
|
| 30 | }
|
| 31 |
|
| 32 | "$@"
|