diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2008-03-12 12:41:50 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2008-03-12 12:41:50 +0000 |
commit | edab6053a24d49f3443fbfdbac2c330caf50b030 (patch) | |
tree | d1b6a47a9305a66c02b67ce3a57e8005cec93f13 /winsup/cygwin/dtable.cc | |
parent | 674310fb403f78ecf8fab1bcfdb169cf7ff95390 (diff) | |
download | cygnal-edab6053a24d49f3443fbfdbac2c330caf50b030.tar.gz cygnal-edab6053a24d49f3443fbfdbac2c330caf50b030.tar.bz2 cygnal-edab6053a24d49f3443fbfdbac2c330caf50b030.zip |
* winsup.h (NT_MAX_PATH): Revert ill-advised change to 32767.
Accommodate change throughout.
* cygwin.din (cygwin_conv_path): Export.
(cygwin_conv_path_list): Export.
(cygwin_create_path): Export.
* dcrt0.cc (dll_crt0_1): Use cygwin_conv_path.
* dtable.cc (handle_to_fn): Ditto. Don't expect UNICODE_STRING being
0-terminated.
* environ.cc (env_plist_to_posix): New helper function.
(env_plist_to_win32): Ditto.
(env_path_to_posix): Ditto.
(env_path_to_win32): Ditto.
(return_MAX_PATH): Remove.
(conv_envvars): Use new helper functions. Drop removed members.
(win_env::operator =): Accommodate removal of path length functions.
(win_env::add_cache): Accommodate new env helper function API.
(posify): Ditto.
* environ.h (struct win_env): Ditto. Remove path length function
pointers since they are unused.
* path.cc (warn_msdos): Use cygwin_conv_path.
(getfileattr): Use new tmp_pathbuf::u_get method.
(fillout_mntent): Ditto.
(symlink_info::check): Ditto.
(path_conv::check): Use sizeof (WCHAR) instead of constant 2.
(symlink_info::check_reparse_point): Ditto.
(conv_path_list): Get max size of target string as argument. Call
cygwin_conv_path as helper function.
(cygwin_conv_path): New function.
(cygwin_create_path): New function.
(cygwin_conv_to_win32_path): Just call cygwin_conv_path with size set
to MAX_PATH.
(cygwin_conv_to_full_win32_path): Ditto.
(cygwin_conv_to_posix_path): Ditto.
(cygwin_conv_to_full_posix_path): Ditto.
(conv_path_list_buf_size): Add FIXME comment.
(env_PATH_to_posix): Rename from env_win32_to_posix_path_list.
Add size argument as required for env helper functions.
(cygwin_win32_to_posix_path_list): Call conv_path_list with size set to
MAX_PATH.
(cygwin_posix_to_win32_path_list): Ditto.
(cygwin_conv_path_list): New function.
(cwdstuff::get): Fix length argument in call to sys_wcstombs.
* spawn.cc (find_exec): Use cygwin_conv_path_list.
* tls_pbuf.h (tmp_pathbuf::u_get: New method.
* uinfo.cc (cygheap_user::ontherange): Allocate temporary path buffers
using tmp_pathbuf. Use cygwin_conv_path.
* winf.cc (av::unshift): Use cygwin_conv_path.
* include/cygwin/version.h: Bump API minor number.
* include/sys/cygwin.h: Comment out old cygwin32_XXX API.
Mark old path handling API as deprecated.
(cygwin_conv_path_t): Typedef. Define values.
(cygwin_conv_path): Declare.
(cygwin_create_path): Declare.
(cygwin_conv_path_list): Declare.
Diffstat (limited to 'winsup/cygwin/dtable.cc')
-rw-r--r-- | winsup/cygwin/dtable.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 7cf4136f6..f1eb20fd3 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -854,7 +854,7 @@ handle_to_fn (HANDLE h, char *posix_fn) memset (fnbuf, 0, len); ntfn = (OBJECT_NAME_INFORMATION *) fnbuf; - ntfn->Name.MaximumLength = NT_MAX_PATH * sizeof (WCHAR); + ntfn->Name.MaximumLength = (NT_MAX_PATH - 1) * sizeof (WCHAR); ntfn->Name.Buffer = (WCHAR *) (ntfn + 1); NTSTATUS res = NtQueryObject (h, ObjectNameInformation, ntfn, len, NULL); @@ -876,7 +876,8 @@ handle_to_fn (HANDLE h, char *posix_fn) ntfn->Name.Buffer[ntfn->Name.Length / sizeof (WCHAR)] = 0; char *win32_fn = tp.c_get (); - sys_wcstombs (win32_fn, NT_MAX_PATH, ntfn->Name.Buffer); + sys_wcstombs (win32_fn, NT_MAX_PATH, ntfn->Name.Buffer, + ntfn->Name.Length / sizeof (WCHAR)); debug_printf ("nt name '%s'", win32_fn); if (!strncasematch (win32_fn, DEVICE_PREFIX, DEVICE_PREFIX_LEN) || !QueryDosDevice (NULL, fnbuf, len)) @@ -947,7 +948,8 @@ handle_to_fn (HANDLE h, char *posix_fn) } if (!justslash) - cygwin_conv_to_full_posix_path (w32, posix_fn); + cygwin_conv_path (CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, w32, posix_fn, + NT_MAX_PATH); else { char *s, *d; |