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:
authorChristopher Faylor <me@cgf.cx>2004-06-04 01:29:43 +0400
committerChristopher Faylor <me@cgf.cx>2004-06-04 01:29:43 +0400
commit604ca5fa1726b9d42527e0e0e4b767858a646c67 (patch)
treededd370fa2dd713d16788f17674b388389d8aac0
parentee94df3eccde219778b98223d001ed244b3d3891 (diff)
* winbase.h (ilockincr): More changes from the inexplicable world of gcc asm
magic. (ilockdecr): Ditto.
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/autoload.cc1
-rw-r--r--winsup/cygwin/fhandler.cc9
-rw-r--r--winsup/cygwin/ntdll.h1
-rw-r--r--winsup/cygwin/winbase.h12
5 files changed, 22 insertions, 7 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index dabd6fc97..0b73f6733 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,9 @@
+2004-06-03 Christopher Faylor <cgf@alum.bu.edu>
+
+ * winbase.h (ilockincr): More changes from the inexplicable world of
+ gcc asm magic.
+ (ilockdecr): Ditto.
+
2004-06-03 Christopher Faylor <me@cgf.cx>
* winbase.h (ilockincr): YA correction to ensure correct operation with
diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc
index 7fe19fd7a..f2d46d1b3 100644
--- a/winsup/cygwin/autoload.cc
+++ b/winsup/cygwin/autoload.cc
@@ -389,6 +389,7 @@ LoadDLLfuncEx (NtSetSecurityObject, 12, ntdll, 1)
LoadDLLfuncEx (NtUnmapViewOfSection, 8, ntdll, 1)
LoadDLLfuncEx (RtlInitUnicodeString, 8, ntdll, 1)
LoadDLLfuncEx (RtlNtStatusToDosError, 4, ntdll, 1)
+LoadDLLfuncEx (RtlIsDosDeviceName_U, 4, ntdll, 1)
LoadDLLfuncEx (GetProcessMemoryInfo, 12, psapi, 1)
diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
index c481bde29..c90acb24d 100644
--- a/winsup/cygwin/fhandler.cc
+++ b/winsup/cygwin/fhandler.cc
@@ -531,7 +531,9 @@ done:
int
fhandler_base::open (int flags, mode_t mode)
{
- if (!wincap.is_winnt ())
+ UNICODE_STRING upath;
+ WCHAR wpath[CYG_MAX_PATH + 10];
+ if (!wincap.is_winnt () || RtlIsDosDeviceName_U(wpath))
return fhandler_base::open_9x (flags, mode);
int res = 0;
@@ -542,8 +544,6 @@ fhandler_base::open (int flags, mode_t mode)
ULONG create_options;
SECURITY_ATTRIBUTES sa = sec_none;
security_descriptor sd;
- UNICODE_STRING upath;
- WCHAR wpath[CYG_MAX_PATH + 10];
OBJECT_ATTRIBUTES attr;
IO_STATUS_BLOCK io;
NTSTATUS status;
@@ -555,8 +555,7 @@ fhandler_base::open (int flags, mode_t mode)
goto done;
}
- InitializeObjectAttributes (&attr, pc.get_nt_native_path (upath, wpath),
- OBJ_CASE_INSENSITIVE | OBJ_INHERIT,
+ InitializeObjectAttributes (&attr, &upath, OBJ_CASE_INSENSITIVE | OBJ_INHERIT,
sa.lpSecurityDescriptor, NULL);
switch (query_open ())
diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h
index 0fb7c0e5a..8e829f5ed 100644
--- a/winsup/cygwin/ntdll.h
+++ b/winsup/cygwin/ntdll.h
@@ -420,4 +420,5 @@ extern "C"
NTSTATUS NTAPI NtUnmapViewOfSection (HANDLE, PVOID);
VOID NTAPI RtlInitUnicodeString (PUNICODE_STRING, PCWSTR);
ULONG NTAPI RtlNtStatusToDosError (NTSTATUS);
+ ULONG WINAPI RtlIsDosDeviceName_U (PCWSTR);
}
diff --git a/winsup/cygwin/winbase.h b/winsup/cygwin/winbase.h
index 0411afd7b..6f9228efc 100644
--- a/winsup/cygwin/winbase.h
+++ b/winsup/cygwin/winbase.h
@@ -1,3 +1,11 @@
+/* winbase.h
+
+ Copyright 2002, 2003, 2004 Red Hat, Inc.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
#include_next "winbase.h"
#ifndef _WINBASE2_H
@@ -9,7 +17,7 @@ ilockincr (long *m)
register int __res;
__asm__ __volatile__ ("\n\
movl $1,%0\n\
- lock xadd %0,%2\n\
+ lock xadd %0,%1\n\
inc %0\n\
": "=a" (__res), "=m" (*m): "m" (m): "cc");
return __res;
@@ -21,7 +29,7 @@ ilockdecr (long *m)
register int __res;
__asm__ __volatile__ ("\n\
movl $0xffffffff,%0\n\
- lock xadd %0,%2\n\
+ lock xadd %0,%1\n\
dec %0\n\
": "=a" (__res), "=m" (*m): "m" (m): "cc");
return __res;