Author: ion
Date: Mon Jul 11 00:47:44 2011
New Revision: 52624
URL:
http://svn.reactos.org/svn/reactos?rev=52624&view=rev
Log:
[RTL]: RtlDetermineDosPathNameType_U Path is not optional. Checked build ASSERTs if not
present. Also, \\? is valid, not only \\., so this should fix a bunch of incorrect path
determinations. Aren't there supposed to be unit tests for these things?!
Modified:
trunk/reactos/lib/rtl/path.c
Modified: trunk/reactos/lib/rtl/path.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/path.c?rev=52624&a…
==============================================================================
--- trunk/reactos/lib/rtl/path.c [iso-8859-1] (original)
+++ trunk/reactos/lib/rtl/path.c [iso-8859-1] Mon Jul 11 00:47:44 2011
@@ -66,32 +66,29 @@
* @implemented
*
*/
-ULONG NTAPI
-RtlDetermineDosPathNameType_U(PCWSTR Path)
-{
- DPRINT("RtlDetermineDosPathNameType_U %S\n", Path);
-
- if (Path == NULL)
- {
- return RtlPathTypeUnknown;
- }
-
- if (IS_PATH_SEPARATOR(Path[0]))
- {
- if (!IS_PATH_SEPARATOR(Path[1])) return RtlPathTypeRooted; /* \xxx */
- if (Path[2] != L'.') return RtlPathTypeUncAbsolute;
/* \\xxx */
- if (IS_PATH_SEPARATOR(Path[3])) return RtlPathTypeLocalDevice; /*
\\.\xxx */
- if (Path[3]) return RtlPathTypeUncAbsolute; /*
\\.xxxx */
-
- return RtlPathTypeRootLocalDevice; /* \\.
*/
- }
- else
- {
- if (!Path[0] || Path[1] != L':') return RtlPathTypeRelative; /* xxx
*/
- if (IS_PATH_SEPARATOR(Path[2])) return RtlPathTypeDriveAbsolute; /* x:\xxx */
-
- return RtlPathTypeDriveRelative; /* x:xxx */
- }
+ULONG
+NTAPI
+RtlDetermineDosPathNameType_U(IN PCWSTR Path)
+{
+ DPRINT("RtlDetermineDosPathNameType_U %S\n", Path);
+ ASSERT(Path != NULL);
+
+ if (IS_PATH_SEPARATOR(Path[0]))
+ {
+ if (!IS_PATH_SEPARATOR(Path[1])) return RtlPathTypeRooted; /* \xxx
*/
+ if ((Path[2] != L'.') && (Path[2] != L'?')) return
RtlPathTypeUncAbsolute;/* \\xxx */
+ if (IS_PATH_SEPARATOR(Path[3])) return RtlPathTypeLocalDevice; /*
\\.\xxx */
+ if (Path[3]) return RtlPathTypeUncAbsolute; /*
\\.xxxx */
+
+ return RtlPathTypeRootLocalDevice; /* \\.
*/
+ }
+ else
+ {
+ if (!(Path[0]) || (Path[1] != L':')) return RtlPathTypeRelative;
/* xxx */
+ if (IS_PATH_SEPARATOR(Path[2])) return RtlPathTypeDriveAbsolute; /*
x:\xxx */
+
+ return RtlPathTypeDriveRelative; /*
x:xxx */
+ }
}