;; -*- Mode: Irken -*-
(define (system cmd)
(%%cexp (string -> int)
"system (%0)"
(zero-terminate cmd)))
(define (cnull? val)
(%%cexp (cstring -> bool) "%0==NULL" val))
(define (getenv name)
(let ((val (%%cexp (string -> cstring)
"getenv (%0)"
(zero-terminate name))))
(if (cnull? val)
""
(copy-cstring val))))
(define sys
(let ((argc (%%cexp (-> int) "argc"))
(argv
(let ((v (make-vector argc "")))
(define (get-arg n)
(copy-cstring (%%cexp (int -> cstring) "argv[%0]" n)))
(let loop ((n argc))
(cond ((zero? n) v)
(else
(set! v[(- n 1)] (get-arg (- n 1)))
(loop (- n 1))))))))
{ argc=argc argv=argv }
))