diff options
Diffstat (limited to 'lib/roken/setenv.c')
| -rw-r--r-- | lib/roken/setenv.c | 36 | 
1 files changed, 22 insertions, 14 deletions
| diff --git a/lib/roken/setenv.c b/lib/roken/setenv.c index 2bf09bec9d83..b4dbefef26fa 100644 --- a/lib/roken/setenv.c +++ b/lib/roken/setenv.c @@ -1,23 +1,23 @@  /* - * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska Högskolan + * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska Högskolan   * (Royal Institute of Technology, Stockholm, Sweden).   * All rights reserved. - *  + *   * Redistribution and use in source and binary forms, with or without   * modification, are permitted provided that the following conditions   * are met: - *  + *   * 1. Redistributions of source code must retain the above copyright   *    notice, this list of conditions and the following disclaimer. - *  + *   * 2. Redistributions in binary form must reproduce the above copyright   *    notice, this list of conditions and the following disclaimer in the   *    documentation and/or other materials provided with the distribution. - *  + *   * 3. Neither the name of the Institute nor the names of its contributors   *    may be used to endorse or promote products derived from this software   *    without specific prior written permission. - *  + *   * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -31,10 +31,7 @@   * SUCH DAMAGE.   */ -#ifdef HAVE_CONFIG_H  #include <config.h> -RCSID("$Id: setenv.c 14773 2005-04-12 11:29:18Z lha $"); -#endif  #include "roken.h" @@ -47,20 +44,31 @@ RCSID("$Id: setenv.c 14773 2005-04-12 11:29:18Z lha $");   * anyway.   */ -int ROKEN_LIB_FUNCTION +ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL  setenv(const char *var, const char *val, int rewrite)  { -    char *t; +#ifndef _WIN32 +    char *t = NULL;      if (!rewrite && getenv(var) != 0)  	return 0; -   -    asprintf (&t, "%s=%s", var, val); -    if (t == NULL) + +    if (asprintf (&t, "%s=%s", var, val) < 0 || t == NULL)  	return -1;      if (putenv(t) == 0)  	return 0;      else  	return -1; +#else  /* Win32 */ +    char dummy[8]; + +    if (!rewrite && GetEnvironmentVariable(var, dummy, sizeof(dummy)/sizeof(char)) != 0) +	return 0; + +    if (SetEnvironmentVariable(var, val) == 0) +	return -1; +    else +	return 0; +#endif  } | 
