xref: /trunk/main/sal/osl/unx/file_path_helper.hxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef _OSL_FILE_PATH_HELPER_HXX_
29 #define _OSL_FILE_PATH_HELPER_HXX_
30 
31 
32 #ifndef _OSL_FILE_PATH_HELPER_H_
33 #include "file_path_helper.h"
34 #endif
35 
36 #include <rtl/ustring.hxx>
37 
38 
39 namespace osl
40 {
41 
42  /*******************************************
43     systemPathRemoveSeparator
44     Removes the last separator from the
45     given system path if any and if the path
46     is not the root path '/'
47 
48     @param  ppustrPath [inout] a system path
49             if the path is not the root path
50             and the last character is a
51             path separator it will be cut off
52             ppustrPath must not be NULL and
53             must point to a valid rtl_uString
54 
55     @returns nothing
56 
57   ******************************************/
58 
59  inline void systemPathRemoveSeparator(/*inout*/ rtl::OUString& Path)
60  {
61     osl_systemPathRemoveSeparator(Path.pData);
62  }
63 
64  /*******************************************
65     systemPathEnsureSeparator
66     Adds a trailing path separator to the
67     given system path if not already there
68     and if the path is not the root path '/'
69 
70     @param  pustrPath [inout] a system path
71             if the path is not the root path
72             '/' and has no trailing separator
73             a separator will be added
74             ppustrPath must not be NULL and
75             must point to a valid rtl_uString
76 
77     @returns nothing
78 
79   ******************************************/
80 
81  inline void systemPathEnsureSeparator(/*inout*/ rtl::OUString& Path)
82  {
83     osl_systemPathEnsureSeparator(&Path.pData);
84  }
85 
86  /*******************************************
87     systemPathIsRelativePath
88     Returns true if the given path is a
89     relative path and so starts not with '/'
90 
91     @param  pustrPath [in] a system path
92             pustrPath must not be NULL
93 
94     @returns sal_True if the given path
95              doesn't start with a separator
96              else sal_False will be returned
97 
98   ******************************************/
99 
100  inline bool systemPathIsRelativePath(const rtl::OUString& Path)
101  {
102     return osl_systemPathIsRelativePath(Path.pData);
103  }
104 
105  /******************************************
106     systemPathMakeAbsolutePath
107     Append a relative path to a base path
108 
109     @param  pustrBasePath [in] a system
110             path that will be considered as
111             base path
112             pustrBasePath must not be NULL
113 
114     @param  pustrRelPath [in] a system path
115             that will be considered as
116             relative path
117             pustrBasePath must not be NULL
118 
119     @param  ppustrAbsolutePath [out] the
120             resulting path which is a
121             concatination of the base and
122             the relative path
123             if base path is empty the
124             resulting absolute path is the
125             relative path
126             if relative path is empty the
127             resulting absolute path is the
128             base path
129             if base and relative path are
130             empty the resulting absolute
131             path is also empty
132             ppustrAbsolutePath must not be
133             NULL and *ppustrAbsolutePath
134             must be 0 or point to a valid
135             rtl_uString
136 
137   *****************************************/
138 
139  inline void systemPathMakeAbsolutePath(
140     const rtl::OUString& BasePath,
141     const rtl::OUString& RelPath,
142     rtl::OUString&       AbsolutePath)
143  {
144     osl_systemPathMakeAbsolutePath(
145         BasePath.pData, RelPath.pData, &AbsolutePath.pData);
146  }
147 
148  /*****************************************
149     systemPathGetFileOrLastDirectoryPart
150     Returns the file or the directory part
151     of the given path
152 
153     @param pustrPath [in] a system path,
154            must not be NULL
155 
156     @param ppustrFileOrDirPart [out] on
157            return receives the last part
158            of the given directory or the
159            file name
160            if pustrPath is the root path
161            '/' an empty string will be
162            returned
163            if pustrPath has a trailing
164            '/' the last part before the
165            '/' will be returned else
166            the part after the last '/'
167            will be returned
168 
169     @returns nothing
170 
171   ****************************************/
172 
173  inline void systemPathGetFileNameOrLastDirectoryPart(
174     const rtl::OUString& Path,
175     rtl::OUString&       FileNameOrLastDirPart)
176  {
177     osl_systemPathGetFileNameOrLastDirectoryPart(
178         Path.pData, &FileNameOrLastDirPart.pData);
179  }
180 
181 
182  /********************************************
183     systemPathIsHiddenFileOrDirectoryEntry
184     Returns sal_True if the last part of
185     given system path is not '.' or '..'
186     alone and starts with a '.'
187 
188     @param pustrPath [in] a system path,
189            must not be NULL
190 
191     @returns sal_True if the last part of
192              the given system path starts
193              with '.' or sal_False the last
194              part is '.' or '..' alone or
195              doesn't start with a dot
196 
197  *********************************************/
198 
199  inline bool systemPathIsHiddenFileOrDirectoryEntry(
200     const rtl::OUString& Path)
201  {
202     return osl_systemPathIsHiddenFileOrDirectoryEntry(Path.pData);
203  }
204 
205 
206  /************************************************
207     systemPathIsLocalOrParentDirectoryEntry
208     Returns sal_True if the last part of the given
209     system path is the local directory entry '.'
210     or the parent directory entry '..'
211 
212     @param pustrPath [in] a system path,
213            must not be NULL
214 
215     @returns sal_True if the last part of the
216              given system path is '.' or '..'
217              else sal_False
218 
219  ************************************************/
220 
221  inline bool systemPathIsLocalOrParentDirectoryEntry(
222     const rtl::OUString& Path)
223  {
224     return osl_systemPathIsLocalOrParentDirectoryEntry(Path.pData);
225  }
226 
227  /************************************************
228   searchPath
229   ***********************************************/
230 
231  inline bool searchPath(
232     const rtl::OUString& ustrFilePath,
233     const rtl::OUString& ustrSearchPathList,
234     rtl::OUString& ustrPathFound)
235  {
236     return osl_searchPath(
237         ustrFilePath.pData,
238         ustrSearchPathList.pData,
239         &ustrPathFound.pData);
240  }
241 
242 
243  } // namespace osl
244 
245 
246  #endif /* #ifndef _OSL_PATH_HELPER_HXX_ */
247 
248