1dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes/* 2dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * Copyright (C) 2015 The Android Open Source Project 3dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * 4dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 5dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * you may not use this file except in compliance with the License. 6dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * You may obtain a copy of the License at 7dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * 8dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * 10dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * Unless required by applicable law or agreed to in writing, software 11dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * See the License for the specific language governing permissions and 14dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes * limitations under the License. 15dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes */ 16dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes 17c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert#ifndef BASE_FILE_H 18c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert#define BASE_FILE_H 19dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes 20a7870d88167f619e758b5bcd15b410d16da7c16bNicolas Geoffray#include <sys/stat.h> 21c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert#include <string> 22dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes 23dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughesnamespace android { 24c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albertnamespace base { 25dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes 26f682b4786a4093efb23bf80d69bf80eb274b145bElliott Hughesbool ReadFdToString(int fd, std::string* content); 27dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughesbool ReadFileToString(const std::string& path, std::string* content); 28f682b4786a4093efb23bf80d69bf80eb274b145bElliott Hughes 29dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughesbool WriteStringToFile(const std::string& content, const std::string& path); 30f682b4786a4093efb23bf80d69bf80eb274b145bElliott Hughesbool WriteStringToFd(const std::string& content, int fd); 31d79801d60da1bd3d3e57f76c157f7e02d326243cElliott Hughes 32d79801d60da1bd3d3e57f76c157f7e02d326243cElliott Hughes#if !defined(_WIN32) 33202f024dee8a450b92b17b2a4b90d412879321bdElliott Hughesbool WriteStringToFile(const std::string& content, const std::string& path, 34202f024dee8a450b92b17b2a4b90d412879321bdElliott Hughes mode_t mode, uid_t owner, gid_t group); 35d79801d60da1bd3d3e57f76c157f7e02d326243cElliott Hughes#endif 36dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes 3756085edbf8c74a3a123f08e44be6e8f294deb465Elliott Hughesbool ReadFully(int fd, void* data, size_t byte_count); 3856085edbf8c74a3a123f08e44be6e8f294deb465Elliott Hughesbool WriteFully(int fd, const void* data, size_t byte_count); 3956085edbf8c74a3a123f08e44be6e8f294deb465Elliott Hughes 40c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert} // namespace base 41c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert} // namespace android 42dec12b2b71ec73483f9a2267ee5717d7eb0cdf6dElliott Hughes 43c007bc3856a4cf86b8f610eb045f26a9dedc2894Dan Albert#endif // BASE_FILE_H 44