1565d668cSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3565d668cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4565d668cSAndrew Rist * or more contributor license agreements. See the NOTICE file 5565d668cSAndrew Rist * distributed with this work for additional information 6565d668cSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7565d668cSAndrew Rist * to you under the Apache License, Version 2.0 (the 8565d668cSAndrew Rist * "License"); you may not use this file except in compliance 9565d668cSAndrew Rist * with the License. You may obtain a copy of the License at 10565d668cSAndrew Rist * 11565d668cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12565d668cSAndrew Rist * 13565d668cSAndrew Rist * Unless required by applicable law or agreed to in writing, 14565d668cSAndrew Rist * software distributed under the License is distributed on an 15565d668cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16565d668cSAndrew Rist * KIND, either express or implied. See the License for the 17565d668cSAndrew Rist * specific language governing permissions and limitations 18565d668cSAndrew Rist * under the License. 19565d668cSAndrew Rist * 20565d668cSAndrew Rist *************************************************************/ 21565d668cSAndrew Rist 22565d668cSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifdef _MSC_VER 25cdf0e10cSrcweir #pragma warning (disable : 4800) 26cdf0e10cSrcweir #endif 27cdf0e10cSrcweir 28cdf0e10cSrcweir #ifndef _PATH_HELPER_HXX_ 29cdf0e10cSrcweir #define _PATH_HELPER_HXX_ 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include "path_helper.h" 32cdf0e10cSrcweir #include <rtl/ustring.hxx> 33*79e556eeSJuergen Schmidt #include <rtl/alloc.h> 34cdf0e10cSrcweir 35cdf0e10cSrcweir namespace osl 36cdf0e10cSrcweir { 37cdf0e10cSrcweir 38cdf0e10cSrcweir /******************************************************************* 39cdf0e10cSrcweir osl_systemPathEnsureSeparator 40cdf0e10cSrcweir Adds a trailing path separator to the given system path if not 41cdf0e10cSrcweir already there and if the path is not the root path or a logical 42cdf0e10cSrcweir drive alone 43cdf0e10cSrcweir ******************************************************************/ 44cdf0e10cSrcweir systemPathEnsureSeparator(rtl::OUString & Path)45cdf0e10cSrcweirinline void systemPathEnsureSeparator(/*inout*/ rtl::OUString& Path) 46cdf0e10cSrcweir { 47cdf0e10cSrcweir osl_systemPathEnsureSeparator(&Path.pData); 48cdf0e10cSrcweir } 49cdf0e10cSrcweir 50cdf0e10cSrcweir /******************************************************************* 51cdf0e10cSrcweir osl_systemPathRemoveSeparator 52cdf0e10cSrcweir Removes the last separator from the given system path if any and 53cdf0e10cSrcweir if the path is not the root path '\' 54cdf0e10cSrcweir ******************************************************************/ 55cdf0e10cSrcweir systemPathRemoveSeparator(rtl::OUString & Path)56cdf0e10cSrcweirinline void systemPathRemoveSeparator(/*inout*/ rtl::OUString& Path) 57cdf0e10cSrcweir { 58cdf0e10cSrcweir osl_systemPathRemoveSeparator(&Path.pData); 59cdf0e10cSrcweir } 60cdf0e10cSrcweir 61cdf0e10cSrcweir /******************************************************************* 62cdf0e10cSrcweir osl_systemPathIsLogicalDrivePattern 63cdf0e10cSrcweir ******************************************************************/ 64cdf0e10cSrcweir systemPathIsLogicalDrivePattern(const rtl::OUString & path)65cdf0e10cSrcweirinline bool systemPathIsLogicalDrivePattern(/*in*/ const rtl::OUString& path) 66cdf0e10cSrcweir { 67cdf0e10cSrcweir return osl_systemPathIsLogicalDrivePattern(path.pData); 68cdf0e10cSrcweir } 69cdf0e10cSrcweir 70cdf0e10cSrcweir /******************************************************************* 71cdf0e10cSrcweir LongPathBuffer 72cdf0e10cSrcweir ******************************************************************/ 73cdf0e10cSrcweir template< class T > 74cdf0e10cSrcweir class LongPathBuffer 75cdf0e10cSrcweir { 76cdf0e10cSrcweir T* m_pBuffer; 77cdf0e10cSrcweir sal_uInt32 m_nCharNum; 78cdf0e10cSrcweir 79cdf0e10cSrcweir LongPathBuffer(); 80cdf0e10cSrcweir LongPathBuffer( const LongPathBuffer& ); 81cdf0e10cSrcweir LongPathBuffer& operator=( const LongPathBuffer& ); 82cdf0e10cSrcweir 83cdf0e10cSrcweir public: LongPathBuffer(sal_uInt32 nCharNum)84cdf0e10cSrcweir LongPathBuffer( sal_uInt32 nCharNum ) 85cdf0e10cSrcweir : m_pBuffer( reinterpret_cast<T*>( rtl_allocateMemory( nCharNum * sizeof( T ) ) ) ) 86cdf0e10cSrcweir , m_nCharNum( nCharNum ) 87cdf0e10cSrcweir { 88cdf0e10cSrcweir OSL_ENSURE( m_pBuffer, "Can not allocate the buffer!" ); 89cdf0e10cSrcweir } 90cdf0e10cSrcweir ~LongPathBuffer()91cdf0e10cSrcweir ~LongPathBuffer() 92cdf0e10cSrcweir { 93cdf0e10cSrcweir if ( m_pBuffer ) 94cdf0e10cSrcweir rtl_freeMemory( m_pBuffer ); 95cdf0e10cSrcweir m_pBuffer = 0; 96cdf0e10cSrcweir } 97cdf0e10cSrcweir getBufSizeInSymbols()98cdf0e10cSrcweir sal_uInt32 getBufSizeInSymbols() 99cdf0e10cSrcweir { 100cdf0e10cSrcweir return m_nCharNum; 101cdf0e10cSrcweir } 102cdf0e10cSrcweir operator T*()103cdf0e10cSrcweir operator T* () 104cdf0e10cSrcweir { 105cdf0e10cSrcweir return m_pBuffer; 106cdf0e10cSrcweir } 107cdf0e10cSrcweir 108cdf0e10cSrcweir }; 109cdf0e10cSrcweir mingw_reinterpret_cast(LongPathBuffer<T> & a)110cdf0e10cSrcweir template< class U, class T > U mingw_reinterpret_cast(LongPathBuffer<T>& a) { return reinterpret_cast<U>(static_cast<T*>(a)); } 111cdf0e10cSrcweir 112cdf0e10cSrcweir } // end namespace osl 113cdf0e10cSrcweir 114cdf0e10cSrcweir #endif 115