//
// Author: Hongwei Xi (hwxi AT cs DOT bu DOT edu)
// Time: September, 2010
//
(* ****** ****** *)
//
// book: AUP (2nd edition), pages 248 - 249
// section 5.2: Environment
//
(* ****** ****** *)

staload "libc/SATS/stdlib.sats" // for getenv

(* ****** ****** *)

(*
extern
fun getenv (name: string)
  : [l:addr] (strptr l -<lin,prf> void | strptr l) = "#atslib_getenv"
// end of [atslib_getenv]
*)

implement
main () = () where {
  val [l:addr] (fpf_x | x) = getenv ("LOGNAME")
  prval () = addr_is_gtez {l} ()
  val () = if strptr_is_null (x) then let
    val () = printf ("The variable LOGNAME not found\n", @())
  in
    // nothing
  end else let
    val () = printf (
      "The value of LOGNAME is \"%s\"\n", @(__cast x)
    ) where {
      extern castfn __cast {l:agz} (x: !strptr l):<> string
    } // end of [val]
  in
  end // end of [if]
  prval () = fpf_x (x)
} // end of [main]

(* ****** ****** *)

(* end of [AUP_5_2.dats] *)