comp.lang.ada
 help / color / mirror / Atom feed
From: "David C. Hoos, Sr" <david.c.hoos.sr@ada95.com>
Subject: Re: Reading environment variables in ADA?
Date: 1998/09/12
Date: 1998-09-12T00:00:00+00:00	[thread overview]
Message-ID: <dBQfzvl39GA.196@samson.airnet.net> (raw)
In-Reply-To: 6tdl75$qs6$2@nyheter.chalmers.se


Stefan Lingdell wrote in message <6tdl75$qs6$2@nyheter.chalmers.se>...
>How do you read environment variables in ADA? I'm
>programming under UNIX (SunOS) if that makes any
>difference.
>
You didn't really give full information -- e.g., what compiler you are
using), so the answer cannot be devinitive.

If you are using GNAT, you can use the (non-portable) Gnat.Os_Lib package,
as shown in this simple one-liner program:
with Ada.Command_Line;
with Ada.Text_Io;
with Gnat.Os_Lib;
procedure Env is
begin
   Ada.Text_Io.Put_Line
      (Gnat.Os_Lib.Getenv (Ada.Command_Line.Argument (1)).all);
end Env;

If you want a more portable solution, you can get the  an implementation of
the IEEE Standards 1003.5: 1992 and IEEE STD 1003.5b: 1996, also known as
the POSIX Ada Bindings, called florist at
ftp://ftp.cs.fsu.edu/pub/PART/POSIX-DOT5

It has a host of subprograms for manipulating environment variables in the
package Posix.Process_Environment, viz.:

   procedure Copy_From_Current_Environment
     (Env : in out Environment);

    procedure Copy_To_Current_Environment
     (Env : in Environment);

   procedure Copy_Environment
     (Source : in Environment;
      Target : in out Environment);

   function Environment_Value_Of
     (Name      : POSIX.POSIX_String;
      Env       : Environment;
      Undefined : POSIX.POSIX_String := "")
     return POSIX.POSIX_String;

   function Environment_Value_Of
     (Name      : POSIX.POSIX_String;
      Undefined : POSIX.POSIX_String := "")
     return POSIX.POSIX_String;

   function Is_Environment_Variable
     (Name : POSIX.POSIX_String;
      Env  : Environment)
     return Boolean;

   function Is_Environment_Variable
     (Name : POSIX.POSIX_String)
     return Boolean;

   procedure Clear_Environment
     (Env : in out Environment);

   procedure Clear_Environment;

   procedure Set_Environment_Variable
     (Name  : in POSIX.POSIX_String;
      Value : in POSIX.POSIX_String;
      Env   : in out Environment);

   procedure Set_Environment_Variable
     (Name  : in POSIX.POSIX_String;
      Value : in POSIX.POSIX_String);

   procedure Delete_Environment_Variable
     (Name  : in POSIX.POSIX_String;
      Env   : in out Environment);

   procedure Delete_Environment_Variable
     (Name  : in POSIX.POSIX_String);

   function Length (Env : Environment) return Natural;

   function Length return Natural;

   generic
      with procedure Action
        (Name  : in POSIX.POSIX_String;
         Value : in POSIX.POSIX_String;
         Quit  : in out Boolean);

   procedure For_Every_Environment_Variable
     (Env : in     Environment);

   generic
      with procedure Action
        (Name  : in POSIX.POSIX_String;
         Value : in POSIX.POSIX_String;
         Quit  : in out Boolean);
   procedure For_Every_Current_Environment_Variable;

   --  Process Working Directory

   procedure Change_Working_Directory
     (Directory_Name : in POSIX.Pathname);
   function Get_Working_Directory return POSIX.Pathname;

As a final alternative, you can declare your own function, using the pragma
Import to interface to the Solaris runtime function getenv.

Hope this helps

David C. Hoos, Sr.







  reply	other threads:[~1998-09-12  0:00 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-09-12  0:00 Reading environment variables in ADA? Stefan Lingdell
1998-09-12  0:00 ` David C. Hoos, Sr [this message]
1998-09-13  0:00 ` Steven Hovater
1998-09-17  0:00 ` Gisle S{lensminde
1998-10-06  0:00   ` Matthew Heaney
1998-10-06  0:00     ` dewarr
1998-10-06  0:00       ` Robert I. Eachus
1998-10-07  0:00         ` dewarr
1998-10-07  0:00           ` Robert I. Eachus
1998-10-13  0:00             ` Simon Wright
1998-09-17  0:00 ` Matthew Heaney
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox