getenv() can't differentiate "defined but empty" and "undefined"

Martin Maechler Martin Maechler <>
Wed, 29 Sep 1999 17:52:17 +0200

>>>>> On Wed, 29 Sep 1999 Prof Brian D Ripley <> said:

    BDR> On Wed, 29 Sep 1999, Martin Maechler wrote:
    >> getenv(<varname>) currently returns "" if the <varname> is
    >> undefined.
    >> However, if <varname> is defined but empty, getenv(<varname>) still
    >> only returns "".
    >> I think this is quite unfortunate but consistent with the prototype.
    >> ---
    >> I'd propose to change the current behavior.  Something which should
    >> be pretty back compatible would for the first case (undefined
    >> environment variable) to return "" with an attribute "defined" set
    >> to FALSE i.e.  return(structure("", defined = FALSE))
    >> Does anyone see a problem with this approach ?

    BDR> I think it should really be NULL if undefined: attributes which
    BDR> may or may not be there are a nuisance. 

that was my first thought, as well, however ...

    BDR> The only problem I can
    BDR> see is in system.gnw.r, whihc doe use nchar on getenv.

and all the user code from S and R which assumes that getenv() returns 
a character() as it is documented !

    BDR> Small point: when do you want to change this? It is
    BDR> platform-specific code.

 (why does this need to be specific? 
   -- yes I was too lazy to study the code ..)

r-devel mailing list -- Read
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: