From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,ed86965848f8610b X-Google-Attributes: gid103376,public From: "David C. Hoos, Sr" Subject: Re: Reading environment variables in ADA? Date: 1998/09/12 Message-ID: #1/1 X-Deja-AN: 390859555 References: <6tdl75$qs6$2@nyheter.chalmers.se> Newsgroups: comp.lang.ada X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 Date: 1998-09-12T00:00:00+00:00 List-Id: 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.