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:
-rw-r--r--winsup/cygwin/ChangeLog8
-rw-r--r--winsup/cygwin/path.cc16
-rw-r--r--winsup/cygwin/sec_auth.cc12
-rw-r--r--winsup/cygwin/security.h3
4 files changed, 21 insertions, 18 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index f0beeccd6..c48073f63 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,11 @@
+2009-05-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * sec_auth.cc (str2uni_cat): Move from here...
+ * path.cc (str2uni_cat): ...to here. Simplify. Make static inline.
+ (get_nt_native_path): Use RtlAppendUnicodeToString rather than
+ str2uni_cat for constant strings for speed.
+ * security.h (str2uni_cat): Drop declaration.
+
2009-05-08 Corinna Vinschen <corinna@vinschen.de>
IWAMURO Motonori <deenheart@gmail.com>
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index e39a4b2fb..ec5c40b5c 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -428,6 +428,16 @@ transform_chars (PUNICODE_STRING upath, USHORT start_idx)
upath->Buffer + upath->Length / sizeof (WCHAR) - 1);
}
+static inline void
+str2uni_cat (UNICODE_STRING &tgt, const char *srcstr)
+{
+ int len = sys_mbstowcs (tgt.Buffer + tgt.Length / sizeof (WCHAR),
+ (tgt.MaximumLength - tgt.Length) / sizeof (WCHAR),
+ srcstr);
+ if (len)
+ tgt.Length += (len - 1) * sizeof (WCHAR);
+}
+
PUNICODE_STRING
get_nt_native_path (const char *path, UNICODE_STRING& upath)
{
@@ -438,7 +448,7 @@ get_nt_native_path (const char *path, UNICODE_STRING& upath)
{
if (path[1] == ':') /* X:\... */
{
- str2uni_cat (upath, "\\??\\");
+ RtlAppendUnicodeToString (&upath, L"\\??\\");
str2uni_cat (upath, path);
/* The drive letter must be upper case. */
upath.Buffer[4] = towupper (upath.Buffer[4]);
@@ -452,13 +462,13 @@ get_nt_native_path (const char *path, UNICODE_STRING& upath)
else if ((path[2] != '.' && path[2] != '?')
|| path[3] != '\\') /* \\server\share\... */
{
- str2uni_cat (upath, "\\??\\UNC\\");
+ RtlAppendUnicodeToString (&upath, L"\\??\\UNC\\");
str2uni_cat (upath, path + 2);
transform_chars (&upath, 8);
}
else /* \\.\device or \\?\foo */
{
- str2uni_cat (upath, "\\??\\");
+ RtlAppendUnicodeToString (&upath, L"\\??\\");
str2uni_cat (upath, path + 4);
}
return &upath;
diff --git a/winsup/cygwin/sec_auth.cc b/winsup/cygwin/sec_auth.cc
index a456eac26..82fa144fe 100644
--- a/winsup/cygwin/sec_auth.cc
+++ b/winsup/cygwin/sec_auth.cc
@@ -126,18 +126,6 @@ str2buf2lsa (LSA_STRING &tgt, char *buf, const char *srcstr)
memcpy (buf, srcstr, tgt.MaximumLength);
}
-void
-str2uni_cat (UNICODE_STRING &tgt, const char *srcstr)
-{
- int len = sys_mbstowcs (tgt.Buffer + tgt.Length / sizeof (WCHAR),
- (tgt.MaximumLength - tgt.Length) / sizeof (WCHAR),
- srcstr);
- if (len)
- tgt.Length += (len - 1) * sizeof (WCHAR);
- else
- tgt.Length = tgt.MaximumLength = 0;
-}
-
HANDLE
open_local_policy (ACCESS_MASK access)
{
diff --git a/winsup/cygwin/security.h b/winsup/cygwin/security.h
index 9d306feb0..7b09bc0ad 100644
--- a/winsup/cygwin/security.h
+++ b/winsup/cygwin/security.h
@@ -366,9 +366,6 @@ extern "C" int acl32 (const char *, int, int, __acl32 *);
int getacl (HANDLE, path_conv &, int, __acl32 *);
int setacl (HANDLE, path_conv &, int, __acl32 *, bool &);
-struct _UNICODE_STRING;
-void __stdcall str2uni_cat (_UNICODE_STRING &, const char *) __attribute__ ((regparm (2)));
-
/* Function creating a token by calling NtCreateToken. */
HANDLE create_token (cygsid &usersid, user_groups &groups, struct passwd * pw);
/* LSA authentication function. */