summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/syscalls.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2009-07-14 17:37:42 +0000
committerCorinna Vinschen <corinna@vinschen.de>2009-07-14 17:37:42 +0000
commit8deb411836f5c7faf15202b29499266f081f5708 (patch)
tree32ef5201ac1c91e55e9d025aa12e2442230041b9 /winsup/cygwin/syscalls.cc
parent472345a06cd5accbba1796ed227c620e583b11a4 (diff)
downloadcygnal-8deb411836f5c7faf15202b29499266f081f5708.tar.gz
cygnal-8deb411836f5c7faf15202b29499266f081f5708.tar.bz2
cygnal-8deb411836f5c7faf15202b29499266f081f5708.zip
Throughout avoid having to initialize constant UNICODE_STRINGs.
* globals.cc: Define constant UNICODE_STRINGs and store in .rdata section. * fhandler_disk_file.cc: Throughout, use readonly UNICODE_STRINGs rather then initializing local UNICODE_STRING variable where applicable. * fhandler_mem.cc (fhandler_dev_mem::open): Ditto. * flock.cc (inode_t::inode_t): Ditto. * mmap.cc: Ditto. * syscalls.cc: Ditto. * mount.cc (fs_info::update): Ditto. * path.cc: Ditto. * ntdll.h (RtlEqualUnicodePathPrefix): Redefine to take prefix as UNICODE_STRING. (RtlEqualUnicodePathSuffix): Redefine to take suffix as UNICODE_STRING. * fhandler_disk_file.cc: Accommodate throughout. * mount.cc (fs_info::update): Ditto. * path.cc (cwdstuff::set): Ditto. * syscalls.cc: Ditto.
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r--winsup/cygwin/syscalls.cc18
1 files changed, 8 insertions, 10 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index 9bfc02c84..1bb6007f6 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -187,7 +187,7 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK access)
goto out;
/* Is the file a subdir of the recycler? */
RtlInitCountedUnicodeString(&fname, pfni->FileName, pfni->FileNameLength);
- if (RtlEqualUnicodePathPrefix (&fname, recycler.Buffer, TRUE))
+ if (RtlEqualUnicodePathPrefix (&fname, &recycler, TRUE))
goto out;
/* Is fname the recycler? Temporarily hide trailing backslash. */
recycler.Length -= sizeof (WCHAR);
@@ -558,12 +558,10 @@ unlink_nt (path_conv &pc)
if (status == STATUS_CANNOT_DELETE && !pc.isremote ())
{
HANDLE fh2;
- UNICODE_STRING fname;
/* Re-open from handle so we open the correct file no matter if it
has been moved to the bin or not. */
- RtlInitUnicodeString (&fname, L"");
- InitializeObjectAttributes (&attr, &fname, 0, fh, NULL);
+ InitializeObjectAttributes (&attr, &ro_u_empty, 0, fh, NULL);
status = NtOpenFile (&fh2, DELETE, &attr, &io,
bin_stat == move_to_bin ? FILE_SHARE_VALID_FLAGS
: FILE_SHARE_DELETE,
@@ -1750,11 +1748,11 @@ rename (const char *oldpath, const char *newpath)
}
else if (oldpc.is_lnk_symlink ()
&& !RtlEqualUnicodePathSuffix (newpc.get_nt_native_path (),
- L".lnk", TRUE))
+ &ro_u_lnk, TRUE))
rename_append_suffix (newpc, newpath, nlen, ".lnk");
else if (oldpc.is_binary () && !old_explicit_suffix
&& !RtlEqualUnicodePathSuffix (newpc.get_nt_native_path (),
- L".exe", TRUE))
+ &ro_u_exe, TRUE))
/* To rename an executable foo.exe to bar-without-exe-suffix, the
.exe suffix must be given explicitly in oldpath. */
rename_append_suffix (newpc, newpath, nlen, ".exe");
@@ -1781,7 +1779,7 @@ rename (const char *oldpath, const char *newpath)
{
if (!newpc.is_lnk_symlink ()
&& !RtlEqualUnicodePathSuffix (newpc.get_nt_native_path (),
- L".lnk", TRUE))
+ &ro_u_lnk, TRUE))
{
rename_append_suffix (new2pc, newpath, nlen, ".lnk");
removepc = &newpc;
@@ -1790,7 +1788,7 @@ rename (const char *oldpath, const char *newpath)
else if (oldpc.is_binary ())
{
if (!RtlEqualUnicodePathSuffix (newpc.get_nt_native_path (),
- L".exe", TRUE))
+ &ro_u_exe, TRUE))
{
rename_append_suffix (new2pc, newpath, nlen, ".exe");
removepc = &newpc;
@@ -1799,9 +1797,9 @@ rename (const char *oldpath, const char *newpath)
else
{
if ((RtlEqualUnicodePathSuffix (newpc.get_nt_native_path (),
- L".lnk", TRUE)
+ &ro_u_lnk, TRUE)
|| RtlEqualUnicodePathSuffix (newpc.get_nt_native_path (),
- L".exe", TRUE))
+ &ro_u_exe, TRUE))
&& !new_explicit_suffix)
{
new2pc.check (newpath, PC_SYM_NOFOLLOW, stat_suffixes);