Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2007-10-23 20:26:28 +0400
committerCorinna Vinschen <corinna@vinschen.de>2007-10-23 20:26:28 +0400
commit09ecdc85044c736c25ac58c0f37b3fb5394c2733 (patch)
tree158a991568397076fdbcca8e4f659241a4ef44d8 /winsup/cygwin/cygheap.h
parent5b9de9d9563f4fc14ab3982a61c51cb56fb75946 (diff)
* 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.h14
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