Hi Steve,
    You are right. I searched for get-env and looked in released rather than latest documentation and I missed the fact that GET-ENV exists. And yes, I mistakenly referred to it at GETENV in a comment. The latest documentation in my sources is:

        (get-env name) - get from an environment variable
           name - the name (string or symbol) of the environment variable
           returns  - string value of the environment variable, nil if variable does not exist

I didn't check the Audacity sources, but it looks like version 1.3.12 does not have GET-ENV, but version 1.3.13 does. If you want to check sources, try this:
    cd audacity-src/lib-src/libnyquist/xlisp
    grep xget_env *
This prints:

xlftab.c:    xget_env(void), xload(void),xtranscript(void),
xlftab.c:{       "GET-ENV",                      S, xget_env             }, /* 308 */
xlisp.h:LVAL xget_env(void);
xlsys.c:/* xget_env - get the value of an environment variable */
xlsys.c:LVAL xget_env(void)

The key line is #2 (puts GET-ENV in the XLISP interpreters list of built-in functions). That line references xget_env, so if that line compiles and links, then xget_env (the actual implementation) is included, and it is accessible as GET-ENV in XLISP code.

This is in the latest Audacity sources.

-Roger


On 10/21/10 8:25 AM, Stevethefiddle wrote:
Thanks Roger.
There's a parallel discussion on the Audacity forum and the confusion with
(GETENV) has just been discovered.
http://forum.audacityteam.org/viewtopic.php?f=39&t=42368

However the real question here is concerning the (GET-ENV) function, or
whatever it was eventually named, that you committed to the Nyquist source
back in December 2009
ref.
http://audacity.238276.n2.nabble.com/Setting-Nyquist-working-directory-tp4134136p4154995.html 

I've looked in xlsys.c and the changes that relate to this time period are
in 	revision 1.4 by rbd, Sat Dec 12 03:31:55 2009 UTC
http://nyquist.cvs.sourceforge.net/viewvc/nyquist/nyquist/xlisp/xlsys.c?r1=1.3&r2=1.4
This only mentions "getenv", but it appears to tie in with the code that
edgar-rtf wrote for determining the HOME-PATH.

The practical task in question is how to reliably write a text file to a
location that is accessible to the average Audacity user. This was the same
question back in December last year and I thought it had been resolved, but
we are still unable to do so.

The users "HOME" directory would be an obvious choice of where to output a
text file as the user will have read/write access on all platforms. The
question now, as it was last December, is how to do that.

For some reason (unknown to myself) if I enter (get-env "HOME") or (get-env
'home) at the Nyquist prompt, it returns my Home directory "/home/steve".
This is with Audacity 1.3.13 alpha built from SVN head on Ubuntu 10.10.
However if I enter (get-env "HOME") at the Nyquist prompt in Audacity 1.3.12
I get "error: unbound function - GET-ENV"

Another user has tried (get-env 'home) on Audacity 1.3.12-alpha-Oct 20 2010
(CVS HEAD from yesterday) on Debian_5 (Lenny) and also gets "error: unbound
function - GET-ENV"

Another user has tested with Audacity 1.3.12 (release build) on Windows XP
and also gets "error: unbound function - GET-ENV"

So the question is, is there a way for a Nyquist plug-in to determine the
users "HOME-Path", and if so, how?