params/src/Env.m3


Copyright (C) 1994, Digital Equipment Corp.
 by Steve Glassman, Mark Manasse and Greg Nelson           
<*PRAGMA LL*>

UNSAFE MODULE Env;

IMPORT Cstdlib, M3toC, RTArgs, Text;

PROCEDURE Get(nm: TEXT): TEXT =
  VAR cRes := Cstdlib.getenv(M3toC.TtoS(nm));
  BEGIN
    IF cRes = NIL THEN
      RETURN NIL
    ELSE
      RETURN M3toC.CopyStoT(cRes)
    END
  END Get;

EXCEPTION FatalError; <* FATAL FatalError *>

PROCEDURE GetNth(n: CARDINAL; VAR (*OUT*) nm, val: TEXT) =
  VAR
    env: TEXT;
    i: CARDINAL;
  BEGIN
    IF n >= Count THEN RAISE FatalError END;
    env := RTArgs.GetEnv(n);
    i := 0;
    WHILE Text.GetChar(env, i) # '=' DO INC(i) END;
    nm := Text.Sub(env, 0, i);
    val := Text.Sub(env, i + 1, Text.Length(env)-(i+1));
  END GetNth;

BEGIN
  Count := RTArgs.EnvC();
END Env.