* 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.
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user