Index: /trunk/include/iprt/path.h
===================================================================
--- /trunk/include/iprt/path.h	(revision 45390)
+++ /trunk/include/iprt/path.h	(revision 45391)
@@ -50,76 +50,6 @@
 #endif
 
-/** @def RTPATH_SLASH
- * The preferred slash character.
- *
- * @remark IPRT will always accept unix slashes. So, normally you would
- *         never have to use this define.
- */
-#if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
-# define RTPATH_SLASH       '\\'
-#else
-# define RTPATH_SLASH       '/'
-#endif
-
-/** @deprecated Use '/'! */
-#define RTPATH_DELIMITER    RTPATH_SLASH
-
-
-/** @def RTPATH_SLASH_STR
- * The preferred slash character as a string, handy for concatenations
- * with other strings.
- *
- * @remark IPRT will always accept unix slashes. So, normally you would
- *         never have to use this define.
- */
-#if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
-# define RTPATH_SLASH_STR   "\\"
-#else
-# define RTPATH_SLASH_STR   "/"
-#endif
-
-
-/** @def RTPATH_IS_SLASH
- * Checks if a character is a slash.
- *
- * @returns true if it's a slash and false if not.
- * @returns @param      ch      Char to check.
- */
-#if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
-# define RTPATH_IS_SLASH(ch)    ( (ch) == '\\' || (ch) == '/' )
-#else
-# define RTPATH_IS_SLASH(ch)    ( (ch) == '/' )
-#endif
-
-
-/** @def RTPATH_IS_VOLSEP
- * Checks if a character marks the end of the volume specification.
- *
- * @remark  This is sufficient for the drive letter concept on PC.
- *          However it might be insufficient on other platforms
- *          and even on PC a UNC volume spec won't be detected this way.
- *          Use the RTPath@<too be created@>() instead.
- *
- * @returns true if it is and false if it isn't.
- * @returns @param      ch      Char to check.
- */
-#if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
-# define RTPATH_IS_VOLSEP(ch)   ( (ch) == ':' )
-#else
-# define RTPATH_IS_VOLSEP(ch)   (false)
-#endif
-
-
-/** @def RTPATH_IS_SEP
- * Checks if a character is path component separator
- *
- * @returns true if it is and false if it isn't.
- * @returns @param      ch      Char to check.
- * @
- */
-#define RTPATH_IS_SEP(ch)       ( RTPATH_IS_SLASH(ch) || RTPATH_IS_VOLSEP(ch) )
-
-
-/** @name Generic RTPath flags
+
+/** @name RTPATH_F_XXX - Generic flags for APIs working on the file system.
  * @{ */
 /** Last component: Work on the link. */
@@ -132,10 +62,132 @@
 /** @} */
 
-
 /** Validates a flags parameter containing RTPATH_F_*.
  * @remarks The parameters will be referenced multiple times. */
-#define RTPATH_F_IS_VALID(fFlags, fIgnore) \
-    (    ((fFlags) & ~(uint32_t)((fIgnore)|RTPATH_F_NO_SYMLINKS)) == RTPATH_F_ON_LINK \
-      || ((fFlags) & ~(uint32_t)((fIgnore)|RTPATH_F_NO_SYMLINKS)) == RTPATH_F_FOLLOW_LINK )
+#define RTPATH_F_IS_VALID(a_fFlags, a_fIgnore) \
+    (    ((a_fFlags) & ~(uint32_t)((a_fIgnore) | RTPATH_F_NO_SYMLINKS)) == RTPATH_F_ON_LINK \
+      || ((a_fFlags) & ~(uint32_t)((a_fIgnore) | RTPATH_F_NO_SYMLINKS)) == RTPATH_F_FOLLOW_LINK )
+
+
+/** @name RTPATH_STR_F_XXX - Generic flags for APIs working with path strings.
+ * @{
+ */
+/** Host OS path style (default 0 value). */
+#define RTPATH_STR_F_STYLE_HOST         UINT32_C(0x00000000)
+/** DOS, OS/2 and Windows path style. */
+#define RTPATH_STR_F_STYLE_DOS          UINT32_C(0x00000001)
+/** Unix path style. */
+#define RTPATH_STR_F_STYLE_UNIX         UINT32_C(0x00000002)
+/** Reserved path style. */
+#define RTPATH_STR_F_STYLE_RESERVED     UINT32_C(0x00000003)
+/** The path style mask. */
+#define RTPATH_STR_F_STYLE_MASK         UINT32_C(0x00000003)
+/** Partial path - no start.
+ * This causes the API to skip the root specification parsing.  */
+#define RTPATH_STR_F_NO_START           UINT32_C(0x00000010)
+/** Partial path - no end.
+ * This causes the API to skip the filename and dir-slash parsing.  */
+#define RTPATH_STR_F_NO_END             UINT32_C(0x00000020)
+/** Partial path - no start and no end. */
+#define RTPATH_STR_F_MIDDLE             (RTPATH_STR_F_NO_START | RTPATH_STR_F_NO_END)
+
+/** Reserved for future use. */
+#define RTPATH_STR_F_RESERVED_MASK      UINT32_C(0x0000ffcc)
+/** @} */
+
+/** Validates a flags parameter containing RTPATH_FSTR_.
+ * @remarks The parameters will be references multiple times.  */
+#define RTPATH_STR_F_IS_VALID(a_fFlags, a_fIgnore) \
+      (   ((a_fFlags) & ~((uint32_t)(a_fIgnore) | RTPATH_STR_F_STYLE_MASK | RTPATH_STR_F_MIDDLE)) == 0 \
+       && ((a_fFlags) & RTPATH_STR_F_STYLE_MASK) != RTPATH_STR_F_STYLE_RESERVED \
+       && ((a_fFlags) & RTPATH_STR_F_RESERVED_MASK) == 0 )
+
+
+/** @def RTPATH_STYLE
+ * The host path style. This is set to RTPATH_STR_F_STYLE_DOS,
+ * RTPATH_STR_F_STYLE_UNIX, or other future styles. */
+#if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
+# define RTPATH_STYLE       RTPATH_STR_F_STYLE_DOS
+#else
+# define RTPATH_STYLE       RTPATH_STR_F_STYLE_UNIX
+#endif
+
+
+/** @def RTPATH_SLASH
+ * The preferred slash character.
+ *
+ * @remark IPRT will always accept unix slashes. So, normally you would
+ *         never have to use this define.
+ */
+#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS
+# define RTPATH_SLASH       '\\'
+#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX
+# define RTPATH_SLASH       '/'
+#else
+# error "Unsupported RTPATH_STYLE value."
+#endif
+
+/** @deprecated Use '/'! */
+#define RTPATH_DELIMITER    RTPATH_SLASH
+
+
+/** @def RTPATH_SLASH_STR
+ * The preferred slash character as a string, handy for concatenations
+ * with other strings.
+ *
+ * @remark IPRT will always accept unix slashes. So, normally you would
+ *         never have to use this define.
+ */
+#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS
+# define RTPATH_SLASH_STR   "\\"
+#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX
+# define RTPATH_SLASH_STR   "/"
+#else
+# error "Unsupported RTPATH_STYLE value."
+#endif
+
+
+/** @def RTPATH_IS_SLASH
+ * Checks if a character is a slash.
+ *
+ * @returns true if it's a slash and false if not.
+ * @returns @param      a_ch    Char to check.
+ */
+#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS
+# define RTPATH_IS_SLASH(a_ch)      ( (a_ch) == '\\' || (a_ch) == '/' )
+#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX
+# define RTPATH_IS_SLASH(a_ch)      ( (a_ch) == '/' )
+#else
+# error "Unsupported RTPATH_STYLE value."
+#endif
+
+
+/** @def RTPATH_IS_VOLSEP
+ * Checks if a character marks the end of the volume specification.
+ *
+ * @remark  This is sufficient for the drive letter concept on PC.
+ *          However it might be insufficient on other platforms
+ *          and even on PC a UNC volume spec won't be detected this way.
+ *          Use the RTPath@<too be created@>() instead.
+ *
+ * @returns true if it is and false if it isn't.
+ * @returns @param      a_ch    Char to check.
+ */
+#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS
+# define RTPATH_IS_VOLSEP(a_ch)   ( (a_ch) == ':' )
+#elif RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX
+# define RTPATH_IS_VOLSEP(a_ch)   (false)
+#else
+# error "Unsupported RTPATH_STYLE value."
+#endif
+
+
+/** @def RTPATH_IS_SEP
+ * Checks if a character is path component separator
+ *
+ * @returns true if it is and false if it isn't.
+ * @returns @param      a_ch    Char to check.
+ * @
+ */
+#define RTPATH_IS_SEP(a_ch)     ( RTPATH_IS_SLASH(a_ch) || RTPATH_IS_VOLSEP(a_ch) )
 
 
@@ -543,36 +595,9 @@
  * @param   cbParsed            The size of the buffer. Must be at least the
  *                              size of RTPATHPARSED.
- * @param   fFlags              Combination of RTPATHPARSE_FLAGS_XXX that can be
- *                              used to change how the start and end of the
- *                              path is parsed. Most users will pass 0.
+ * @param   fFlags              Combination of RTPATH_STR_F_XXX flags.
+ *                              Most users will pass 0.
  * @sa      RTPathSplit, RTPathSplitA.
  */
 RTDECL(int) RTPathParse(const char *pszPath,  PRTPATHPARSED pParsed, size_t cbParsed, uint32_t fFlags);
-
-/** @name RTPATHPARSE_FLAGS_XXX - RTPathParse flags.
- * @{ */
-/** Partial path - no start.
- * This causes RTPathParse to skip the root specification parsing.  */
-#define RTPATHPARSE_FLAGS_NO_START          RT_BIT_32(0)
-/** Partial path - no end.
- * This causes RTPathParse to skip the filename and dir-slash parsing.  */
-#define RTPATHPARSE_FLAGS_NO_END            RT_BIT_32(1)
-/** Partial path - no start and no end. */
-#define RTPATHPARSE_FLAGS_MIDDLE            (RTPATHPARSE_FLAGS_NO_START | RTPATHPARSE_FLAGS_NO_END)
-
-/** Host OS path style. */
-#define RTPATHPARSE_FLAGS_STYLE_HOST        UINT32_C(0x00000000)
-/** DOS, OS/2 and Windows path style. */
-#define RTPATHPARSE_FLAGS_STYLE_DOS         UINT32_C(0x00000010)
-/** Unix path style. */
-#define RTPATHPARSE_FLAGS_STYLE_UNIX        UINT32_C(0x00000020)
-/** Reserved path style. */
-#define RTPATHPARSE_FLAGS_STYLE_RESERVED    UINT32_C(0x00000030)
-/** The path style mask. */
-#define RTPATHPARSE_FLAGS_STYLE_MASK        UINT32_C(0x00000030)
-
-/** Mask containing the valid flags. */
-#define RTPATHPARSE_FLAGS_VALID_MASK        UINT32_C(0x00000033)
-/** @}  */
 
 /**
Index: /trunk/src/VBox/Runtime/common/path/RTPathParse.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/path/RTPathParse.cpp	(revision 45390)
+++ /trunk/src/VBox/Runtime/common/path/RTPathParse.cpp	(revision 45391)
@@ -50,25 +50,25 @@
     AssertPtrReturn(pszPath, VERR_INVALID_POINTER);
     AssertReturn(*pszPath, VERR_PATH_ZERO_LENGTH);
-    AssertReturn(!(fFlags & ~RTPATHPARSE_FLAGS_VALID_MASK), VERR_INVALID_FLAGS);
+    AssertReturn(RTPATH_STR_F_IS_VALID(fFlags, 0), VERR_INVALID_FLAGS);
 
     /*
      * Invoke the worker for the selected path style.
      */
-    switch (fFlags & RTPATHPARSE_FLAGS_STYLE_MASK)
+    switch (fFlags & RTPATH_STR_F_STYLE_MASK)
     {
 #if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
-        case RTPATHPARSE_FLAGS_STYLE_HOST:
+        case RTPATH_STR_F_STYLE_HOST:
 #endif
-        case RTPATHPARSE_FLAGS_STYLE_DOS:
+        case RTPATH_STR_F_STYLE_DOS:
             return rtPathParseStyleDos(pszPath, pParsed, cbParsed, fFlags);
 
 #if !defined(RT_OS_OS2) && !defined(RT_OS_WINDOWS)
-        case RTPATHPARSE_FLAGS_STYLE_HOST:
+        case RTPATH_STR_F_STYLE_HOST:
 #endif
-        case RTPATHPARSE_FLAGS_STYLE_UNIX:
+        case RTPATH_STR_F_STYLE_UNIX:
             return rtPathParseStyleUnix(pszPath, pParsed, cbParsed, fFlags);
 
         default:
-            AssertFailedReturn(VERR_INVALID_FLAGS);
+            AssertFailedReturn(VERR_INVALID_FLAGS); /* impossible */
     }
 }
Index: /trunk/src/VBox/Runtime/common/path/RTPathParse.cpp.h
===================================================================
--- /trunk/src/VBox/Runtime/common/path/RTPathParse.cpp.h	(revision 45390)
+++ /trunk/src/VBox/Runtime/common/path/RTPathParse.cpp.h	(revision 45391)
@@ -48,5 +48,5 @@
     if (RTPATH_IS_SLASH(pszPath[0]))
     {
-        if (fFlags & RTPATHPARSE_FLAGS_NO_START)
+        if (fFlags & RTPATH_STR_F_NO_START)
         {
             offCur = 1;
@@ -58,5 +58,5 @@
             cchPath = 0;
         }
-#ifdef RTPATH_STYLE_DOS
+#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS
         else if (   RTPATH_IS_SLASH(pszPath[1])
                  && !RTPATH_IS_SLASH(pszPath[2])
@@ -84,5 +84,5 @@
         else
         {
-#ifdef RTPATH_STYLE_DOS
+#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS
             fProps = RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_RELATIVE;
 #else
@@ -92,5 +92,5 @@
         }
     }
-#ifdef RTPATH_STYLE_DOS
+#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS
     else if (RT_C_IS_ALPHA(pszPath[0]) && pszPath[1] == ':')
     {
@@ -115,5 +115,5 @@
 
     /*  Add it to the component array . */
-    if (offCur && !(fFlags & RTPATHPARSE_FLAGS_NO_START))
+    if (offCur && !(fFlags & RTPATH_STR_F_NO_START))
     {
         cchPath = offCur;
@@ -192,10 +192,10 @@
                 if (ch)
                 {
-                    if (!(fFlags & RTPATHPARSE_FLAGS_NO_END))
+                    if (!(fFlags & RTPATH_STR_F_NO_END))
                         fProps |= RTPATH_PROP_DIR_SLASH; /* (not counted) */
                     else
                         fProps |= RTPATH_PROP_EXTRA_SLASHES;
                 }
-                else if (!(fFlags & RTPATHPARSE_FLAGS_NO_END))
+                else if (!(fFlags & RTPATH_STR_F_NO_END))
                 {
                     fProps |= RTPATH_PROP_FILENAME;
Index: /trunk/src/VBox/Runtime/common/path/rtpath-expand-template.cpp.h
===================================================================
--- /trunk/src/VBox/Runtime/common/path/rtpath-expand-template.cpp.h	(revision 45390)
+++ /trunk/src/VBox/Runtime/common/path/rtpath-expand-template.cpp.h	(revision 45391)
@@ -26,13 +26,11 @@
  */
 
+#undef  RTPATH_DELIMITER
 
 /*
- * The following should move to a helper header!
+ * DOS style
  */
-#undef  RTPATH_DELIMITER
-
-/* DOS style */
-#undef  RTPATH_STYLE_UNIX
-#undef  RTPATH_STYLE_DOS
+#undef  RTPATH_STYLE
+#undef  RTPATH_SLASH
 #undef  RTPATH_SLASH_STR
 #undef  RTPATH_IS_SLASH
@@ -40,5 +38,6 @@
 #undef  RTPATH_STYLE_FN
 
-#define RTPATH_STYLE_DOS
+#define RTPATH_STYLE            RTPATH_STR_F_STYLE_DOS
+#define RTPATH_SLASH            '\\'
 #define RTPATH_SLASH_STR        "\\"
 #define RTPATH_IS_SLASH(a_ch)   ( (a_ch) == '\\' || (a_ch) == '/' )
@@ -47,7 +46,9 @@
 #include RTPATH_TEMPLATE_CPP_H
 
-/* Unix style. */
-#undef  RTPATH_STYLE_UNIX
-#undef  RTPATH_STYLE_DOS
+/*
+ * Unix style.
+ */
+#undef  RTPATH_STYLE
+#undef  RTPATH_SLASH
 #undef  RTPATH_SLASH_STR
 #undef  RTPATH_IS_SLASH
@@ -55,5 +56,6 @@
 #undef  RTPATH_STYLE_FN
 
-#define RTPATH_STYLE_UNIX
+#define RTPATH_STYLE            RTPATH_STR_F_STYLE_UNIX
+#define RTPATH_SLASH            '/'
 #define RTPATH_SLASH_STR        "/"
 #define RTPATH_IS_SLASH(a_ch)   ( (a_ch) == '/' )
@@ -62,15 +64,18 @@
 #include RTPATH_TEMPLATE_CPP_H
 
-/* Restore original style. */
+/*
+ * Clean up and restore the host style.
+ */
 #undef RTPATH_STYLE_FN
 #if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
-# undef  RTPATH_STYLE_UNIX
-# undef  RTPATH_STYLE_DOS
+# undef  RTPATH_STYLE
 # undef  RTPATH_SLASH_STR
 # undef  RTPATH_IS_SLASH
 # undef  RTPATH_IS_VOLSEP
-# define RTPATH_SLASH_STR        "\\"
-# define RTPATH_IS_SLASH(a_ch)   ( (a_ch) == '\\' || (a_ch) == '/' )
-# define RTPATH_IS_VOLSEP(a_ch)  ( (a_ch) == ':' )
+# define RTPATH_STYLE           RTPATH_STR_F_STYLE_DOS
+# define RTPATH_SLASH           '\\'
+# define RTPATH_SLASH_STR       "\\"
+# define RTPATH_IS_SLASH(a_ch)  ( (a_ch) == '\\' || (a_ch) == '/' )
+# define RTPATH_IS_VOLSEP(a_ch) ( (a_ch) == ':' )
 #endif
 
Index: /trunk/src/VBox/Runtime/testcase/tstRTPath.cpp
===================================================================
--- /trunk/src/VBox/Runtime/testcase/tstRTPath.cpp	(revision 45390)
+++ /trunk/src/VBox/Runtime/testcase/tstRTPath.cpp	(revision 45391)
@@ -53,37 +53,37 @@
     } const s_aTests[] =
     {
-        { 2, 13,  9,  "C:/Config.sys",    RTPATH_PROP_VOLUME | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX,       RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 2, 13, 10,  "C://Config.sys",   RTPATH_PROP_VOLUME | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX | RTPATH_PROP_EXTRA_SLASHES, RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 2, 12,  8,  "C:Config.sys",     RTPATH_PROP_VOLUME | RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX,                                RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 1, 10,  6,  "Config.sys",       RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX,                                                     RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 1,  4,  4,  "//./",             RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE,                                                      RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 2,  5,  5,  "//./f",            RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                               RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 2,  5,  6,  "//.//f",           RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_EXTRA_SLASHES,   RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 3,  7,  7,  "//././f",          RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOT_REFS,        RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 3,  8,  8,  "//.././f",         RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOT_REFS,        RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 3,  9,  9,  "//../../f",        RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOTDOT_REFS,     RTPATHPARSE_FLAGS_STYLE_DOS },
-        { 1,  1,  1,  "/",                RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE,                                                                        RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 2,  4,  4,  "/bin",             RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 2,  4,  5,  "/bin/",            RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_DIR_SLASH,                                                RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 3,  7,  7,  "/bin/ls",          RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 3,  12, 7,  "/etc/rc.conf",     RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX,                            RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 1,  1,  2,  "//",               RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES,                                            RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 1,  1,  3,  "///",              RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES,                                            RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 3,  6,  7,  "/.//bin",          RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_DOT_REFS | RTPATH_PROP_FILENAME, RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 1,  3,  3,  "bin",              RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME,                                                                          RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 1,  3,  4,  "bin/",             RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH,                                                                         RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 1,  3,  7,  "bin////",          RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH | RTPATH_PROP_EXTRA_SLASHES,                                             RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 3, 10, 10,  "bin/../usr",       RTPATH_PROP_RELATIVE | RTPATH_PROP_DOTDOT_REFS | RTPATH_PROP_FILENAME,                                                RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 4, 11, 11,  "/bin/../usr",      RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_RELATIVE | RTPATH_PROP_DOTDOT_REFS | RTPATH_PROP_FILENAME,                       RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 4,  8,  8,  "/a/.../u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 4,  8,  8,  "/a/.b./u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 4,  8,  8,  "/a/..c/u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 4,  8,  8,  "/a/d../u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 4,  8,  8,  "/a/.e/.u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 4,  8,  8,  "/a/.f/.u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 4,  8,  8,  "/a/.g/u.",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATHPARSE_FLAGS_STYLE_UNIX },
-        { 3,  9, 10,  "/a/h/u.ext",       RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_RELATIVE,                                                                     RTPATHPARSE_FLAGS_STYLE_UNIX | RTPATHPARSE_FLAGS_MIDDLE },
-        { 3,  9,  9,  "a/h/u.ext",        RTPATH_PROP_RELATIVE,                                                                                                 RTPATHPARSE_FLAGS_STYLE_UNIX | RTPATHPARSE_FLAGS_MIDDLE },
-        { 3,  9, 10,  "a/h/u.ext/",       RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_RELATIVE,                                                                     RTPATHPARSE_FLAGS_STYLE_UNIX | RTPATHPARSE_FLAGS_MIDDLE },
+        { 2, 13,  9,  "C:/Config.sys",    RTPATH_PROP_VOLUME | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX,       RTPATH_STR_F_STYLE_DOS },
+        { 2, 13, 10,  "C://Config.sys",   RTPATH_PROP_VOLUME | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX | RTPATH_PROP_EXTRA_SLASHES, RTPATH_STR_F_STYLE_DOS },
+        { 2, 12,  8,  "C:Config.sys",     RTPATH_PROP_VOLUME | RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX,                                RTPATH_STR_F_STYLE_DOS },
+        { 1, 10,  6,  "Config.sys",       RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX,                                                     RTPATH_STR_F_STYLE_DOS },
+        { 1,  4,  4,  "//./",             RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE,                                                      RTPATH_STR_F_STYLE_DOS },
+        { 2,  5,  5,  "//./f",            RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                               RTPATH_STR_F_STYLE_DOS },
+        { 2,  5,  6,  "//.//f",           RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_EXTRA_SLASHES,   RTPATH_STR_F_STYLE_DOS },
+        { 3,  7,  7,  "//././f",          RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOT_REFS,        RTPATH_STR_F_STYLE_DOS },
+        { 3,  8,  8,  "//.././f",         RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOT_REFS,        RTPATH_STR_F_STYLE_DOS },
+        { 3,  9,  9,  "//../../f",        RTPATH_PROP_UNC | RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME | RTPATH_PROP_DOTDOT_REFS,     RTPATH_STR_F_STYLE_DOS },
+        { 1,  1,  1,  "/",                RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE,                                                                        RTPATH_STR_F_STYLE_UNIX },
+        { 2,  4,  4,  "/bin",             RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 2,  4,  5,  "/bin/",            RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_DIR_SLASH,                                                RTPATH_STR_F_STYLE_UNIX },
+        { 3,  7,  7,  "/bin/ls",          RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 3,  12, 7,  "/etc/rc.conf",     RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME | RTPATH_PROP_SUFFIX,                            RTPATH_STR_F_STYLE_UNIX },
+        { 1,  1,  2,  "//",               RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES,                                            RTPATH_STR_F_STYLE_UNIX },
+        { 1,  1,  3,  "///",              RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES,                                            RTPATH_STR_F_STYLE_UNIX },
+        { 3,  6,  7,  "/.//bin",          RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_DOT_REFS | RTPATH_PROP_FILENAME, RTPATH_STR_F_STYLE_UNIX },
+        { 1,  3,  3,  "bin",              RTPATH_PROP_RELATIVE | RTPATH_PROP_FILENAME,                                                                          RTPATH_STR_F_STYLE_UNIX },
+        { 1,  3,  4,  "bin/",             RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH,                                                                         RTPATH_STR_F_STYLE_UNIX },
+        { 1,  3,  7,  "bin////",          RTPATH_PROP_RELATIVE | RTPATH_PROP_DIR_SLASH | RTPATH_PROP_EXTRA_SLASHES,                                             RTPATH_STR_F_STYLE_UNIX },
+        { 3, 10, 10,  "bin/../usr",       RTPATH_PROP_RELATIVE | RTPATH_PROP_DOTDOT_REFS | RTPATH_PROP_FILENAME,                                                RTPATH_STR_F_STYLE_UNIX },
+        { 4, 11, 11,  "/bin/../usr",      RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_RELATIVE | RTPATH_PROP_DOTDOT_REFS | RTPATH_PROP_FILENAME,                       RTPATH_STR_F_STYLE_UNIX },
+        { 4,  8,  8,  "/a/.../u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 4,  8,  8,  "/a/.b./u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 4,  8,  8,  "/a/..c/u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 4,  8,  8,  "/a/d../u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 4,  8,  8,  "/a/.e/.u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 4,  8,  8,  "/a/.f/.u",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 4,  8,  8,  "/a/.g/u.",         RTPATH_PROP_ROOT_SLASH | RTPATH_PROP_ABSOLUTE | RTPATH_PROP_FILENAME,                                                 RTPATH_STR_F_STYLE_UNIX },
+        { 3,  9, 10,  "/a/h/u.ext",       RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_RELATIVE,                                                                     RTPATH_STR_F_STYLE_UNIX | RTPATH_STR_F_MIDDLE },
+        { 3,  9,  9,  "a/h/u.ext",        RTPATH_PROP_RELATIVE,                                                                                                 RTPATH_STR_F_STYLE_UNIX | RTPATH_STR_F_MIDDLE },
+        { 3,  9, 10,  "a/h/u.ext/",       RTPATH_PROP_EXTRA_SLASHES | RTPATH_PROP_RELATIVE,                                                                     RTPATH_STR_F_STYLE_UNIX | RTPATH_STR_F_MIDDLE },
     };
 
@@ -131,4 +131,30 @@
         return rc;
     RTTestBanner(hTest);
+
+    RTTestSub(hTest, "Environment");
+#if defined(RT_OS_OS2) || defined(RT_OS_WINDOWS)
+    RTTESTI_CHECK(RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS);
+# if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS
+# else
+    RTTestIFailed("#if RTPATH_STYLE == RTPATH_STR_F_STYLE_DOS");
+# endif
+    RTTESTI_CHECK(strcmp(RTPATH_SLASH_STR, "\\") == 0);
+    RTTESTI_CHECK(RTPATH_SLASH == '\\');
+    RTTESTI_CHECK(RTPATH_IS_SEP('/'));
+    RTTESTI_CHECK(RTPATH_IS_SEP('\\'));
+    RTTESTI_CHECK(RTPATH_IS_SEP(':'));
+
+#else
+    RTTESTI_CHECK(RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX);
+# if RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX
+# else
+    RTTestIFailed("#if RTPATH_STYLE == RTPATH_STR_F_STYLE_UNIX");
+# endif
+    RTTESTI_CHECK(strcmp(RTPATH_SLASH_STR, "/") == 0);
+    RTTESTI_CHECK(RTPATH_SLASH == '/');
+    RTTESTI_CHECK(RTPATH_IS_SEP('/'));
+    RTTESTI_CHECK(!RTPATH_IS_SEP('\\'));
+    RTTESTI_CHECK(!RTPATH_IS_SEP(':'));
+#endif
 
     /*
