;; -*- 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 }
  ))