* external.cc (create_winenv): Rename from sync_winenv. Take
environment pointer as parameter and return pointer to corresponding win32 environment block if != NULL. Otherwise just sync as before. (cygwin_internal): Add CW_CVT_ENV_TO_WINENV case. * include/cygwin/version.h: Bump API minor number. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_CVT_ENV_TO_WINENV.
This commit is contained in:
parent
a06c3bf336
commit
8dfce03bfa
winsup/cygwin
|
@ -1,3 +1,12 @@
|
||||||
|
2011-10-05 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* external.cc (create_winenv): Rename from sync_winenv. Take
|
||||||
|
environment pointer as parameter and return pointer to corresponding
|
||||||
|
win32 environment block if != NULL. Otherwise just sync as before.
|
||||||
|
(cygwin_internal): Add CW_CVT_ENV_TO_WINENV case.
|
||||||
|
* include/cygwin/version.h: Bump API minor number.
|
||||||
|
* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_CVT_ENV_TO_WINENV.
|
||||||
|
|
||||||
2011-10-04 Corinna Vinschen <corinna@vinschen.de>
|
2011-10-04 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* net.cc (socketpair): Bind first socket to loopback only as well.
|
* net.cc (socketpair): Bind first socket to loopback only as well.
|
||||||
|
|
|
@ -132,12 +132,12 @@ check_ntsec (const char *filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy cygwin environment variables to the Windows environment. */
|
/* Copy cygwin environment variables to the Windows environment. */
|
||||||
static void
|
static PWCHAR
|
||||||
sync_winenv ()
|
create_winenv (const char * const *env)
|
||||||
{
|
{
|
||||||
int unused_envc;
|
int unused_envc;
|
||||||
PWCHAR envblock = NULL;
|
PWCHAR envblock = NULL;
|
||||||
char **envp = build_env (cur_environ (), envblock, unused_envc, false);
|
char **envp = build_env (env ?: cur_environ (), envblock, unused_envc, false);
|
||||||
PWCHAR p = envblock;
|
PWCHAR p = envblock;
|
||||||
|
|
||||||
if (envp)
|
if (envp)
|
||||||
|
@ -146,8 +146,12 @@ sync_winenv ()
|
||||||
cfree (*e);
|
cfree (*e);
|
||||||
cfree (envp);
|
cfree (envp);
|
||||||
}
|
}
|
||||||
|
/* If we got an env block, just return pointer to win env. */
|
||||||
|
if (env)
|
||||||
|
return envblock;
|
||||||
|
/* Otherwise sync win env of current process with its posix env. */
|
||||||
if (!p)
|
if (!p)
|
||||||
return;
|
return NULL;
|
||||||
while (*p)
|
while (*p)
|
||||||
{
|
{
|
||||||
PWCHAR eq = wcschr (p, L'=');
|
PWCHAR eq = wcschr (p, L'=');
|
||||||
|
@ -160,6 +164,7 @@ sync_winenv ()
|
||||||
p = wcschr (p, L'\0') + 1;
|
p = wcschr (p, L'\0') + 1;
|
||||||
}
|
}
|
||||||
free (envblock);
|
free (envblock);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -419,7 +424,7 @@ cygwin_internal (cygwin_getinfo_types t, ...)
|
||||||
try_to_debug ();
|
try_to_debug ();
|
||||||
break;
|
break;
|
||||||
case CW_SYNC_WINENV:
|
case CW_SYNC_WINENV:
|
||||||
sync_winenv ();
|
create_winenv (NULL);
|
||||||
res = 0;
|
res = 0;
|
||||||
break;
|
break;
|
||||||
case CW_CYGTLS_PADSIZE:
|
case CW_CYGTLS_PADSIZE:
|
||||||
|
@ -516,6 +521,13 @@ cygwin_internal (cygwin_getinfo_types t, ...)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CW_CVT_ENV_TO_WINENV:
|
||||||
|
{
|
||||||
|
char **posix_env = va_arg (arg, char **);
|
||||||
|
res = (uintptr_t) create_winenv (posix_env);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
set_errno (ENOSYS);
|
set_errno (ENOSYS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -420,12 +420,13 @@ details. */
|
||||||
249: Export pthread_condattr_getclock, pthread_condattr_setclock.
|
249: Export pthread_condattr_getclock, pthread_condattr_setclock.
|
||||||
250: Export clock_nanosleep.
|
250: Export clock_nanosleep.
|
||||||
251: RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND added.
|
251: RTLD_NODELETE, RTLD_NOLOAD, RTLD_DEEPBIND added.
|
||||||
|
252: CW_CVT_ENV_TO_WINENV added.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
|
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
|
||||||
|
|
||||||
#define CYGWIN_VERSION_API_MAJOR 0
|
#define CYGWIN_VERSION_API_MAJOR 0
|
||||||
#define CYGWIN_VERSION_API_MINOR 251
|
#define CYGWIN_VERSION_API_MINOR 252
|
||||||
|
|
||||||
/* There is also a compatibity version number associated with the
|
/* There is also a compatibity version number associated with the
|
||||||
shared memory regions. It is incremented when incompatible
|
shared memory regions. It is incremented when incompatible
|
||||||
|
|
|
@ -134,7 +134,8 @@ typedef enum
|
||||||
CW_INT_SETLOCALE,
|
CW_INT_SETLOCALE,
|
||||||
CW_CVT_MNT_OPTS,
|
CW_CVT_MNT_OPTS,
|
||||||
CW_LST_MNT_OPTS,
|
CW_LST_MNT_OPTS,
|
||||||
CW_STRERROR
|
CW_STRERROR,
|
||||||
|
CW_CVT_ENV_TO_WINENV
|
||||||
} cygwin_getinfo_types;
|
} cygwin_getinfo_types;
|
||||||
|
|
||||||
/* Token type for CW_SET_EXTERNAL_TOKEN */
|
/* Token type for CW_SET_EXTERNAL_TOKEN */
|
||||||
|
|
Loading…
Reference in New Issue