da086d020c
user name change. (cygheap_user::set_logsrv): Allocate enough space for leading \\ so that we can put this in the environment, if needed. * cygheap.h (homebodies): New enum. (cygheap_user::homedrive): New field. (cygheap_user::homepath): Ditto. (cygheap_user::env_logsrv): New method. (cygheap_user::env_homepath): New method. (cygheap_user::env_homedrive): New method. (cygheap_user::env_userprofile): New method. (cygheap_user::ontherange): New method. * environ.cc (envsize): Eliminate debugging argument. (environ_init): Assume that envc counts number of elments not total size. (spenv): New class. (spenvs): New array, renamed from forced_winenv_vars, using spenv. (spenv::retrieve): New method. (build_env): Rename from 'winenv' -- one stop shopping for building new environment blocks for both windows and "unix". * environ.h (build_env: Declare. (winenv): Delete declaration. (envsize): Ditto. * spawn.cc (spawn_guts): Use build_env to build windows and cygwin environment blocks. * uinfo.cc (internal_getlogin): Eliminate environment manipulation. Default to info from GetUserName if it exists. Move HOMEPATH and HOMEDRIVE stuff elsewhere. Move HOME setting elsewhere. Only set HOME environment variable in processes that are not parented by a cygwin process. (cygheap_user::ontherange): Define new method. (cygheap_user::env_logsrv): Ditto. (cygheap_user::env_homepath): Ditto. (cygheap_user::env_homedrive): Ditto. (cygheap_user::env_userprofile): Ditto.
41 lines
1.4 KiB
C
41 lines
1.4 KiB
C
/* environ.h: Declarations for environ manipulation
|
|
|
|
Copyright 2000, 2001, 2002 Red Hat, Inc.
|
|
|
|
This file is part of Cygwin.
|
|
|
|
This software is a copyrighted work licensed under the terms of the
|
|
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
|
details. */
|
|
|
|
/* Initialize the environment */
|
|
void environ_init (char **, int);
|
|
|
|
/* The structure below is used to control conversion to/from posix-style
|
|
file specs. Currently, only PATH and HOME are converted, but PATH
|
|
needs to use a "convert path list" function while HOME needs a simple
|
|
"convert to posix/win32". For the simple case, where a calculated length
|
|
is required, just return MAX_PATH. *FIXME* */
|
|
struct win_env
|
|
{
|
|
const char *name;
|
|
size_t namelen;
|
|
char *posix;
|
|
char *native;
|
|
int (*toposix) (const char *, char *);
|
|
int (*towin32) (const char *, char *);
|
|
int (*posix_len) (const char *);
|
|
int (*win32_len) (const char *);
|
|
void add_cache (const char *in_posix, const char *in_native = NULL);
|
|
const char * get_native () const {return native ? native + namelen : NULL;}
|
|
const char * get_posix () const {return posix ? posix : NULL;}
|
|
};
|
|
|
|
win_env * __stdcall getwinenv (const char *name, const char *posix = NULL);
|
|
|
|
void __stdcall update_envptrs ();
|
|
extern char **__cygwin_environ, ***main_environ;
|
|
extern "C" char __stdcall **cur_environ ();
|
|
char ** __stdcall build_env (const char * const *envp, char *&envblock,
|
|
int &envc, bool need_envblock);
|