1 /* $Id: path.h,v 1.2 2002/02/20 09:17:55 hyperion Exp $
6 * POSIX+ subsystem path functions
8 * This file is part of the ReactOS Operating System.
11 * Created by KJK::Hyperion <noog@libero.it>
13 * THIS SOFTWARE IS NOT COPYRIGHTED
15 * This source code is offered for use in the public domain. You may
16 * use, modify or distribute it freely.
18 * This code is distributed in the hope that it will be useful but
19 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
20 * DISCLAMED. This includes but is not limited to warranties of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
24 #ifndef __PSX_PATH_H_INCLUDED__
25 #define __PSX_PATH_H_INCLUDED__
28 #include <ddk/ntddk.h>
38 __PdxPosixPathGetNextComponent_U
40 IN UNICODE_STRING PathName
,
41 IN OUT PUNICODE_STRING PathComponent
,
42 OUT PBOOLEAN TrailingDelimiter OPTIONAL
46 __PdxPosixPathResolve_U
48 IN UNICODE_STRING PathName
,
49 OUT PUNICODE_STRING ResolvedPathName
,
50 IN WCHAR PathDelimiter OPTIONAL
54 __PdxPosixPathGetNextComponent_A
56 IN ANSI_STRING PathName
,
57 IN OUT PANSI_STRING PathComponent
,
58 OUT PBOOLEAN TrailingDelimiter OPTIONAL
62 __PdxPosixPathResolve_A
64 IN ANSI_STRING PathName
,
65 OUT PANSI_STRING ResolvedPathName
,
66 IN CHAR PathDelimiter OPTIONAL
70 __PdxPosixPathNameToNtPathName
73 OUT PUNICODE_STRING NativePath
,
74 IN PUNICODE_STRING CurDir OPTIONAL
,
75 IN PUNICODE_STRING RootDir OPTIONAL
79 /* returns non-zero if the argument is a path delimiter */
80 #define IS_CHAR_DELIMITER_U(WCH) (((WCH) == L'/') || ((WCH) == L'\\'))
81 #define IS_CHAR_DELIMITER_A(CH) (((CH) == '/') || ((CH) == '\\'))
83 /* returns non-zero if the argument is an empty path component */
84 #define IS_COMPONENT_EMPTY_U(WCOMPONENT) (WCOMPONENT.Length == 0)
85 #define IS_COMPONENT_EMPTY_A(COMPONENT) (COMPONENT.Length == 0)
87 /* returns non-zero if the argument is "." */
88 #define IS_COMPONENT_DOT_U(WCOMPONENT) \
89 ((WCOMPONENT.Length == sizeof(WCHAR)) && (WCOMPONENT.Buffer[0] == L'.'))
91 #define IS_COMPONENT_DOT_A(COMPONENT) \
92 ((COMPONENT.Length == 1) && (COMPONENT.Buffer[0] == '.'))
94 /* returns non-zero if the argument is ".." */
95 #define IS_COMPONENT_DOTDOT_U(WCOMPONENT) \
97 (WCOMPONENT.Length == (sizeof(WCHAR) * 2)) && \
98 (WCOMPONENT.Buffer[0] == L'.') && \
99 (WCOMPONENT.Buffer[1] == L'.') \
102 #define IS_COMPONENT_DOTDOT_A(COMPONENT) \
104 (COMPONENT.Length == 2) && \
105 (COMPONENT.Buffer[0] == '.') && \
106 (COMPONENT.Buffer[1] == '.') \
109 #endif /* __PSX_PATH_H_INCLUDED__ */