1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * Copyright (C) 2016 The Android Open Source Project 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*8d67ca89SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*8d67ca89SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*8d67ca89SAndroid Build Coastguard Worker * 8*8d67ca89SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*8d67ca89SAndroid Build Coastguard Worker * 10*8d67ca89SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*8d67ca89SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*8d67ca89SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*8d67ca89SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*8d67ca89SAndroid Build Coastguard Worker * limitations under the License. 15*8d67ca89SAndroid Build Coastguard Worker */ 16*8d67ca89SAndroid Build Coastguard Worker 17*8d67ca89SAndroid Build Coastguard Worker #ifndef __DLFCN_SYMLINK_SUPPORT_H__ 18*8d67ca89SAndroid Build Coastguard Worker #define __DLFCN_SYMLINK_SUPPORT_H__ 19*8d67ca89SAndroid Build Coastguard Worker 20*8d67ca89SAndroid Build Coastguard Worker #include <string> 21*8d67ca89SAndroid Build Coastguard Worker 22*8d67ca89SAndroid Build Coastguard Worker void create_dlfcn_test_symlink(const char* suffix, std::string* result); 23*8d67ca89SAndroid Build Coastguard Worker void remove_dlfcn_test_symlink(const std::string& path); 24*8d67ca89SAndroid Build Coastguard Worker 25*8d67ca89SAndroid Build Coastguard Worker class DlfcnSymlink { 26*8d67ca89SAndroid Build Coastguard Worker public: DlfcnSymlink(const char * test_name)27*8d67ca89SAndroid Build Coastguard Worker explicit DlfcnSymlink(const char* test_name) { 28*8d67ca89SAndroid Build Coastguard Worker create_dlfcn_test_symlink(test_name, &symlink_path_); 29*8d67ca89SAndroid Build Coastguard Worker } 30*8d67ca89SAndroid Build Coastguard Worker ~DlfcnSymlink()31*8d67ca89SAndroid Build Coastguard Worker ~DlfcnSymlink() { 32*8d67ca89SAndroid Build Coastguard Worker remove_dlfcn_test_symlink(symlink_path_); 33*8d67ca89SAndroid Build Coastguard Worker } 34*8d67ca89SAndroid Build Coastguard Worker get_symlink_path()35*8d67ca89SAndroid Build Coastguard Worker const std::string& get_symlink_path() const { 36*8d67ca89SAndroid Build Coastguard Worker return symlink_path_; 37*8d67ca89SAndroid Build Coastguard Worker } 38*8d67ca89SAndroid Build Coastguard Worker 39*8d67ca89SAndroid Build Coastguard Worker private: 40*8d67ca89SAndroid Build Coastguard Worker std::string symlink_path_; 41*8d67ca89SAndroid Build Coastguard Worker }; 42*8d67ca89SAndroid Build Coastguard Worker 43*8d67ca89SAndroid Build Coastguard Worker #endif /* __DLFCN_SYMLINK_SUPPORT_H__ */ 44