racket/collects/compiler/private/winsubsys.ss
2005-06-22 20:28:36 +00:00

20 lines
687 B
Scheme

(module winsubsys mzscheme
(provide set-subsystem)
(define DF_NewHeaderOffset #x3C)
(define DF_SubsystemOffset #x5C)
(define (set-subsystem file subsys)
(let-values ([(in out) (open-input-output-file file 'update)])
(file-position in DF_NewHeaderOffset)
(let ([offset (integer-bytes->integer (read-bytes 4 in) #f #f)])
(file-position out (+ offset DF_SubsystemOffset))
(write-bytes (integer->integer-bytes
(case subsys
[(windows) 2]
[(console) 3])
4 #f #f)
out)
(close-input-port in)
(close-output-port out)))))