On Sun, 2006-11-19 at 20:29 +0000, Sevan / Venture37 wrote:
> Chillispot 1.1 uses clearenv() which is not available in FreeBSD. What's
> the best way for dealing with this, atm I'm using the following patch to
> the source code which seems to work & none of the testers have reported
> back with any problems. Is there a better way to deal with the issue??
> +#ifdef HAVE_CLEARENV
>    if (clearenv() != 0) {
>      sys_err(LOG_ERR, __FILE__, __LINE__, errno,
>           "clearenv() did not return 0!");
>      exit(0);
>    }
> +#else
> +        extern char **environ;
> +     environ[0] = NULL;
> +        if (environ[0] != NULL) {
> +    sys_err(LOG_ERR, __FILE__, __LINE__, errno,
> +            "Venture37 doesn't know what he's doing!!!");
> +    exit(0);
> +  }
> +#endif

This will work, but you do not need the check to make sure environ[0] is
NULL.  And you should declare extern char **environ at the top of a
block so that the code compiles on non-C99 compilers.  This might make
things a bit cleaner:

int
my_cleanenv (void)
{
#ifdef HAVE_CLEARENV
        return cleanenv();
#else
        extern char **environ;
        environ[0] = NULL;
        return 0;
#endif
}
...

if (my_cleanenv() != 0) {
...

Joe

-- 
PGP Key : http://www.marcuscom.com/pgp.asc

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to