<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: [Bug][VM][OSProcessPlugin]Does not run on Solaris</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>&gt; Sorry for the inconvenience. If you happen to know the </FONT>
<BR><FONT SIZE=2>&gt; Solaris equivalent</FONT>
<BR><FONT SIZE=2>&gt; of setenv(3), please let me know so I can fix it correctly.</FONT>
</P>

<P><FONT SIZE=2>It looks like Solaris supports getenv() and putenv().</FONT>
<BR><FONT SIZE=2>Man pages follow:</FONT>
</P>

<P><FONT SIZE=2>Standard C Library Functions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getenv(3C)</FONT>
</P>

<P><FONT SIZE=2>NAME</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; getenv - return value for environment name</FONT>
</P>

<P><FONT SIZE=2>SYNOPSIS</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;stdlib.h&gt;</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; char *getenv(const char *name);</FONT>
</P>

<P><FONT SIZE=2>DESCRIPTION</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The getenv() function searches&nbsp; the&nbsp; environment&nbsp; list&nbsp; (see</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; environ(5))&nbsp; for a string of the form name=value and, if the</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; string is present, returns a pointer to&nbsp; the&nbsp; value&nbsp; in&nbsp; the</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; current environment.</FONT>
</P>

<P><FONT SIZE=2>RETURN VALUES</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; If successful, getenv() returns a pointer to&nbsp; the&nbsp; value&nbsp; in</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; the&nbsp; current&nbsp; environment;&nbsp; otherwise,&nbsp; it&nbsp; returns&nbsp; a&nbsp; null</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; pointer.</FONT>
</P>

<P><FONT SIZE=2>USAGE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The getenv() function can&nbsp; be&nbsp; safely&nbsp; called&nbsp; from&nbsp; a&nbsp; mul-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; tithreaded&nbsp; application.&nbsp;&nbsp; Care must be exercised when using</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; both getenv() and&nbsp; putenv(3C) in&nbsp; a&nbsp; multithreaded&nbsp; applica-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; tion.&nbsp;&nbsp; These&nbsp; functions&nbsp; examine and modify the environment</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; list, which is shared by all&nbsp; threads&nbsp; in&nbsp; an&nbsp;&nbsp; application.</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The&nbsp; system prevents the list from being accessed simultane-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; ously by two&nbsp; different&nbsp; threads.&nbsp;&nbsp; It&nbsp; does&nbsp; not,&nbsp; however,</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; prevent two threads from successively accessing the environ-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; ment list using&nbsp; getenv() or putenv(3C).</FONT>
</P>

<P><FONT SIZE=2>ATTRIBUTES</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; See attributes(5) for descriptions of the&nbsp; following&nbsp; attri-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; butes:</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; ____________________________________________________________</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ATTRIBUTE TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ATTRIBUTE VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; |_____________________________|_____________________________|</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; | MT-Level&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Safe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; |_____________________________|_____________________________|</FONT>
</P>

<P><FONT SIZE=2>SEE ALSO</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; exec(2), putenv(3C), attributes(5), environ(5)</FONT>
</P>

<P><FONT SIZE=2>SunOS 5.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last change: 29 Dec 1996&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</FONT>
<BR><FONT SIZE=2>=================================================================</FONT>
<BR><FONT SIZE=2>Standard C Library Functions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putenv(3C)</FONT>
</P>

<P><FONT SIZE=2>NAME</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; putenv - change or add value to environment</FONT>
</P>

<P><FONT SIZE=2>SYNOPSIS</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; #include &lt;stdlib.h&gt;</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; int putenv(char *string);</FONT>
</P>

<P><FONT SIZE=2>DESCRIPTION</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The putenv() function makes the&nbsp; value&nbsp; of&nbsp; the&nbsp; environment</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; variable&nbsp; name&nbsp; equal to value by altering an existing vari-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; able or creating a new&nbsp; one.&nbsp; In&nbsp; either&nbsp; case,&nbsp; the&nbsp; string</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; pointed&nbsp; to&nbsp; by&nbsp; string&nbsp; becomes part of the environment, so</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; altering the string will change the environment.</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The&nbsp; string&nbsp; argument&nbsp; points&nbsp; to&nbsp; a&nbsp; string&nbsp; of&nbsp; the&nbsp;&nbsp; form</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; name=value.&nbsp; The space used by string is no longer used once</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; a new string-defining name is passed to putenv().</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The&nbsp; putenv()&nbsp; function&nbsp; uses&nbsp; malloc(3C)&nbsp; to&nbsp; enlarge&nbsp;&nbsp; the</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; environment.</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; After putenv() is called, environment variables are&nbsp; not&nbsp; in</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; alphabetical order.</FONT>
</P>

<P><FONT SIZE=2>RETURN VALUES</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The putenv() functions returns a non-zero value&nbsp; if&nbsp; it&nbsp; was</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; unable&nbsp; to&nbsp; obtain&nbsp; enough&nbsp; space&nbsp; using&nbsp;&nbsp; malloc(3C) for an</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; expanded environment. Otherwise, 0 is returned.</FONT>
</P>

<P><FONT SIZE=2>ERRORS</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The putenv() function may fail if:</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; ENOMEM</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Insufficient memory was available.</FONT>
</P>

<P><FONT SIZE=2>USAGE</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The&nbsp; putenv()&nbsp; function&nbsp; can&nbsp; be&nbsp; safely&nbsp; called&nbsp; from&nbsp; mul-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; tithreaded&nbsp; programs.&nbsp;&nbsp; Caution must be exercised when using</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; this function&nbsp; and&nbsp; getenv(3C)&nbsp; in&nbsp; multithreaded&nbsp; programs.</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; These&nbsp; functions&nbsp; examine&nbsp; and&nbsp; modify the environment list,</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; which is shared by all threads in&nbsp; a&nbsp; program.&nbsp;&nbsp; The&nbsp; system</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; prevents&nbsp; the list from being accessed simultaneously by two</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; different&nbsp; threads.&nbsp;&nbsp; It&nbsp; does&nbsp; not,&nbsp; however,&nbsp; prevent&nbsp; two</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; threads&nbsp; from&nbsp; successively&nbsp; accessing&nbsp; the environment list</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; using putenv() or getenv().</FONT>
</P>

<P><FONT SIZE=2>ATTRIBUTES</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; See attributes(5) for descriptions of the&nbsp; following&nbsp; attri-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; butes:</FONT>
</P>

<P><FONT SIZE=2>SunOS 5.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last change: 12 Jan 1998&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</FONT>
</P>

<P><FONT SIZE=2>Standard C Library Functions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putenv(3C)</FONT>
</P>

<P><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; ____________________________________________________________</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ATTRIBUTE TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ATTRIBUTE VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; |_____________________________|_____________________________|</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; | MT-Level&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Safe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; |_____________________________|_____________________________|</FONT>
</P>

<P><FONT SIZE=2>SEE ALSO</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; exec(2), getenv(3C), malloc(3C), attributes(5), environ(5)</FONT>
</P>

<P><FONT SIZE=2>WARNINGS</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; The string argument should not be an automatic variable.&nbsp; It</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; should&nbsp; be&nbsp; declared static if it is declared within a func-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; tion because it cannot be automatically declared.&nbsp; A&nbsp; poten-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; tial&nbsp; error&nbsp; is&nbsp; to&nbsp; call&nbsp; putenv()&nbsp; with&nbsp; a&nbsp; pointer&nbsp; to an</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; automatic variable as the argument and to then exit the cal-</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp; ling function while string is still part of the environment.</FONT>
</P>

<P><FONT SIZE=2>SunOS 5.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Last change: 12 Jan 1998&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2</FONT>
</P>
<BR>

</BODY>
</HTML>