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>2009-05-13 19:00:06 +0400
committerCorinna Vinschen <corinna@vinschen.de>2009-05-13 19:00:06 +0400
commitb6c6ea43f30ee958ca1f0af950af01f683f7b5c9 (patch)
tree16b5a88b3b3ae4bad7bbe8747a6873b7a9ed2c02 /winsup/cygwin/cygheap.h
parent136033a8528352fb63fd25534de9fc10173a2576 (diff)
* cygheap.h (cwdstuff): Convert to class. Make posix and dir private.
(cwdstuff::get_posix): New method. (cwdstuff::reset_posix): New method. * dcrt0.cc (dll_crt0_1): Call setlocale rather than _setlocale_r. * environ.cc (environ_init): Ditto. Prefer "C" locale over current codepage default locale. * path.cc (chdir): Use cwdstuff::get_posix method instead of accessing cwdstuff::posix directly. (cwdstuff::set): Defer creating posix path to first usage. (cwdstuff::get_posix): Create posix path if it's empty, and return it. (cwdstuff::get): Create posix path if it's empty. * strfuncs.cc (sys_cp_wcstombs): Use UTF-8 conversion in the "C" locale. (sys_cp_mbstowcs): Ditto. * syscalls.cc (gen_full_path_at): Fetch CWD posix path locked. (setlocale): Implement here. Reset CWD posix path.
Diffstat (limited to 'winsup/cygwin/cygheap.h')
-rw-r--r--winsup/cygwin/cygheap.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/cygheap.h b/winsup/cygwin/cygheap.h
index fe2333c74..0932f865d 100644
--- a/winsup/cygwin/cygheap.h
+++ b/winsup/cygwin/cygheap.h
@@ -225,13 +225,17 @@ public:
class muto;
-struct cwdstuff
+class cwdstuff
{
+private:
char *posix;
- UNICODE_STRING win32;
HANDLE dir;
+public:
+ UNICODE_STRING win32;
DWORD drive_length;
static muto cwd_lock;
+ char *get_posix ();
+ void reset_posix () { if (posix) posix[0] = '\0'; }
char *get (char *, int = 1, int = 0, unsigned = NT_MAX_PATH);
HANDLE get_handle () { return dir; }
DWORD get_drive (char * dst)