20 lines
687 B
Racket
20 lines
687 B
Racket
(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)))))
|