diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2007-10-23 16:26:28 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2007-10-23 16:26:28 +0000 |
commit | 09ecdc85044c736c25ac58c0f37b3fb5394c2733 (patch) | |
tree | 158a991568397076fdbcca8e4f659241a4ef44d8 /winsup/cygwin/cygheap.h | |
parent | 5b9de9d9563f4fc14ab3982a61c51cb56fb75946 (diff) | |
download | cygnal-09ecdc85044c736c25ac58c0f37b3fb5394c2733.tar.gz cygnal-09ecdc85044c736c25ac58c0f37b3fb5394c2733.tar.bz2 cygnal-09ecdc85044c736c25ac58c0f37b3fb5394c2733.zip |
* cygheap.h (struct cwdstuff): Drop hash member. Drop get_hash,
get_initial, and fixup_after_exec declarations.
Convert win32 to UNICODE_STRING.
(cwdstuff::get_drive): Convert win32 path in current codepage.
(cwdstuff::set): Take native NT path.
* ntdll.h (struct _TEB): Typedef.
* path.cc (mount_info::conv_to_posix_path): Add variant taking
wide char DOS paths.
(symlink_info::posixify): Simplify concatenating cwd and relative path.
(hash_path_name): Drop special relative path handling.
(chdir): Drop special "drive only" handling. Call cwdstuff::set with
native path.
(cwdstuff::get_hash): Remove.
(windows_system_directory): Remove.
(_upp): Remove.
(get_user_proc_parms): Make inline. Get PEB pointer by calling
NtCurrentTeb.
(cwdstuff::init): Simplify.
(cwdstuff::set): Rework to handle incoming native NT path. Workaround
a Vista problem with CWD handle in the user process parameter block.
(cwdstuff::get): Simplify locking. Accommodate type change of win32.
* shared_info.h (mount_info): Add declaration for new conv_to_posix_path
method.
* strfuncs.cc (sys_wcstombs): Return correct length of created
multi-byte string.
Diffstat (limited to 'winsup/cygwin/cygheap.h')
-rw-r--r-- | winsup/cygwin/cygheap.h | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h index 212578612..bf93e4633 100644 --- a/winsup/cygwin/cygheap.h +++ b/winsup/cygwin/cygheap.h @@ -222,23 +222,19 @@ class muto; struct cwdstuff { char *posix; - char *win32; - DWORD hash; + UNICODE_STRING win32; DWORD drive_length; static muto cwd_lock; char *get (char *, int = 1, int = 0, unsigned = CYG_MAX_PATH); - DWORD get_hash (); DWORD get_drive (char * dst) { - get_initial (); - memcpy (dst, win32, drive_length); + cwd_lock.acquire (); + DWORD ret = sys_wcstombs (dst, PATH_MAX, win32.Buffer, drive_length); cwd_lock.release (); - return drive_length; + return ret; } void init (); - void fixup_after_exec (char *, char *, DWORD); - bool get_initial (); - int set (const char *, const char *, bool); + int set (PUNICODE_STRING, const char *, bool); }; #ifdef DEBUGGING |