diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-11-22 12:44:56 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-11-22 12:44:56 +0100 |
commit | 99533da50db89318c7ab7ae3e7a28c261fb88e84 (patch) | |
tree | 706b22c063b3ec29b9cb63be7ac8aa1bcdb8b865 /guix/build/utils.scm | |
parent | e6039b9c70c658d648723a2d331f1c9637b49126 (diff) | |
download | gnu-guix-99533da50db89318c7ab7ae3e7a28c261fb88e84.tar gnu-guix-99533da50db89318c7ab7ae3e7a28c261fb88e84.tar.gz |
utils: Add 'elf-file?'.
* guix/build/utils.scm (elf-file?): New procedure.
Diffstat (limited to 'guix/build/utils.scm')
-rw-r--r-- | guix/build/utils.scm | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/guix/build/utils.scm b/guix/build/utils.scm index bfbc4dd43e..fcf6dfc12c 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -36,6 +36,7 @@ directory-exists? executable-file? call-with-ascii-input-file + elf-file? with-directory-excursion mkdir-p copy-recursively @@ -106,6 +107,17 @@ return values of applying PROC to the port." (lambda () (close-input-port port))))) +(define (elf-file? file) + "Return true if FILE starts with the ELF magic bytes." + (define (get-header) + (call-with-input-file file + (lambda (port) + (get-bytevector-n port 4)) + #:binary #t #:guess-encoding #f)) + + (equal? (get-header) + #vu8(#x7f #x45 #x4c #x46))) ;"\177ELF" + (define-syntax-rule (with-directory-excursion dir body ...) "Run BODY with DIR as the process's current directory." (let ((init (getcwd))) @@ -783,6 +795,7 @@ the previous wrapper." ;;; Local Variables: ;;; eval: (put 'call-with-output-file/atomic 'scheme-indent-function 1) +;;; eval: (put 'call-with-ascii-input-file 'scheme-indent-function 1) ;;; eval: (put 'with-throw-handler 'scheme-indent-function 1) ;;; eval: (put 'let-matches 'scheme-indent-function 3) ;;; eval: (put 'with-atomic-file-replacement 'scheme-indent-function 1) |