| /************************************************************** | |
| * | |
| * Licensed to the Apache Software Foundation (ASF) under one | |
| * or more contributor license agreements. See the NOTICE file | |
| * distributed with this work for additional information | |
| * regarding copyright ownership. The ASF licenses this file | |
| * to you under the Apache License, Version 2.0 (the | |
| * "License"); you may not use this file except in compliance | |
| * with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, | |
| * software distributed under the License is distributed on an | |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| * KIND, either express or implied. See the License for the | |
| * specific language governing permissions and limitations | |
| * under the License. | |
| * | |
| *************************************************************/ | |
| #ifndef _OSL_FILE_PATH_HELPER_H_ | |
| #define _OSL_FILE_PATH_HELPER_H_ | |
| #ifndef _SAL_TYPES_H_ | |
| #include <sal/types.h> | |
| #endif | |
| #ifndef _RTL_USTRING_H_ | |
| #include <rtl/ustring.h> | |
| #endif | |
| #ifdef __cplusplus | |
| extern "C" | |
| { | |
| #endif | |
| /******************************************* | |
| osl_systemPathRemoveSeparator | |
| Removes the last separator from the | |
| given system path if any and if the path | |
| is not the root path '/' | |
| @param ppustrPath [inout] a system path | |
| if the path is not the root path | |
| and the last character is a | |
| path separator it will be cut off | |
| ppustrPath must not be NULL and | |
| must point to a valid rtl_uString | |
| @returns nothing | |
| ******************************************/ | |
| void SAL_CALL osl_systemPathRemoveSeparator( | |
| /*inout*/ rtl_uString* pustrPath); | |
| /******************************************* | |
| osl_systemPathEnsureSeparator | |
| Adds a trailing path separator to the | |
| given system path if not already there | |
| and if the path is not the root path '/' | |
| @param pustrPath [inout] a system path | |
| if the path is not the root path | |
| '/' and has no trailing separator | |
| a separator will be added | |
| ppustrPath must not be NULL and | |
| must point to a valid rtl_uString | |
| @returns nothing | |
| ******************************************/ | |
| void SAL_CALL osl_systemPathEnsureSeparator( | |
| /*inout*/ rtl_uString** ppustrPath); | |
| /******************************************* | |
| osl_systemPathIsRelativePath | |
| Returns true if the given path is a | |
| relative path and so starts not with '/' | |
| @param pustrPath [in] a system path | |
| pustrPath must not be NULL | |
| @returns sal_True if the given path | |
| doesn't start with a separator | |
| else sal_False will be returned | |
| ******************************************/ | |
| sal_Bool SAL_CALL osl_systemPathIsRelativePath( | |
| const rtl_uString* pustrPath); | |
| /****************************************** | |
| osl_systemPathIsAbsolutePath | |
| Returns true if the given path is an | |
| absolute path and so starts with a '/' | |
| @param pustrPath [in] a system path | |
| pustrPath must not be NULL | |
| @returns sal_True if the given path | |
| start's with a separator else | |
| sal_False will be returned | |
| *****************************************/ | |
| sal_Bool SAL_CALL osl_systemPathIsAbsolutePath( | |
| const rtl_uString* pustrPath); | |
| /****************************************** | |
| osl_systemPathMakeAbsolutePath | |
| Append a relative path to a base path | |
| @param pustrBasePath [in] a system | |
| path that will be considered as | |
| base path | |
| pustrBasePath must not be NULL | |
| @param pustrRelPath [in] a system path | |
| that will be considered as | |
| relative path | |
| pustrBasePath must not be NULL | |
| @param ppustrAbsolutePath [out] the | |
| resulting path which is a | |
| concatination of the base and | |
| the relative path | |
| if base path is empty the | |
| resulting absolute path is the | |
| relative path | |
| if relative path is empty the | |
| resulting absolute path is the | |
| base path | |
| if base and relative path are | |
| empty the resulting absolute | |
| path is also empty | |
| ppustrAbsolutePath must not be | |
| NULL and *ppustrAbsolutePath | |
| must be 0 or point to a valid | |
| rtl_uString | |
| *****************************************/ | |
| void SAL_CALL osl_systemPathMakeAbsolutePath( | |
| const rtl_uString* pustrBasePath, | |
| const rtl_uString* pustrRelPath, | |
| rtl_uString** ppustrAbsolutePath); | |
| /***************************************** | |
| osl_systemPathGetParent | |
| Replaces the last occurrance of a path | |
| separator with '\0' and returns the | |
| position where the '/' was replaced | |
| @param pustrPath [inout] a system | |
| path, the last separator of | |
| this path will be replaced by | |
| a '\0' | |
| if the path is the root path | |
| '/' or the path is considered | |
| as to have no parent, e.g. | |
| '/NoParent' or 'NoParent' or | |
| the path is empty no | |
| replacement will be made | |
| pustrPath must not be NULL | |
| @returns the position of the last path | |
| separator that was replaced | |
| or 0 if no replacement took | |
| place | |
| ****************************************/ | |
| sal_Int32 SAL_CALL osl_systemPathGetParent( | |
| /*inout*/ rtl_uString* pustrPath); | |
| /***************************************** | |
| osl_systemPathGetFileOrLastDirectoryPart | |
| Returns the file or the directory part | |
| of the given path | |
| @param pustrPath [in] a system path, | |
| must not be NULL | |
| @param ppustrFileOrDirPart [out] on | |
| return receives the last part | |
| of the given directory or the | |
| file name | |
| if pustrPath is the root path | |
| '/' an empty string will be | |
| returned | |
| if pustrPath has a trailing | |
| '/' the last part before the | |
| '/' will be returned else | |
| the part after the last '/' | |
| will be returned | |
| @returns nothing | |
| ****************************************/ | |
| void SAL_CALL osl_systemPathGetFileNameOrLastDirectoryPart( | |
| const rtl_uString* pustrPath, | |
| rtl_uString** ppustrFileNameOrLastDirPart); | |
| /******************************************** | |
| osl_systemPathIsHiddenFileOrDirectoryEntry | |
| Returns sal_True if the last part of | |
| given system path is not '.' or '..' | |
| alone and starts with a '.' | |
| @param pustrPath [in] a system path, | |
| must not be NULL | |
| @returns sal_True if the last part of | |
| the given system path starts | |
| with '.' or sal_False the last | |
| part is '.' or '..' alone or | |
| doesn't start with a dot | |
| *********************************************/ | |
| sal_Bool SAL_CALL osl_systemPathIsHiddenFileOrDirectoryEntry( | |
| const rtl_uString* pustrPath); | |
| /************************************************ | |
| osl_systemPathIsLocalOrParentDirectoryEntry | |
| Returns sal_True if the last part of the given | |
| system path is the local directory entry '.' | |
| or the parent directory entry '..' | |
| @param pustrPath [in] a system path, | |
| must not be NULL | |
| @returns sal_True if the last part of the | |
| given system path is '.' or '..' | |
| else sal_False | |
| ************************************************/ | |
| sal_Bool SAL_CALL osl_systemPathIsLocalOrParentDirectoryEntry( | |
| const rtl_uString* pustrPath); | |
| /************************************************ | |
| osl_searchPath | |
| Searches for a file name or path name in all | |
| directories specified by a given path list. | |
| Symbolic links in the resulting path will not be | |
| resolved, it's up to the caller to do this. | |
| @param pustrFilePath [in] a file name or | |
| directory name to search for, the name must | |
| be provided as system path not as a file URL | |
| @param pustrSearchPathList [in] a ':' | |
| separated list of paths in which to search for | |
| the file or directory name | |
| @ppustrPathFound [out] on success receives the | |
| complete path of the file or directory found | |
| as a system path | |
| @returns sal_True if the specified file or | |
| directory was found else sal_False | |
| ***********************************************/ | |
| sal_Bool SAL_CALL osl_searchPath( | |
| const rtl_uString* pustrFilePath, | |
| const rtl_uString* pustrSearchPathList, | |
| rtl_uString** ppustrPathFound); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* #ifndef _OSL_PATH_HELPER_H_ */ | |